Sebuah peer VPN mem-ping antarmuka lain karena alamatnya lokal
Tabel routing lokal mengirim paket ke setiap alamat yang dimiliki host, di antarmuka mana pun alamat itu berada. Pengaturan penerusan tidak pernah masuk ke jalur itu.
Sebuah klien WireGuard terhubung dan mem-ping alamat di antarmuka yang sama sekali berbeda, dan balasannya datang. Rekaman menunjukkan permintaan hanya di terowongan. Tidak ada yang rusak, dan pengaturan penerusan yang dengan hati-hati dinonaktifkan tidak ada hubungannya. Ini adalah perbandingan antara dua jalur yang terlihat mirip dalam diagram dan sama sekali berbeda di kernel.
Satu jalur meneruskan paket untuk orang lain; jalur lainnya mengantarkannya ke host itu sendiri.
Paket yang dialamatkan ke host tetap di host
Klien jarak jauh mengirim paket IP ke alamat yang dimiliki host. Routing mengajukan satu pertanyaan tentang paket itu: apakah tujuan ini lokal? Setiap alamat yang dipegang host muncul di tabel routing lokal, dan tabel itu dikonsultasikan sebelum tabel utama, sehingga paket masuk ke tumpukan host sendiri alih-alih keluar melalui antarmuka lain. Balasannya dibuat secara lokal, dan balik melalui terowongan karena dari sanalah kueri berasal.
Itulah seluruh mekanismenya. Tidak ada penerusan yang terjadi, tidak ada perubahan status antarmuka yang terlibat, dan alamat yang dimaksud tidak perlu dapat dijangkau dari mana pun.
Mengapa ip_forward tidak berlaku
Penerusan mengatur paket yang harus keluar melalui antarmuka berbeda dari tempat paket itu masuk. Ping ke host itu sendiri tidak pernah mengambil jalur itu: paket dikonsumsi secara lokal dan balasannya dibuat secara lokal. Karena itu menyetel net.ipv4.ip_forward=0 tidak mengubah apa pun di sini, dan aturan di rantai penerusan tidak pernah melihat lalu lintas itu. Kontrol yang benar berada di jalur masukan, dibatasi oleh antarmuka masuk atau sumber.
Itulah sebabnya menonaktifkan penerusan dan menganggap host terisolasi menghasilkan rasa aman yang palsu.
Baca tabel lokal yang memutuskan
ip rule show biasanya melaporkan aturan dengan prioritas nol yang mengirim semua pencarian ke tabel lokal terlebih dahulu, dan ip route show table local mencantumkan alamat milik host sendiri dengan cakupan lokal. Tabel itu mencakup alamat pada antarmuka yang dimatikan secara administratif tetapi masih dikonfigurasi. Alamat IPv4 yang ditetapkan secara statis biasanya bertahan saat tautan putus, dan itulah sebabnya ping ke jembatan yang mati masih bisa berhasil dan mengejutkan operator.
IPv6 berbeda tepat pada titik ini. Alamatnya biasanya ditarik saat tautan putus, kecuali keep_addr_on_down disetel. Bandingkan keluarganya alih-alih menganggap satu aturan mencakup keduanya.
Apa yang sebenarnya dijangkau peer
Jawaban dari alamat router sendiri di sebuah segmen tidak mengatakan apa pun tentang mesin di balik segmen itu. Peer tidak dapat menjangkau host di balik antarmuka lain melalui jalur ini; ia hanya menjangkau alamat yang dimiliki router sendiri. Menguji layanan pada host LAN terpisah, alih-alih mem-ping alamat router, adalah yang menetapkan apakah penerusan diizinkan sama sekali.
Membatasi peer ke layanan yang terikat pada alamat terowongan adalah pertanyaan kebijakan masukan. Izinkan layanan yang diinginkan pada antarmuka terowongan dan batasi sumber yang boleh memakainya, karena paket itu benar-benar tiba di sana.
Periksa juga alamat yang ingin Anda pensiunkan. Menghapus alamat dari antarmuka lebih andal daripada menumpuk aturan firewall di atas alamat lama.