Penghalaan dasar OpenWrt: rantaian yang menangkap DNS setempat
Carian klien dan carian penghala sendiri masuk melalui cangkuk yang berbeza. Dasar yang menyasarkan prerouting membawa setiap pertanyaan LAN dan membiarkan penghala pada uplink ISP.
Klien di LAN menyelesaikan melalui terowong dan carian penghala sendiri diam-diam tidak berbuat demikian. Kemas kini pakej, penyegerakan masa dan DNS dinamik semuanya keluar melalui uplink biasa sementara setiap pertanyaan yang diteruskan mengambil VPN, dan tiada apa-apa dalam antara muka yang menunjukkan terdapat dua laluan berbeza. Penjelasannya bukan pepijat dalam dasar tetapi persoalan cangkuk mana yang melihat paket. Dua aliran, satu alamat penyelesai, dan hanya satu daripadanya melintasi penghala. Memisahkan keduanya ialah keseluruhan pembetulan.
Dua aliran, satu alamat penyelesai
Aliran pertama ialah yang dibayangkan orang. Klien bertanya kepada penyelesai penghala, penyelesai meneruskan ke hulu, dan paket yang diteruskan itu melalui penghala semasa keluar. Paket itu kelihatan kepada apa sahaja yang memerhati trafik yang diteruskan.
Aliran kedua tidak pernah tiba dari mana-mana. Penghala menciptanya, jadi tiada paket masuk dan tiada langkah penghantaran untuk dipadankan.
Kedua-duanya boleh menyasarkan alamat penyelesai yang sama, dan itulah sebabnya perbezaannya mudah terlepas pandang. Destinasi sama, asal berbeza, rantaian berbeza. Sebaik sahaja anda melihat asalnya, baki diagnosis menyusul.
Paket yang diteruskan dan yang dijana secara setempat masuk secara berbeza
Trafik yang diteruskan dinilai apabila ia tiba dari antara muka lain. Pakej penghalaan dasar mendedahkannya sebagai rantaian prerouting, dan peraturan yang diletakkan di situ melihat setiap paket yang melintasi penghala. Itulah sebabnya carian klien berkelakuan tepat seperti yang diterangkan oleh dasar, dan itulah sebabnya penghala mengabaikannya. Peraturan itu tidak salah, ia hanya dipasang pada cangkuk yang tidak pernah dicapai oleh penghala. Alihkannya, dan padanan yang sama mula berfungsi.
Trafik yang dijana secara setempat dicipta oleh proses pada penghala dan masuk ke laluan keluaran. Ia dihala oleh keputusan penghala sendiri dan hanya bertemu dasar jika dasar itu meliputi rantaian tersebut. Tiada antara muka masuk untuk dipadankan dan tiada keputusan penghantaran untuk diperhatikan.
Itu adalah sifat tempat paket dilahirkan, bukan sifat mana-mana pakej tertentu. Peraturan yang ditulis untuk satu rantaian langsung tidak mempunyai pendapat tentang rantaian yang lain. Tiada pelarasan peraturan yang mengubahnya.
Pilih rantaian keluaran, kemudian sempitkan padanan
Pembetulannya ialah melampirkan niat yang sama pada rantaian keluaran juga, atau memindahkan peraturan ke sana apabila pertanyaan penghala sendiri yang anda pentingkan. Dalam persediaan OpenWrt yang dibina atas pakej penghalaan dasar, itu bermakna memilih output dan bukan prerouting dalam tetapan rantaian peraturan. Kekalkan kedua-dua peraturan jika kedua-dua populasi memerlukan liputan.
Kemudian sempitkan apa yang dipadankan oleh peraturan. Alamat penyelesai destinasi pada port yang benar-benar digunakan oleh penyelesai ialah keputusan yang jauh lebih kecil daripada menghantar semua yang dijana oleh penghala ke dalam terowong.
Kekalkan kedua-dua peraturan secara eksplisit daripada cuba menulis satu yang meliputi kedua-dua rantaian. Peraturan berasingan lebih mudah dibaca, dan membolehkan anda melumpuhkan laluan penghala tanpa mengganggu trafik klien semasa menyahpepijat. Ia juga menjadikan pembilang bermakna satu demi satu.
Jauhkan pengangkutan terowong itu sendiri daripada peraturan
Sambungan luar terowong juga dicipta oleh penghala. Peraturan yang menghantar semua trafik yang dijana secara setempat ke dalam terowong akan menghala terowong melalui dirinya sendiri, dan ia tidak akan naik langsung.
Akses pengurusan ialah mangsa kedua. Sesi pentadbiran yang berasal dari penghala, atau balasan kepadanya, boleh ditarik ke dalam terowong oleh peraturan setempat yang terlalu luas dan menjadi tidak dapat dicapai dari LAN.
Kecualikan titik akhir terowong daripada padanan, dan kekalkan peraturan terhad kepada alamat penyelesai. Itu cukup untuk keperluan DNS dan cukup kecil untuk difikirkan.
Uji kedua-dua populasi, bukan satu
Perhatikan penghala membuat pertanyaannya sendiri dan catat antara muka mana yang membawanya. Ulang carian dari hos LAN dan catat laluan yang diambilnya. Pembilang pada peraturan dasar menjadikan kedua-dua jawapan kelihatan tanpa meneka.
Anggap hasilnya sebagai dua penemuan. Klien yang menyelesaikan melalui terowong tidak berkata apa-apa tentang penghala, dan penghala yang menyelesaikan dengan betul tidak berkata apa-apa tentang klien pada pendengar lain. Tuliskan sebagai baris berasingan dalam rekod perubahan.
Periksa juga port: peraturan yang memadankan port destinasi 53 terlepas penyelesai yang dicapai melalui DNS over TLS pada 853 atau titik akhir HTTPS. Padankan pengangkutan yang benar-benar digunakan oleh upstream yang dikonfigurasikan, dan kebocoran ditutup atas sebab yang betul.