Laluan VPN atau peraturan firewall: yang mana menjatuhkan paket?
Laluan memilih jalan dan penapis memutuskan kebenaran. Semak kedua-duanya untuk sumber, destinasi dan arah yang sama sebelum meluaskan peraturan firewall.
Dua keputusan bebas berlaku pada paket yang sama, dan mana-mana satu boleh menamatkan permintaan secara senyap. Carian laluan memilih antara muka dan hop seterusnya, kemudian penapis paket memutuskan sama ada gabungan itu dibenarkan. Tamat masa memberitahu anda bahawa salah satu daripada dua menolak, bukan yang mana. Lalui peringkat mengikut urutan dan pembaikan biasanya berhenti menjadi tekaan.
Dua keputusan, satu paket, dua pemilik
Carian laluan merujuk peraturan dasar dahulu, kemudian jadual yang ditujunya, dan memilih awalan paling khusus yang sepadan dengan destinasi. Klien yang memasang laluan terowong memiliki keputusan itu, dan tiada apa dalam peraturan firewall boleh menggantikannya. Apabila carian menunjuk ke tempat yang tidak dijangka, setiap peringkat seterusnya bekerja pada paket yang salah.
Penapisan adalah berasingan. Pada hos Linux, cangkuk netfilter membahagikan trafik mengikut untuk siapa paket itu: output meninggalkan mesin, input tamat padanya, hadapan melaluinya. Get laluan yang menerima klien VPN dan menghalakan mereka ke LAN memerlukan laluan hadapan, dan itulah rantaian yang kebanyakan konfigurasi lalai biarkan kosong.
Pemilihan sumber tergolong dalam keputusan yang sama, dan di situlah kebanyakan ketidakpadanan tersembunyi. Kernel memilih alamat sumber daripada antara muka keluar melainkan laluan menamakan satu, jadi peraturan penapis yang ditulis untuk subrangkaian LAN tidak pernah sepadan dengan paket yang keluar dengan alamat terowong.
Baca apa yang sebenarnya dipilih oleh carian
Cetak keputusan itu daripada membuat kesimpulan. Perintah di bawah menyelesaikan laluan yang kernel akan gunakan untuk destinasi itu, termasuk antara muka 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 peraturan dasar pada keutamaan di bawah jadual utama, jadi jadual utama yang bersih tidak membuktikan apa-apa dengan sendirinya. Bandingkan keutamaan peraturan dengan jadual yang dipilihnya, dan semak sama ada laluan terowong bertahan selepas sambungan semula dan bukannya ditambah secara manual sekali.
IPsec berasaskan dasar menambah peringkat padanan ketiga yang tidak diliputi penghalakan, seperti yang diterangkan nota penghantaran strongSwan untuk persediaan terowong dan pengangkutan. Dasar keselamatan memilih trafik mengikut awalan dan protokol, manakala laluan hanya memutuskan ke mana paket tidak dilindungi akan pergi. Subrangkaian yang dihalakan tetapi tiada pemilih yang sepadan sama ada kekal tidak dilindungi atau dibuang, bergantung pada konfigurasi, dan tiada satu pun hasil itu kelihatan seperti masalah firewall. Cetak dasar itu dan bandingkan pemilihnya dengan awalan yang anda jangkakan terowong akan bawa.
Penapisan terpakai pada cangkuk, bukan pada laluan
Peraturan yang membenarkan pendengar VPN ialah peraturan tentang trafik yang dialamatkan kepada get itu sendiri. Ia tidak mengatakan apa-apa tentang klien yang mencapai hos di belakang get itu, kerana trafik yang dihalakan melalui rantaian yang berbeza. Membaca set peraturan sebagai satu senarai rata ialah sebab biasa mengapa peraturan yang kelihatan betul tidak pernah tercetus.
Pengira menyelesaikan soalan dengan cepat. Peraturan dengan kiraan paket sifar tidak pernah dicapai, yang menunjukkan rantaian salah, antara muka salah atau buangan terdahulu. Peraturan dengan kiraan yang meningkat di bawah dasar buang ialah sempadan yang anda cari, dan paket itu dibuang dan bukan dihalakan secara salah.
Hantar prob melalui laluan yang digunakan klien
Ujian yang dijalankan pada get itu sendiri melalui output dan input, dengan alamat sumber get itu sendiri. Itu laluan berbeza daripada permintaan yang dihalakan oleh klien, jadi curl tempatan yang berjaya membuktikan lebih sedikit daripada yang kelihatan. Uji dari mesin yang gagal, atau pin antara muka 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 pada kedua-dua hujung memisahkan kes yang tinggal. SYN yang meninggalkan klien dan tidak pernah tiba bermaksud penghalakan, penyulitan atau senarai akses huluan. SYN yang tiba dan tidak mendapat balasan bermaksud perkhidmatan atau penapis hosnya, dan terowong itu tidak pernah menjadi masalah.
Trafik balik wajar mendapat pandangan sendiri. Penghalakan asimetri serta penapisan laluan songsang membuang balasan yang tiba pada antara muka yang salah, yang muncul sebagai sambungan sehala dan bukannya port yang disekat. Semak nilai sysctl sebelum menyalahkan firewall atas gejala yang tidak disebabkannya.
Pengelogan berfungsi sebagai pendapat kedua, bukan langkah pertama. Pernyataan log sementara pada rantaian hadapan menamakan antara muka dan alamat yang mengenainya, dan mudah dialihkan kemudian. Biarkan kekal dan anda telah membina masalah volum log dan bukannya jawapan.
Letakkan setiap perubahan di tempat yang bertahan selepas sambungan semula
Laluan yang ditambah dengan ip route add hidup sehingga antara muka turun. Simpan dalam profil sambungan sebaliknya: NetworkManager menerima laluan tambahan pada sambungan, dan netplan menyimpannya antara but. Peraturan yang sama terpakai pada pengecualian firewall sebelah klien, yang hilang selepas pemuatan semula seterusnya.
Peraturan sebelah pelayan tergolong dalam fail konfigurasi yang dimuatkan perkhidmatan semasa mula, bukan dalam sesi interaktif yang tamat apabila anda menutupnya. Tulis peraturan itu, muat semula dan sahkan pengira bergerak, kerana pemuatan semula yang menolak sintaks secara senyap meninggalkan set peraturan lama di tempatnya.
Kemudian ulangi permintaan aplikasi asal dari awal hingga akhir dan catat lapisan mana yang berubah. Pembaikan laluan yang juga memerlukan perubahan penapis tetap akan gagal, dan kegagalan kedua lebih mudah dibaca setelah anda tahu yang pertama telah hilang. Catat tarikh dan versi klien di sebelah hasil, kerana lalai penghalakan dan penapisan kedua-duanya bergerak antara keluaran. Simpan nota itu pada tiket supaya orang seterusnya bermula di tempat anda berhenti dan bukannya mengulangi perjalanan dua peringkat.