NAT правило које је требало да једној групи VPN клијената да његову сопствену јавну адресу стоји на нула пакета, док иста група и даље излази под погрешним извором. Правило обично није погрешно у адреси; погрешно је у интерфејсу. -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, бројач који се померио и извор који је видела удаљена страна. Тај запис одговара на следећи извештај без понављања збрке око алијаса.

Повезани чланци