Pi shlyuzining xost nomi statik marshrutlarni o'zi yangilaydimi?
Pi shlyuzingiz uchun DNS nomi o'rnatilgan keyingi sakrashni hech qachon qayta yozmaydi. Yadro nima saqlashini va marshrutni kim yangilashi kerakligini ko'ring.
Statik marshrutni shlyuz nomiga yo'naltirish manzil o'zgarganda ham ishlab ketadigandek tuyuladi, lekin unday emas. Nom DNSda yashaydi, marshrut esa mijozning marshrutlash jadvalida raqamli keyingi sakrash sifatida o'tiradi. Pi boshqa manzilga ko'chganda, eski sakrashni allaqachon o'rnatgan har bir iste'molchi trafikni o'sha raqamga yuborishda davom etadi. Hech qanday hal qiluvchi uzatish jadvaliga ulanmagan, shuning uchun bu yozuvni siz uchun qayta yozadigan hech narsa yo'q.
DNS javobi va marshrut har xil obyektlar
Aytaylik, Piingiz vpn-gw.lan manziliga javob beradi va 10.44.0.0/16 ni tunnelga uzatadi. 192.168.30.0/24 dagi mijozlar unga statik marshrut orqali yetib boradi. Pi manzili 192.168.30.4 dan 192.168.30.11 ga ko'chganda, yozuv o'z TTL doirasida kuzatib bordi, marshrutlar esa kuzatmadi.
Ikki ko'rinish bir-biriga shunday zid bo'ladiki, buni o'tkazib yuborish oson, chunki alohida so'ralganda ikkalasi ham ishonchli ko'rinadi:
$ ip route get 10.44.0.1
10.44.0.1 via 192.168.30.4 dev eth0 src 192.168.30.20
$ dig +short vpn-gw.lan
192.168.30.11
Paketlar qayerga ketishini faqat birinchi qator hal qiladi. Ikkinchi qator yadro hech qachon bermagan savolga javob beradi. Bir nechta A yozuvli yozuv ham nosozlikda o'tish siyosatiga aylanmaydi, chunki har bir manzil o'sha segmentda ishlaydigan keyingi sakrash bo'lishi shart.
Buyruq tugagandan keyin jadvalda nima qoladi
Linux marshruti bu yerda muhim bo'lgan ikki narsani yozadi: protokol manzili sifatida keyingi sakrashni va indeks raqami sifatida chiqish interfeysini. rtnetlink marshrut atributlari o'sha birinchi maydonni RTA_GATEWAY deb ataydi va unda baytlar saqlanadi. Yozuv joyiga tushgandan keyin unga hech qanday TTL bog'lanmaydi va hech qanday fon qidiruvi uni yangilamaydi.
Shuning uchun ip route add 10.44.0.0/16 via vpn-gw.lan ishlayotgandek ko'rinishi mumkin. Asbob buyruq ishlayotganda nomni hal qiladi, natijadagi manzilni yozadi va nomni butunlay unutadi. Keyin ip route show 10.44.0.0/16 ni ishga tushiring va sizga so'zma-so'z manzil qaytadi.
Bu xatti-harakatni tunnelni ayblashdan oldin bilish arziydi.
Nomni siz uchun hal qiladigan asboblar va qachon
Ba'zi routerlar va xavfsizlik devorlari marshrut yoki shlyuz maydonida xost nomlarini haqiqatan qabul qiladi. Muhimi hal qilish qachon sodir bo'ladi. Agar qurilma nomni faqat konfiguratsiyani qo'llayotganda hal qilsa, saqlangan yozuv yozilgan manzil kabi statik bo'lib qoladi va keyingi manzil o'zgarishi yana bir qo'llashni talab qiladi. Maydonning nom qabul qilishi yangilanish haqida hech narsa aytmaydi.
Boshqariladigan sozlamalar ishni bo'lishga moyil. DHCP rezervi yoki statik ijara Pi ni bitta manzilda ushlab turadi va DNS yozuvi shunchaki ijaraga ergashadi. Hech narsa harakatlanuvchi maqsadni kuzatishi shart emas, chunki maqsad harakatlanmaydi.
Kuzatiladigan yangilagich boshqa qonuniy namuna va unga egasi kerak.
Manzilni qadab qo'ying yoki yangilagichni o'zingiz ishga tushiring
Kichik LAN uchun DHCP serveridagi rezerv eng arzon yechim. Dinamik hovuzdan tashqarida manzil tanlang, uni Pi ning MAC manziliga bog'lang va keyingi ijara yangilanishidan keyin ip -4 addr show dev eth0 bilan tasdiqlang. Keyin mijozlarning keyingi sakrashini bir marta o'sha manzilga qarating. Endi sizda barqaror shlyuz va uni tavsiflovchi yozuv bor, va bu munosabat haqiqatan ishlaydigan tartib shu.
Agar Pi haqiqatan ko'chishi kerak bo'lsa, har bir mijozni qo'lda tahrirlash o'rniga marshrut ta'mirini bir joyda saqlang. Hal qiladigan, solishtiradigan va almashtiradigan qisqa skript qadamni takrorlanadigan qilish uchun yetarli:
new=$(dig +short vpn-gw.lan | head -n1)
cur=$(ip route get 10.44.0.1 | awk '{print $3}')
if [ "$new" != "$cur" ]; then
ip route replace 10.44.0.0/16 via "$new"
fi
ip route get 10.44.0.1
Oxirgi buyruq qabul testi, chunki u yadro haqiqatan ishlatadigan shlyuzni chop etadi. Agar chop etilgan manzil hali ham eski bo'lsa, skript noto'g'ri tarmoq nomlar fazosida ishlagan yoki ruxsati bo'lmagan, DNS tomoni esa ahamiyatsiz.
Qaytish yo'lini ham tekshiring. Pi mijoz quyi tarmog'iga qanday yetib borishni bilishi kerak va uning xavfsizlik devori tunnel trafigiga ruxsat berishi kerak. Mos kelmaslikni yopish uchun qo'shilgan standart marshrut odatda haqiqiy bo'shliqni yashiradi va bir haftadan keyin boshqa narsani buzadi.