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 ичинен, кыймылдаган эсептегичти жана алыскы тарап көргөн булакты. Бул жазуу кийинки отчётко белги баш аламандыгын кайталабай жооп берет.