Kenapa Koneksi Samba Gagal?
Sebuah pengalaman yang akhirnya menjelaskan masalah yang lama mengganggu.
Bagian 1: Masalah yang Menyeramkan
Saya menggunakan NanoPC-T4 berbasis RK3399 dari FriendlyArm/FriendlyElec untuk menjalankan layanan Linux seperti server web staging, host printer jaringan, dan Samba File Server.
Namun, ketika mencoba mengambil file besar dari Samba, Windows seringkali hang dan transfer tidak bisa dibatalkan kecuali Samba di-restart secara manual.
Yang membingungkan, masalah ini muncul setelah beralih dari Lubuntu lama bawaan pabrik ke Armbian yang lebih baru. Dengan Lubuntu, Samba stabil, tapi dengan Armbian, transfer gagal total.
Saya sempat menganggap ini bug Samba/arch64 baru dan meninggalkannya, karena log Samba tidak menunjukkan masalah apa pun, dan Windows pun tidak memberi petunjuk.
Bagian 2: Cahaya di Ujung Terowongan
Dalam eksperimen firmware UEFI Raspberry Pi 4, saya menggunakan server yang sama untuk menguji UEFI HTTP boot file ISO besar (900 MB). Transfer dari Apache juga gagal, menampilkan pesan TCP checksum error:
TcpInput: received a checksum error packet
TcpInput: Discard a packet
HttpTcpReceiveNotifyDpc: Aborted!
Error: Server response timeout.
Sementara itu, jika konten sama disajikan menggunakan Python HTTP server (python3 -m http.server 80), transfer relatif stabil, meski ada beberapa checksum error. Ini menunjukkan kemungkinan masalah jaringan yang lebih kompleks, dan terkait dengan isu Samba sebelumnya.
Solusi yang Ditemukan
Langkah pertama adalah memastikan bukan masalah hardware: ganti kabel, ganti switch, dsb. Setelah itu, cek error TCP dengan:
tcpdump -i eth0 -vvv tcp | grep incorrect
Jika banyak checksum error muncul, kemungkinan besar network adapter melakukan offloading yang menyebabkan masalah. Solusinya:
ethtool -K eth0 rx off tx off
Perintah di atas menonaktifkan offloading untuk penerimaan dan pengiriman paket, yang biasanya menyelesaikan masalah transfer file besar di Samba.
Kesimpulan
Masalah Samba yang gagal transfer file besar sering kali bukan bug Samba, tapi akibat checksum error TCP yang disebabkan oleh offloading network adapter. Mematikan offloading biasanya menyelesaikan masalah.
Label: linux, networking, RK3399, Samba
<< Beranda