Sebuah komputer riba berada di /24 pejabat melalui Ethernet dan juga menyertai pelayan OpenVPN yang tinggal di /24 yang sama. Seorang rakan sekerja melakukan ping ke alamat terowong; permintaan jelas tiba, dan tiada apa yang kembali. Log terowong bersih dan pelayaran masih berfungsi, jadi terowong ialah suspek yang salah. Pengesahan sumber IPv4 pada mesin penerima membuang paket sebelum apa-apa membacanya.

Pembuangan berlaku sebelum apa-apa membaca paket

Pengesahan sumber mengemukakan satu soalan tentang setiap paket masuk: jika hos ini menjawab sumber itu, adakah jawapannya akan keluar melalui antara muka tempat paket itu baru tiba? Apabila jawapannya tidak, kernel membuang paket itu semasa ketibaan. Tiada soket dan tiada laluan penghantaran pernah melihatnya, sebab itu tangkapan pada terowong masih merekodkan permintaan yang tidak pernah diterima aplikasi.

Klien di sini memegang 10.66.0.9 pada terowongnya, dan pelayan OpenVPN menjawab di 192.168.80.10 dalam awalan pejabat. Rakan sekerja di 192.168.80.25 melakukan ping ke alamat terowong, jadi permintaan melintasi LAN, pelayan menyalurkannya ke terowong, dan ia tiba di antara muka terowong klien dengan membawa alamat sumber pejabat. Dalam jadual penghalaan mesin itu, awalan pejabat milik peranti Ethernet, bukan terowong. Pengesahan membandingkan antara muka ketibaan dengan laluan, menemui ketidakpadanan dan membuang paket, jadi rakan sekerja melihat kehilangan sepenuhnya sementara kedua-dua hujung melaporkan terowong yang sihat.

Arah cermin mempunyai bentuk yang sama: apabila klien memulakan ke arah pejabat, balasan boleh dibuang di sisi pejabat atas sebab yang sama. Pembaikan yang disahkan hanya dalam satu arah biasanya kembali sebagai tiket kedua.

Buktikan mod yang berkuat kuasa sebelum menyentuh mana-mana sysctl

Baca nilai berkesan dan bukannya mempercayai lalai pengedaran, kerana tetapan setiap antara muka hanyalah separuh keputusan. Mod yang berkuat kuasa ialah yang lebih tinggi antara nilai antara muka dan nilai all, jadi sifar pada antara muka terowong tidak bermakna apa-apa selagi all ialah satu. Keputusan mod ketat ialah keputusan penghalaan, jadi jalankan carian yang dijalankan kernel dan bandingkan jawapannya dengan antara muka tempat paket benar-benar tiba.

tcpdump -ni tun0 icmp and host 192.168.80.25
ip route get 192.168.80.25
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.tun0.rp_filter

Kemudian ulangi ping sambil memerhati pembilang ralat. Angka yang naik di sebelah permintaan yang sudah ditunjukkan tangkapan ialah tandatangan pembuangan ini, bukan laluan yang hilang. Hidupkan pengelogan paket Marikh semasa anda di sana, supaya kernel menamakan sumber dan antara muka yang ditolaknya. Bersama-sama keduanya menyingkirkan penyulitan, tembok api dan iroute yang hilang sebagai penjelasan.

Tulis garis dasar sebelum mengubah apa-apa: kedua-dua nilai, peranti yang dipilih carian, dan pembilang yang anda perhatikan. Rekod itulah yang kemudian memberitahu anda sama ada perubahan itu melakukan apa yang anda fikirkan.

Apa yang sebenarnya diterima oleh setiap mod rp_filter

Kernel mendedahkan tiga nilai bagi setiap antara muka, dan ia bukan tiga nuansa satu peraturan. Sifar mematikan pemeriksaan. Satu adalah ketat dan menuntut sumber dihalakan semula keluar melalui antara muka ketibaan. Dua adalah longgar dan hanya menuntut wujudnya beberapa laluan ke sumber dalam jadual, ke mana pun ia menunjuk.

ValueNameAcceptsStill rejects
0offany source at allnothing on this check
1stricta source routed back out the arrival interfacea source whose route points elsewhere
2loosea source with any route in the tablea source with no route at all

Baris yang penting di sini ialah yang longgar, dan apa yang terus ditolaknya. Sumber palsu yang boleh dihalakan di mana-mana dalam jadual anda lulus, manakala sumber tanpa sebarang laluan masih ditolak. Pada komputer riba itu satu konsesi sempit; pada penghala yang menghantar trafik orang lain ia lebar. Mod itu milik hos, jadi nombor yang sama membawa berat berbeza di dua tempat.

Baris mana yang diperlukan topologi ini datang daripada jadual, bukan kebiasaan. Paket itu sah dan sumbernya boleh dihalakan, jadi yang longgar menerimanya dan yang ketat tidak. Tiada apa dalam kes ini menuntut sifar, dan memilih sifar akan membuang pemeriksaan yang di sini tidak berbelanja apa-apa.

Pilih perubahan terkecil yang menghapuskan kekaburan

Mod longgar ialah perubahan terkecil yang sesuai, dan ia pengurangan ketegasan yang sebenar, bukan suis yang tidak berbahaya. Pilihan yang lebih baik ada setiap kali topologi membenarkannya: hapuskan pertindihan, dan kekaburan hilang.

Di mana awalan pejabat hanya diperlukan melalui Ethernet, keluarkan ia daripada laluan yang ditarik profil dan alamatnya menjadi boleh dicapai melalui satu laluan. Apabila kedua-dua laluan benar-benar mesti wujud bersama, pin sumber dan peranti dengan peraturan dasar dan bukannya melonggarkan pengesahan pada setiap antara muka. Itu mengekalkan penapisan ketat untuk segala-galanya di mesin dan mendokumenkan pengecualian di tempat jurutera seterusnya akan mencarinya.

Laluan mana pun yang anda pilih, rakamkannya dalam sysctl drop-in dan bukan dalam arahan hidup. Tetapkan kunci all dan default bersama-sama, supaya penyambungan semula tidak boleh memulihkan mod ketat secara senyap.

# /etc/sysctl.d/99-rp-filter.conf
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
sysctl --system

Apa yang dilepaskan oleh mod longgar, dan di mana

Mod longgar masih menolak sumber yang tidak dapat dicapai mana-mana laluan, dan berhenti menolak sumber palsu yang kebetulan boleh dihalakan. Pada komputer riba itu satu konsesi sempit. Pada peranti yang menghantar trafik yang bukan miliknya, pilihan yang sama jauh lebih lebar. Sebab itu tetapan yang sama membawa dua makna yang sangat berbeza bergantung pada tempat ia berjalan.

Mematikan pemeriksaan sepenuhnya pada hos yang menghantar trafik untuk orang lain ialah satu-satunya pembaikan yang perlu dielakkan. Sifar membuang pengesahan yang dipelihara dengan teliti oleh mod longgar. Jika hos menghantar untuk orang lain, pertahankan sebaliknya pilihan peraturan dasar daripada bahagian sebelumnya.

Tinggalkan nota yang menamakan kedua-dua antara muka, awalan yang bertindih dan ujian tepat yang kini berjaya. Itu lebih berguna kepada jurutera seterusnya daripada satu baris yang menyatakan penapisan telah dilaraskan.

Artikel berkaitan