Rute VPN atau aturan firewall: mana yang menjatuhkan paket?
Rute memilih jalur dan filter memutuskan izin. Periksa keduanya untuk sumber, tujuan, dan arah yang sama sebelum memperluas aturan firewall.
Dua keputusan independen terjadi pada paket yang sama, dan salah satunya bisa mengakhiri permintaan secara diam-diam. Pencarian rute memilih antarmuka dan hop berikutnya, lalu filter paket memutuskan apakah kombinasi itu diizinkan. Waktu habis memberi tahu Anda bahwa salah satu dari keduanya menolak, bukan yang mana. Kerjakan tahapannya secara berurutan dan perbaikan biasanya berhenti menjadi tebakan.
Dua keputusan, satu paket, dua pemilik
Pencarian rute terlebih dahulu memeriksa aturan kebijakan, lalu tabel yang dituju, dan memilih prefiks paling spesifik yang cocok dengan tujuan. Klien yang memasang rute terowongan memiliki keputusan itu, dan tidak ada aturan firewall yang bisa menggantikannya. Saat pencarian menunjuk ke tempat tak terduga, setiap tahap berikutnya bekerja pada paket yang salah.
Penyaringan terpisah. Di host Linux, kait netfilter membagi lalu lintas menurut untuk siapa paket itu: keluaran meninggalkan mesin, masukan berakhir di sana, penerusan melewatinya. Gateway yang menerima klien VPN dan merutekannya ke LAN membutuhkan jalur penerusan, dan itulah rantai yang paling sering dibiarkan kosong oleh konfigurasi bawaan.
Pemilihan sumber termasuk dalam keputusan yang sama, dan di situlah sebagian besar ketidakcocokan bersembunyi. Kernel memilih alamat sumber dari antarmuka keluar kecuali rute menyebutkan satu, jadi aturan filter yang ditulis untuk subnet LAN tidak pernah cocok dengan paket yang keluar dengan alamat terowongan.
Baca apa yang sebenarnya dipilih pencarian
Cetak keputusannya alih-alih menyimpulkannya. Perintah di bawah ini menyelesaikan rute yang akan digunakan kernel untuk tujuan itu, termasuk antarmuka dan sumber yang akan dipilihnya:
ip route get 10.8.0.5 ip route get 10.8.0.5 from 192.0.2.44 ip rule show ip route show table all | sed -n '1,40p'
Klien VPN sering memasang aturan kebijakan pada prioritas di bawah tabel utama, jadi tabel utama yang bersih tidak membuktikan apa pun dengan sendirinya. Bandingkan prioritas aturan dengan tabel yang dipilihnya, dan periksa apakah rute terowongan bertahan setelah koneksi ulang alih-alih ditambahkan secara manual sekali.
IPsec berbasis kebijakan menambahkan tahap pencocokan ketiga yang tidak dicakup perutean, seperti yang dijelaskan catatan penerusan strongSwan untuk penyiapan terowongan dan transportasi. Kebijakan keamanan memilih lalu lintas berdasarkan prefiks dan protokol, sedangkan rute hanya menentukan ke mana paket yang tidak terlindungi akan pergi. Subnet yang dirutekan tetapi tidak memiliki pemilih yang cocok akan tetap tidak terlindungi atau dibuang, tergantung konfigurasi, dan tidak ada hasil yang terlihat seperti masalah firewall. Cetak kebijakan dan bandingkan pemilihnya dengan prefiks yang Anda perkirakan akan dibawa terowongan.
Penyaringan berlaku pada kait, bukan pada rute
Aturan yang mengizinkan pendengar VPN adalah aturan tentang lalu lintas yang dialamatkan ke gateway itu sendiri. Ia tidak mengatakan apa pun tentang klien yang menjangkau host di belakang gateway itu, karena lalu lintas yang diteruskan melewati rantai yang berbeda. Membaca kumpulan aturan sebagai satu daftar datar adalah alasan biasa mengapa aturan yang tampak benar tidak pernah aktif.
Penghitung menjawab pertanyaan dengan cepat. Aturan dengan hitungan paket nol tidak pernah tercapai, yang menunjuk ke rantai salah, antarmuka salah, atau pembuangan sebelumnya. Aturan dengan hitungan bertambah di bawah kebijakan buang adalah batas yang Anda cari, dan paket dibuang, bukan salah dirutekan.
Kirim probe melalui jalur yang digunakan klien
Pengujian yang dijalankan di gateway itu sendiri melewati keluaran dan masukan, dengan alamat sumber gateway sendiri. Itu jalur yang berbeda dari permintaan klien yang diteruskan, jadi curl lokal yang berhasil membuktikan lebih sedikit daripada yang terlihat. Uji dari mesin yang gagal, atau sematkan antarmuka dan sumber secara eksplisit.
nc -vz -w 3 10.8.0.5 443 ping -c 3 -W 1 10.8.0.5 tcpdump -ni any host 10.8.0.5 and port 443 iptables -vnL FORWARD --line-numbers nft list ruleset | sed -n '1,60p'
Tangkapan di kedua ujung memisahkan kasus yang tersisa. SYN yang meninggalkan klien dan tidak pernah tiba berarti perutean, enkripsi, atau daftar akses di hulu. SYN yang tiba dan tidak mendapat balasan berarti layanan atau filter host-nya, dan terowongan tidak pernah menjadi masalah.
Lalu lintas balik layak mendapat pandangan sendiri. Perutean asimetris plus penyaringan jalur balik membuang balasan yang tiba di antarmuka yang salah, yang muncul sebagai koneksi satu arah alih-alih port yang diblokir. Periksa nilai sysctl sebelum menyalahkan firewall atas gejala yang tidak disebabkannya.
Pencatatan log berfungsi sebagai pendapat kedua, bukan langkah pertama. Pernyataan log sementara pada rantai penerusan menyebutkan antarmuka dan alamat yang mengenainya, dan mudah dihapus sesudahnya. Jika dibiarkan permanen, Anda telah membangun masalah volume log alih-alih jawaban.
Tempatkan setiap perubahan di tempat yang bertahan setelah koneksi ulang
Rute yang ditambahkan dengan ip route add hidup sampai antarmuka turun. Simpan di profil koneksi sebagai gantinya: NetworkManager menerima rute tambahan pada koneksi, dan netplan menyimpannya di antara boot. Aturan yang sama berlaku untuk pengecualian firewall sisi klien, yang hilang setelah pemuatan ulang berikutnya.
Aturan sisi server termasuk dalam file konfigurasi yang dimuat layanan saat mulai, bukan dalam sesi interaktif yang berakhir saat Anda menutupnya. Tulis aturannya, muat ulang, dan pastikan penghitungnya bergerak, karena pemuatan ulang yang menolak sintaksis diam-diam meninggalkan kumpulan aturan lama di tempatnya.
Lalu ulangi permintaan aplikasi asli dari awal sampai akhir dan catat lapisan mana yang berubah. Perbaikan rute yang juga membutuhkan perubahan filter tetap akan gagal, dan kegagalan kedua jauh lebih mudah dibaca setelah Anda tahu yang pertama sudah hilang. Catat tanggal dan versi klien di samping hasil, karena default perutean dan penyaringan keduanya bergerak antar rilis. Simpan catatan itu di tiket agar orang berikutnya mulai dari tempat Anda berhenti alih-alih mengulangi perjalanan dua tahap.