eth0:0 — bu yorliq, qurilma emas: SNAT mosligini tuzating
Nol hisoblagich qoida mavjud bo'lishi mumkin bo'lmagan interfeysni nomlashini bildiradi. Haqiqiy qurilmani o'qing, -o mosligini tuzating va keyin tarjima qilingan manzilni ataylab tanlang.
Bitta VPN mijozlar hovuziga o'zining ommaviy manzilini berishi kerak bo'lgan NAT qoidasi nol paketda turibdi, o'sha hovuz esa noto'g'ri manba bilan chiqishda davom etmoqda. Qoida odatda manzilda xato qilmaydi; interfeysda xato qiladi. -o eth0:0 mavjud bo'lmagan qurilmaga ishora qiladi, chunki eth0:0 manzilga bog'langan yorliq, va o'sha manzilning qurilmasi eth0 bo'lib qolmoqda. Hisoblagichlarga qarash buni tasdiqlashning eng tez yo'li, va tuzatish tekshiruv taklif qilganidan kichikroq.
Yadro qurilmani nima deb atashini tekshiring
Biror narsani o'zgartirishdan oldin ikkala ko'rinishni alohida o'qing:
ip link show
ip address show dev eth0
ip route get 203.0.113.20
Havolalar ro'yxati interfeyslarni ko'rsatadi. Manzillar ro'yxati yorliqni olib yuruvchi ikkinchi IPv4 manzilini ko'rsatishi mumkin eth0:0, va o'sha manzilning qurilmasi hali ham eth0. iproute2 manzillar qo'llanmasi yorliqni manzilning nomi deb biladi, ikkinchi havola deb emas, va butun muammo aynan shu farqqa tayanadi.
Tarix chalkashlikni tushuntiradi. Qadimgi ifconfig eth0:0 sintaksis haqiqatan yangi interfeysga o'xshardi, va o'sha davr skriptlari hali ham unga murojaat qiladi. Zamonaviy tizimda alias — manzil ustidagi yorliq, va marshrutlash yoki netfilter yo'lida hech narsa uni alohida chiqish nuqtasi deb hisoblamaydi.
Qoida aslida nima bilan mos kelganini tekshiring
Hisoblagichlarni xotiradan emas, qoidalar ro'yxati bilan birga o'qing:
iptables -t nat -L POSTROUTING -v -n --line-numbers
Mos keluvchi trafik oqib turganda paket hisoblagichi nolda qoladigan qoida baholanmaydi, va quyidagini nomlaydigan chiqish interfeysi sharti eth0:0 keng tarqalgan sabab. Marshrut tanlagan chiqish qurilmasi eth0, shuning uchun boshqa nom qidiradigan shart, yadro qaysi manba manzilini tanlamasin, hech qachon rost bo'lmaydi.
Shartni haqiqiy qurilmaga o'zgartiring va yorliqni undan tashqarida qoldiring. Agar o'sha qurilmani bo'lishadigan ikki mijoz hovuzini ajratish kerak bo'lsa, ularni manba prefiksi bilan ajrating, mavjud bo'lishi mumkin bo'lmagan interfeys nomi bilan emas. Bir-birini qoplamaydigan -s -s mosliklari bo'lgan ikki qoida o'qish va sinash mumkin; uydirma qurilmali bitta qoida ikkalasi ham emas. Har bir qoidaga hovuzni nomlaydigan izoh qo'shing, chunki yarim yildan keyin prefiksning o'zi hech kimga uning nima uchun u yerda turganini aytmaydi.
Qurilmani tanlagan marshrutni tekshiring
Postrouting NAT marshrut allaqachon chiqish interfeysini tanlab bo'lgandan keyin ishlaydi, shuning uchun qoidadagi interfeys marshrut tanlagan interfeys bo'lishi kerak. Yadrodan to'g'ridan-to'g'ri so'rang ip route get bilan vakillik mijoz manzili uchun, va u xabar qilgan qurilma hamda manbani o'qing.
Agar javob eth0 ni nomlasa, qoidaning interfeys qismi hal bo'ldi. Agar u tunnel qurilmasini nomlasa, paket siz tahrirlayotgan qoidaga hech qachon yetib bormaydi, va qidiruv marshrutlash jadvali va uning ustuvorliklariga o'tadi. Paket boshqa joydan chiqqani uchun hech qachon mos kelmaydigan qoida hisoblagich chiqishida noto'g'ri yozilgan qurilmali qoidaga o'xshab ko'rinadi. Biror narsani tahrirlashdan oldin ikki holatdan qaysi biri borligini tasdiqlang, chunki ikkinchisi matnni emas, marshrutlashni o'zgartirishni talab qiladi.
Tarjima qilingan manbani ataylab tanlang
Qurilma to'g'ri bo'lgach, manba manzili alohida qaror. Bu faqat misol IPv4 hovuzi va namuna manzil:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
-j SNAT --to-source 203.0.113.20
Manzilni --to-source ichiga yozish hech kimni uni sizga qaytarib marshrutlashga majburlamaydi. Yuqori provayder yoki manzil egasi o'sha manzil uchun javoblarni shu xostga yetkazishi kerak, va manzil sizga foydalanishga ruxsat berilgan bo'lishi shart. Aks holda, qoida mos keladi va tarjima qiladi, javoblar esa baribir boshqa joyga ketadi.
Manba manzilini o'zgartirish yuqori havolani o'zgartirish bilan bir xil emas. Haqiqiy talab boshqa jismoniy yo'l bo'lsa, marshrutlash siyosati avval o'sha yo'lni tanlashi kerak; keyin SNAT siyosat tanlagan qurilmada manbani qayta yozadi. Qo'shimcha yorliqlar eth0 qo'shish na yo'lni, na ruxsatni beradi.
Yangi ochilgan ulanish bilan tasdiqlang
Mavjud ulanishni qayta ishlatmay, yangi mijoz ulanishini oching. Ulanishlarni kuzatish oqim boshlanganda yozib olgan tarjimani saqlaydi, shuning uchun eski sessiya avvalgi manba manzilini ishlatishda davom etib, to'g'ri yangi qoidani buzilgan ko'rsatishi mumkin. Hisoblagich o'sishini kuzating, keyin tarjima qilingan manbani simda yoki uzoq uchida kuzating.
Bitta interfeysni bo'lishadigan bir necha hovuz uchun har biriga aniq manba mosligi va o'z tarjima manzilini bering, ularni xavfsizlik devorining boshqariladigan konfiguratsiyasida saqlang va qanday tartibda baholanishini yozib qo'ying. Keyin nima tekshirganingizni yozib qo'ying: qurilmani ip route get dan, harakatlangan hisoblagichni va uzoq tomon ko'rgan manbani. Bu yozuv yorliq chalkashligini takrorlamasdan keyingi hisobotga javob beradi.