Klien di LAN menyelesaikan lewat terowongan dan pencarian router sendiri diam-diam tidak melakukannya. Pembaruan paket, sinkronisasi waktu, dan DNS dinamis semuanya keluar lewat uplink biasa sementara setiap kueri yang diteruskan mengambil VPN, dan tidak ada apa pun di antarmuka yang menunjukkan bahwa ada dua jalur berbeda. Penjelasannya bukan bug pada kebijakan melainkan soal kait mana yang melihat paket. Dua aliran, satu alamat resolver, dan hanya satu di antaranya melintasi router. Memisahkan keduanya adalah seluruh perbaikan.

Dua aliran, satu alamat resolver

Aliran pertama adalah yang dibayangkan orang. Klien bertanya ke resolver router, resolver meneruskan ke hulu, dan paket yang diteruskan itu melewati router saat keluar. Paket itu terlihat oleh apa pun yang mengawasi lalu lintas yang diteruskan.

Aliran kedua tidak pernah datang dari mana pun. Router yang membuatnya, jadi tidak ada paket masuk dan tidak ada langkah penerusan untuk dicocokkan.

Keduanya bisa menargetkan alamat resolver yang sama, dan justru karena itu perbedaannya mudah terlewat. Tujuan sama, asal berbeda, rantai berbeda. Begitu Anda melihat asalnya, sisa diagnosis mengikuti.

Paket yang diteruskan dan yang dibuat secara lokal masuk dengan cara berbeda

Lalu lintas yang diteruskan dievaluasi saat tiba dari antarmuka lain. Paket perutean kebijakan menampilkannya sebagai rantai prerouting, dan aturan yang ditempatkan di sana melihat setiap paket yang melintasi router. Itulah sebabnya pencarian klien berperilaku persis seperti yang dijelaskan kebijakan, dan itulah sebabnya router mengabaikannya. Aturannya tidak salah, ia hanya terpasang pada kait yang tidak pernah dicapai router. Pindahkan, dan kecocokan yang sama mulai bekerja.

Lalu lintas yang dibuat secara lokal dibuat oleh proses di router dan masuk ke jalur keluaran. Router diputuskan oleh keputusannya sendiri dan hanya bertemu kebijakan jika kebijakan mencakup rantai itu. Tidak ada antarmuka masuk untuk dicocokkan dan tidak ada keputusan penerusan untuk diamati.

Itu adalah sifat dari tempat paket dilahirkan, bukan sifat paket tertentu. Aturan yang ditulis untuk satu rantai sama sekali tidak punya pendapat tentang rantai lainnya. Tidak ada penyetelan aturan yang mengubahnya.

Pilih rantai keluaran, lalu sempitkan kecocokan

Perbaikannya adalah melampirkan niat yang sama ke rantai keluaran juga, atau memindahkan aturannya ke sana ketika kueri router sendirilah yang Anda pedulikan. Dalam penyiapan OpenWrt yang dibangun di atas paket perutean kebijakan, itu berarti memilih output alih-alih prerouting pada pengaturan rantai aturan. Pertahankan kedua aturan jika kedua populasi memerlukan cakupan.

Lalu sempitkan apa yang dicocokkan aturan. Alamat resolver tujuan pada port yang benar-benar dipakai resolver adalah keputusan yang jauh lebih kecil daripada mengirim semua yang dibuat router ke terowongan.

Pertahankan kedua aturan secara eksplisit alih-alih mencoba menulis satu aturan yang mencakup kedua rantai. Aturan terpisah lebih mudah dibaca, dan memungkinkan Anda menonaktifkan jalur router tanpa mengganggu lalu lintas klien saat melakukan debug. Aturan itu juga membuat penghitung menjadi bermakna satu per satu.

Jauhkan transportasi terowongan itu sendiri dari aturan

Koneksi luar terowongan juga dibuat oleh router. Aturan yang mengirim semua lalu lintas yang dibuat secara lokal ke terowongan akan merutekan terowongan melalui dirinya sendiri, dan terowongan itu tidak akan naik sama sekali.

Akses manajemen adalah korban kedua. Sesi administratif yang berasal dari router, atau balasan untuknya, dapat ditarik ke terowongan oleh aturan lokal yang terlalu luas dan menjadi tidak terjangkau dari LAN.

Kecualikan titik akhir terowongan dari kecocokan, dan jaga aturan tetap terbatas pada alamat resolver. Itu cukup untuk kebutuhan DNS dan cukup kecil untuk dipikirkan.

Uji kedua populasi, bukan satu

Amati router membuat kuerinya sendiri dan catat antarmuka mana yang membawanya. Ulangi pencarian dari host LAN dan catat jalur yang diambilnya. Penghitung pada aturan kebijakan membuat kedua jawaban terlihat tanpa menduga.

Perlakukan hasilnya sebagai dua temuan. Klien yang menyelesaikan lewat terowongan tidak mengatakan apa pun tentang router, dan router yang menyelesaikan dengan benar tidak mengatakan apa pun tentang klien di pendengar lain. Tuliskan sebagai baris terpisah dalam catatan perubahan.

Periksa juga portnya: aturan yang mencocokkan port tujuan 53 melewatkan resolver yang dijangkau melalui DNS over TLS pada 853 atau titik akhir HTTPS. Cocokkan transportasi yang benar-benar dipakai upstream yang dikonfigurasi, dan kebocoran menutup karena alasan yang benar.

Artikel terkait