Два VPN клиенти можат да излезат низ две различни јавни IPv4 адреси, а правилото што го прави тоа е пократко отколку што очекуваат повеќето. Не го прави функционално синтаксата на iptables, туку состојбата на пакетот кога ќе стигне до излезниот синџир: изворната адреса таму сѐ уште мора да ги разликува клиентите. Ако претходен masquerade веќе ги споил двете на една адреса, ниедно правило по клиент не може да ја врати разликата. Прво решете го ова прашање, потоа напишете го преводот.

Кој идентитет преживува до портата

Правилото се совпаѓа со изворната адреса на пакетот, не со корисничко име на VPN и не со името што го прикажува клиентската апликација. Сѐ што го преведува пакетот порано на патеката одредува што вашето правило сѐ уште може да види. Извршете ја табелата nat по ред и најдете ја точката каде изворот сѐ уште е посебен за секој клиент.

iptables -t nat -S POSTROUTING

Прочитајте го тој список одозгора. Правило masquerade близу до врвот ја препишува изворната адреса за секој соодветен тек, а записите по клиент поставени по него се совпаѓаат со адреса што повеќе не постои. Кога два LAN уреди делат еден тунел и пристигнуваат како една внатрешна адреса, дизајнот мора да се промени пред огнениот ѕид: држете ги нивните изворни опсези одделени или дајте му на секој своја внатрешна адреса.

Поврзете ја доделувањето на внатрешната адреса со автентицираниот клиент. Предавањето на таа адреса на друг уред ја предава и политиката за излез, а преводот на изворот сам по себе не е доказ за идентитет.

Преводот не може да измисли адреса

Секоја јавна адреса мора да биде доделена или насочена кон оваа излезна точка, а одговорите мора да го најдат патот назад до неа. Правило што праќа сообраќај од адреса кон која никој не насочува назад се отфрла на далечниот крај или се одговара на домаќин што никогаш не го побарал. Примерокот кај давателот на облак обично ја има јавната адреса преведена во адреса на приватно интерфејс пред пакетот да излезе, затоа изворот на SNAT мора да биде адресата што давателот ќе ја прифати, а не вредноста што ја прикажува конзолата. Прочитајте го моделот на адреси на давателот и следете го наместо да ја копирате јавната вредност во секој пакет.

Во практика тоа значи да се провери насочениот префикс во конзолата на давателот пред да се допре огнениот ѕид, и да се користи адресата на приватниот интерфејс како извор на превод кога пресликувањето е еден на еден. Адресите во примерите подолу доаѓаат од документациските опсези, затоа првото нешто што треба да се замени е самиот текст на адресата.

Вметнете пред општиот masquerade

Потврдете го излезниот интерфејс и тековниот синџир пред да додадете нешто. Првото одредува кои пакети може да ги совпадне правилото, а второто покажува што веќе стои пред него.

ip -4 route show default
iptables -t nat -L POSTROUTING -n -v --line-numbers

Првата команда го именува интерфејсот низ кој пакетот кон интернет навистина излегува. Втората го печати синџирот со броеви на редови. Општиот запис masquerade е редот над кој треба да останете.

iptables -t nat -I POSTROUTING 1 -s 10.88.4.20/32 -o ens3 -j SNAT --to-source 198.51.100.77
iptables -t nat -I POSTROUTING 1 -s 10.88.4.21/32 -o ens3 -j SNAT --to-source 198.51.100.78

Двете правила погоре се совпаѓаат со по една внатрешна адреса, го ограничуваат совпаѓањето на излезниот интерфејс и го поставуваат изворот експлицитно. Вметнете, а не додадете: на позиција 1 тие се оценуваат пред редот masquerade. Редоследот меѓу двете не е важен бидејќи нивните извори се разликуваат. Заменете го ens3 со она што го пријави командата за маршрута, и држете ги другите менаџери на огнен ѕид подалеку од истите куки, бидејќи две алатки што пишуваат една табела е вообичаената причина зошто точно правило нема ефект.

Докажете го изворот со нов тек

Stateful NAT врзува превод кога текот започнува и го користи повторно за подоцнежни пакети, затоа сесијата отворена пред промената го задржува стариот извор по промената. Само ново започнато поврзување го докажува правилото.

conntrack -L -s 10.88.4.20 -p tcp --dport 443

Прочитајте го правецот на одговор на тој запис: неговата дестинација е адресата што далечниот крај ја гледа како извор. Споредете ја со јавната адреса што сте ја имале на ум, и записот што ја носи старата адреса третирајте го како доказ за тек што започнал прерано, а не како расипано правило. Побарајте од клиентот да отвори ново поврзување, потоа повторете го барањето. Празнењето на целата табела за следење за да се наметне тестот ја прекинува секоја друга сесија на портата.

Преводот сѐ уште не ја избира маршрутата, не го пропушта текот низ филтерот и не објавува влезна услуга. Погрешна маршрута и отсутно правило за дозвола продолжуваат да не успеваат и по совршено правило за SNAT. Проверете и IPv6 и секоја секундарна излезна патека, потоа запишете ги паровите внатрешна-кон-јавна во документацијата на огнениот ѕид, за да започне следната промена од пресликувањето, а не од текстот на правилото.

Поврзани статии