Mengapa peraturan sekatan klien OpenVPN tidak pernah sampai ke FORWARD
Trafik klien-ke-klien boleh kekal di dalam proses OpenVPN dan tidak pernah melintasi rantaian FORWARD hos, jadi kaunter sifar tidak membuktikan apa-apa.
Dua klien pada pelayan OpenVPN yang sama boleh saling mencapai walaupun anda telah menambah peraturan DROP untuk kumpulan alamat mereka. Peraturan itu terletak dalam rantaian FORWARD, trafik jelas mengalir, tetapi kaunter peraturan itu kekal sifar. Kesimpulan semula jadi ialah tembok api rosak. Lebih kerap paket itu tidak pernah masuk ke rantaian langsung.
Terdapat dua laluan yang boleh dilalui paket rakan melalui pelayan OpenVPN, dan ia ditentukan oleh konfigurasi, bukan oleh tembok api. Mengetahui laluan mana yang digunakan memberitahu anda sama ada peraturan hos berada di tempat yang betul.
Dua laluan yang boleh dilalui paket rakan
Apabila pilihan penghantaran dalaman dimatikan, paket daripada klien A tiba di antara muka terowong dengan destinasi di dalam alamat yang diberikan kepada klien B. Jadual penghalaan pelayan menghantarnya kembali melalui antara muka terowong yang sama, kerana pelayan memiliki laluan ke alamat B. Ini ialah aliran masuk-dan-keluar melalui hos, dan laluan penghantaran IPv4 menilainya.
Apabila pilihan penghantaran dalaman dihidupkan, proses pelayan memadankan paket dengan klien yang bersambung dan menulisnya kembali terus kepada klien itu. Paket dikendalikan di dalam daemon dan tidak pernah masuk semula ke peranti terowong, jadi laluan penghantaran hos dilangkau sepenuhnya. Manual OpenVPN 2.6 menerangkan pilihan ini sebagai penghantaran dalaman klien-ke-klien, dan itulah sebabnya peraturan tembok api hos tidak dapat melihatnya.
Terdapat varian ketiga dalam penggunaan yang memindahkan saluran data ke modul kernel. Keputusan penghantaran dan penyulitan keluar dari ruang pengguna, dan sama ada netfilter melihat aliran itu bergantung pada cara laluan pemindahan dibina. Jangan sekali-kali menganggap set peraturan lama berkelakuan pada pelayan yang dipindahkan sama seperti pada pelayan ruang pengguna. Sahkan mod daripada konfigurasi yang berjalan, bukan daripada versi pakej.
Apabila kaunter tidak pernah bergerak
Kaunter sifar bermakna paket tidak sepadan dengan peraturan itu pada titik tersebut, dan terdapat beberapa sebab. Yang pertama ialah lencongan di atas: trafik tidak pernah sampai ke rantaian. Yang kedua ialah ketidakpadanan pada antara muka, arah, sumber atau destinasi, yang biasa berlaku apabila kumpulan alamat dinomborkan semula dan peraturan masih menamakan awalan lama.
Yang ketiga ialah kedudukan. Peraturan lebih awal dalam rantaian mungkin menerima aliran sebelum DROP anda dinilai, dan peraturan kemudian mungkin yang sebenarnya menentukan hasilnya. Baca rantaian mengikut urutan dengan kaunter kelihatan, kemudian periksa kaunter peraturan mana yang bertambah apabila anda mengulang ujian.
Lakukan satu pertukaran terkawal antara dua klien yang alamat sebenarnya telah anda sahkan daripada keadaan pelayan itu sendiri, bukan daripada pajakan yang anda ingat. Jika kaunter berkenaan masih tidak bergerak, syaki laluan itu sebelum menulis semula padanan. Jika ia bergerak tetapi sambungan masih berjaya, drop itu sedang ditindih kemudian dan masalahnya ialah urutan. Jawapan itu menentukan sama ada pembaikan itu perubahan peraturan atau perubahan topologi, jadi dapatkannya sebelum menyunting apa-apa.
Memilih sempadan yang boleh menapis
Jika dasar itu mesti tinggal dalam tembok api hos, letakkan trafik di tempat tembok api boleh melihatnya. Mematikan penghantaran dalaman ialah cara yang disokong untuk membuat trafik rakan melalui antara muka terowong dan laluan penghantaran, dengan kos setiap paket rakan melalui tindanan hos.
Kemudian padankan aliran dengan tepat. Trafik tiba di antara muka terowong dan keluar melalui antara muka terowong, dalam kedua-dua arah, jadi peraturan yang hanya mempertimbangkan antara muka fizikal tidak akan sepadan. Peraturan berasaskan alamat memerlukan kumpulan semasa, dan ia mesti mengambil kira arah balik sebagaimana arah hadapan.
Banyak penggunaan lebih baik dilayan dengan menapis pada peringkat klien atau kumpulan, di mana identiti diketahui dan dasar mengikut pengguna dan bukan alamat yang berubah semasa sambungan semula. Itu mekanisme yang berbeza daripada rantaian hos, dan kedua-duanya tidak sepatutnya dicampur tanpa sebab yang jelas.
Jangan bawa set peraturan topologi lama melalui migrasi tanpa perubahan. Kumpulan alamat, nama antara muka dan mod penghantaran semuanya mempengaruhi sama ada peraturan sepadan, dan peraturan salinan yang dahulunya berfungsi ialah jenis bukti yang paling mengelirukan. Mulakan dengan aliran yang anda mahu benarkan dan tulis peraturan yang sepadan dengannya.
Menguji pengasingan dan bukannya mempercayai peraturan
Uji kes terlarang dan kes yang dibenarkan dalam satu larian. Mulakan sambungan baharu daripada satu klien ke klien yang lain dan sahkan ia gagal, kemudian sahkan sambungan yang sepatutnya dibenarkan masih berfungsi. Jika hanya yang pertama diuji, tembok api yang menyekat semuanya kelihatan seperti kejayaan.
Ulang selepas memuat semula konfigurasi pelayan dan selepas klien bersambung semula, kerana penghantaran dalaman dan peruntukan kumpulan ialah keadaan masa jalan. Periksa kaunter dalam kedua-dua arah, kerana peraturan yang sepadan dengan satu arah tetapi tidak dengan balasannya menghasilkan pengasingan separa yang sukar disedari dalam ujian pantas.
Pengasingan ialah hasil yang diperhatikan pada sempadan yang benar-benar membawa aliran. Peraturan DROP di suatu tempat dalam hos bukan bukti; sambungan yang gagal bersama kaunter yang bergerak pada peraturan penyebabnya ialah bukti.