eth0:0 — белгі, құрылғы емес: SNAT сәйкестігін түзетіңіз
Нөлдік санауыш ереженің болуы мүмкін емес интерфейсті атағанын білдіреді. Нақты құрылғыны оқыңыз, -o сәйкестігін түзетіңіз, содан кейін аударылған мекенжайды әдейі таңдаңыз.
Бір VPN клиент пулына өзінің жария мекенжайын беруі керек болған NAT ережесі нөл пакетте тұр, ал сол пул қате көзбен шыға беріп отыр. Ереже әдетте мекенжайдан қателеспейді; ол интерфейстен қателеседі. -o eth0:0 жоқ құрылғыны көрсетеді, өйткені eth0:0 мекенжайға тіркелген белгі, ал бұл мекенжайдың құрылғысы eth0. Санауыштарға қарау мұны растаудың ең жылдам жолы, ал түзету тергеу ұсынғаннан кішірек.
Ядро құрылғыны қалай атайтынын тексеріңіз
Бірдеңені өзгерту алдында екі көріністі бөлек оқыңыз:
ip link show
ip address show dev eth0
ip route get 203.0.113.20
Байланыстар тізімі интерфейстерді көрсетеді. Мекенжайлар тізімі мына белгіні ұстайтын екінші IPv4 мекенжайын көрсетуі мүмкін eth0:0, ал бұл мекенжайдың құрылғысы әлі де eth0. iproute2 мекенжай нұсқаулығы белгіні мекенжайдың аты деп санайды, екінші байланыс деп емес, және бүкіл мәселе дәл осы айырмашылыққа тіреледі.
Тарих шатасуды түсіндіреді. Ескі ifconfig eth0:0 синтаксис шынымен жаңа интерфейс сияқты көрінді, және сол дәуірдің скрипттері әлі де оған сілтейді. Қазіргі жүйеде бүркеншік ат — мекенжайға тіркелген белгі, ал маршруттау немесе netfilter жолында ешнәрсе оны бөлек шығу нүктесі деп санамайды.
Ереженің нақты неге сәйкес келгенін тексеріңіз
Санауыштарды ережелер тізімімен бірге оқыңыз, жадтан емес:
iptables -t nat -L POSTROUTING -v -n --line-numbers
Сәйкес трафик ағып жатқанда пакет санауышы нөлде тұрған ереже бағаланбайды, ал мынаны атайтын шығыс интерфейсінің шарты eth0:0 жиі себеп. Маршрут таңдаған шығыс құрылғысы eth0, сондықтан басқа ат іздейтін шарт ешқашан ақиқат болмайды, ядро қандай көз мекенжайын таңдаса да.
Шартты нақты құрылғыға ауыстырып, белгіні одан тыс қалдырыңыз. Егер сол құрылғыны бөлісетін екі клиент пулын ажырату қажет болса, оларды көз префиксімен ажыратыңыз, болуы мүмкін емес интерфейс атымен емес. Қабаттаспайтын -s сәйкестіктері бар екі ереже оқуға және тексеруге келеді; ойдан шығарылған құрылғысы бар бір ереже оның екеуі де емес. Әр ережеге пулды атайтын түсініктеме қосыңыз, өйткені жарты жылдан кейін префикс жалғыз өзі оның неге тұрғанын ешкімге айтпайды.
Құрылғыны таңдаған маршрутты тексеріңіз
Postrouting NAT маршрут шығыс интерфейсін таңдап болғаннан кейін іске қосылады, сондықтан ережедегі интерфейс маршрут таңдаған интерфейс болуы керек. Ядродан тікелей сұраңыз ip route get көмегімен өкілдік клиент мекенжайы үшін, және ол хабарлаған құрылғыны да, көзді де оқыңыз.
Егер жауап eth0 атса, ереженің интерфейс бөлігі шешілді. Егер ол туннель құрылғысын атса, пакет сіз өңдеп жатқан ережеге ешқашан жетпейді, ал іздеу маршруттау кестесіне және оның басымдықтарына ауысады. Пакет басқа жерден шыққандықтан ешқашан сәйкес келмейтін ереже санауыш шығысында қате жазылған құрылғысы бар ережеге ұқсайды. Бірдеңені өңдеу алдында екі жағдайдың қайсысы екенін растаңыз, өйткені екіншісі мәтінді емес, маршруттауды өзгертуді қажет етеді.
Аударылған көзді әдейі таңдаңыз
Құрылғы дұрыс болған соң, көз мекенжайы бөлек шешім. Бұл тек мысал ретіндегі IPv4 пулы мен үлгі мекенжай:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
-j SNAT --to-source 203.0.113.20
Мекенжайды --to-source ішіне жазу ешкімді оны сізге кері маршруттауға мәжбүрлемейді. Жоғарғы провайдер немесе мекенжай иесі сол мекенжайға келетін жауаптарды осы хостқа жеткізуі керек, ал мекенжай сізге пайдалануға рұқсат етілген болуы тиіс. Егер олай болмаса, ереже сәйкес келіп аударады, ал жауаптар бәрібір басқа жерге кетеді.
Көз мекенжайын өзгерту жоғарғы байланысты өзгертумен бірдей емес. Нақты талап басқа физикалық жол болса, маршруттау саясаты алдымен сол жолды таңдауы керек; содан кейін SNAT көзді саясат таңдаған құрылғыда қайта жазады. Қосымша белгілер eth0 қосу маршрутты да, рұқсатты да бермейді.
Жаңа ашылған байланыспен тексеріңіз
Бар байланысты қайта пайдаланбай, жаңа клиент байланысын ашыңыз. Байланыстарды бақылау ағын басталғанда жазылған аударманы сақтайды, сондықтан ескі сессия бұрынғы көз мекенжайын пайдалана беріп, дұрыс жаңа ережені бүлінгендей көрсетуі мүмкін. Санауыштың өсуін бақылаңыз, содан кейін аударылған көзді сымда немесе алыс ұшында көріңіз.
Бір интерфейсті бөлісетін бірнеше пул үшін әрқайсысына айқын көз сәйкестігін және өз аударма мекенжайын беріңіз, оларды желіаралық қалқанның басқарылатын конфигурациясында ұстаңыз және қандай ретпен бағаланатынын жазып қойыңыз. Содан кейін нені тексергеніңізді жазыңыз: құрылғыны ip route get ішінен, қозғалған санауышты және алыс жақ көрген көзді. Бұл жазба келесі есепке белгі шатасуын қайталамай жауап береді.