OpenVPN terhubung tetapi tidak ada yang mengalir: temukan lapisan tempat paket hilang
Tunnel yang terhubung tanpa lalu lintas punya setidaknya lima penyebab. Buktikan pendengarnya, tangkap paket luar, lalu biarkan penghitung atau jejak menamai aturannya.
OpenVPN mengatakan terhubung dan tidak ada lalu lintas yang bergerak, kalimat yang mencakup setidaknya lima gangguan yang tidak saling terkait. Mengedit aturan firewall sebelum tahu lapisan mana yang gagal menggandakan hal yang tidak diketahui dan meninggalkan kekacauan bagi insinyur berikutnya. Bekerjalah dari proses ke luar sebagai gantinya, karena setiap langkah di bawah ini entah membersihkan satu tahap atau mempersempit tempat paket mati. Urutan penting di sini: rekaman yang diambil sebelum Anda tahu alamat mana yang terikat akan membuktikan sesuatu, hanya bukan yang Anda butuhkan.
Soketnya terikat atau tidak
Layanan yang melaporkan aktif masih bisa terikat ke alamat atau transportasi yang tidak pernah Anda maksudkan. Tanyakan soketnya sendiri: ss -lunp mendaftar pendengar UDP dan ss -ltnp mendaftar TCP, dan kolom yang layak dibaca adalah alamat lokal, bukan statusnya.
Jawaban kosong biasanya berarti salah satu dari tiga hal: proses keluar setelah mulai, memuat berkas konfigurasi lain, atau mendengarkan di alamat yang berbeda dari yang dihubungi.
ss -lunp | grep 1194
ss -ltnp | grep 1194
Arahan local memaku pendengar ke satu alamat, sehingga klien yang diarahkan ke tempat lain di host yang sama ditolak sementara layanan dari luar masih tampak sehat. Nama instans juga bisa menunjuk ke berkas yang tidak pernah Anda edit, yang terjadi pada host yang menjalankan dua profil berdampingan.
Tangkap paket luar, bukan tunnel
Saring pada antarmuka fisik dan port sebenarnya, dengan antarmuka Anda sendiri diganti: tcpdump -ni eth0 udp port 1194. Paket keluar tanpa apa pun yang kembali menunjuk ke apa yang duduk di hulu: penyaringan penyedia, perangkat NAT, atau alamat jauh yang bukan yang Anda pikirkan. Keheningan di kedua arah menunjuk ke perutean klien atau firewall lokal. Balasan yang tiba tanpa kemajuan tunnel menunjuk ke kanal kendali, artinya ketidakcocokan kunci atau sandi, bukan penyaringan.
Tangkap kedua arah dan jaga berkas tetap pendek. Rekaman panjang mengubur tiga detik yang menarik, dan jawabannya hampir selalu ada di pertukaran pertama.
Penghitung dulu, jejak hanya ketika mereka berbohong
Mulai dari penghitung, karena tidak memakan biaya. Entah nft list ruleset atau iptables -L -n -v menjawab satu-satunya pertanyaan yang penting di sini: apakah aturannya cocok? Urutan menentukan hasil, karena kecocokan pertama menang, itulah sebabnya DROP lebar sebelum ACCEPT yang lebih lambat membuat ACCEPT itu mati dan itulah sebabnya menambahkan aturan begitu jarang memperbaiki apa pun.
Kepemilikan juga membuat orang tersandung. Kernel menghubungkan paket yang dihasilkan secara lokal ke proses yang membuka soket, dan OpenVPN biasanya berjalan sebagai root, jadi aturan yang dikunci ke ID pengguna biasa tidak pernah melihat lalu lintas tunnel itu sendiri. Periksa UID pemilik sebelum memutuskan bahwa aturannya salah.
Hanya ketika penghitung tetap ambigu sebuah log layak menimbulkan kebisingan, dan itupun hanya untuk irisan sempit: aturan iptables yang membatasi laju dan memberi awalan pada baris lognya, atau aturan nftables yang membawa meta nftrace set 1 sementara nft monitor trace berjalan. Jejak menamai rantai dan aturan yang menerima atau menjatuhkan paket. Hapus keduanya setelah itu dan jauhkan pencatatan muatan.
Periksa transportasinya juga. Layanan firewall yang dibatasi ke TCP tidak mengatakan apa pun tentang pendengar UDP pada nomor itu, jadi aturan yang terbaca benar masih bisa menjatuhkan setiap paket.
Perutean dan jalan kembali
Paket yang diterima tetapi masih menghilang perlu diperiksa jalur tujuannya. ip route get melaporkan rute yang dipilih untuk satu alamat, dan penyaringan jalur balik dapat menjatuhkan balasan yang tiba melalui antarmuka yang tidak akan pernah dipilih tabel utama. Gejalanya tampak persis seperti penjatuhan firewall, itulah sebabnya pemeriksaan ini datang sebelum aturan NAT lain.
Di gateway, periksa penerusan dan rantai forward alih-alih rantai input. Lalu pastikan sisi jauh tahu cara mencapai alamat sumber, karena jalur keluar yang berfungsi tanpa apa pun yang kembali adalah keheningan dalam kedua kasus.
Apa yang harus dikatakan catatan
Untuk setiap perubahan, catat tahap yang Anda uji, bukti yang Anda baca, dan nilai penghitung di kedua sisinya. Catatan itulah yang membuat "sekarang berfungsi" bertahan pada tinjauan berikutnya.
Dua jalan pintas menjaga catatan tetap jujur. Paket yang tidak pernah meninggalkan host tidak mungkin dijatuhkan oleh aturan di tempat lain, seberapa pun meyakinkan konfigurasi sisi jauh terlihat. Paket yang pergi dan kembali memindahkan pertanyaan di atas lapisan jaringan, di mana penghitung firewall tidak lagi punya apa pun untuk diberitahukan kepada Anda.