Браузер https://203.0.113.10:8443 дарегин сурайт, прокси байланышты кабыл алат, ал эми WireGuard peer’индеги кызмат эч качан жооп бербейт. DNAT эрежеси өз ишин аткарып жатат; ийгиликсиз болгон бөлүк – жооп. Пакетти эки транслия аркылуу байкап чыгыңыз, ошондо жетишпеген эреже айкын болот. Оңдоо – туура hook’тогу дагы бир NAT билдирүүсү, жаңы туннель эмес.

Бир сурамды башынан аягына чейин байкаңыз

Сурам проксинин коомдук интерфейсине келет, булагы – кардардын коомдук дареги, багыты – проксинин дареги. nat PREROUTING ичинде DNAT эрежеси багытты peer’дин туннель дарегине, 10.90.0.2’ге кайра жазат. Андан кийин маршруттоо чечими пакетти wg0 аркылуу сыртка жөнөтөт жана өткөрүп берүү жолу аяктайт.

Peer’де пакет азыр баштапкы коомдук булак дарегин алып жүрөт, анткени аны эч нерсе кайра жазган жок. Кызмат байланышты кабыл алып, жообун өзүнүн демейки шлюзине жөнөтөт, ал – peer’дин алдындагы үй маршрутизатору. Бул маршрутизатордо эч качан көрбөгөн агым үчүн абал жок, ошондуктан ал пакетти же ыргытат, же өзүнүн коомдук дарегине которот, кардар муну кабыл албайт.

Асимметрия – бүт көйгөй: сурам прокси аркылуу өтөт, ал эми жооп түз барабы деп аракет кылат. Проксинин байланышты көзөмөлдөөсү жооп прокси аркылуу кайтканда гана жардам берет, ал эми булак дареги дагы эле баштапкы кардарды көрсөтүп турганда ал ал жакка кайта албайт.

Кайтарып которууну кошуңуз

Кайтарылып өткөрүлүүчү агымдын булагын peer’ге кетерден мурун проксинин туннель дарегине кайра жазыңыз. Андан кийин кызмат 10.90.0.1’ге жооп берет, прокси аны кабыл алат жана пакет кардарга кайтпас мурун байланыш көзөмөлү эки транслияны тең артка бурат.

iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

POSTROUTING эрежеси атайын кууш: ал которулган багытка жана туннель интерфейсине дал келет, ошондуктан wg0 аркылуу кокустан чыккан байланышсыз трафикти кайра жазбайт. Кенен masquerade эрежеси кардардын дарегин да жашырат эле, бирок муну ар бир агым үчүн жасап, NAT таблицасын текшерүүнү кыйындатат эле.

Эрежелерди туннель бар жерге жайгаштырыңыз

Туннелдин дарегине же интерфейсине шилтеме кылган эрежелер wg-quick аны конфигурациялагандан кийин иштеши керек. Интерфейс PreUp’тан мурун түзүлөт, бирок даректер, MTU, DNS жана маршруттар андан кийин колдонулат, ал эми PostUp ушунун баары ордунда болгондо иштейт. Кошумчаларды PostUp’ка, өчүрүүлөрдү PreDown’га салыңыз.

PostUp = iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PostUp = iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1
PreDown = iptables -t nat -D PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PreDown = iptables -t nat -D POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

Өчүрүүлөр кошумчаларга токен боюнча дал келиши керек, multiport жана интерфейс дал келүүлөрү менен кошо. Бир дал келүү менен айырмаланган өчүрүү эч нерсени өчүрбөйт, ал эми кийинки кайра туташуу эреженин экинчи көчүрмөсүн кошот. Бир нече кайра туташуудан кийин таблицада конфигурация сабына байланыштыруу кыйын болгон кайталоолор пайда болот.

Жыйынтыкты iptables -t nat -S аркылуу кайра туташкандан кийин текшериңиз. Эгер ошол эле эреже эки жолу көрүнсө, PreDown сабы дал келбейт жана тазалоо үнсүз ийгиликсиз болот.

Өткөрүп берүү, чыпкалоо жана башка NAT

IPv4 өткөрүп берүүнү туруктуу күйгүзүңүз, андан кийин чыпка таблицасында өткөрүлүүчү агымга уруксат бериңиз. DNAT FORWARD чынжырынан мурун болот, ошондуктан чыпка эрежеси коомдук дарекке эмес, которулган багытка дал келет. Эгер UFW файрволду башкарса, уруксатты маршрут эрежеси катары билдириңиз; жөнөкөй host эрежеси өткөрүлүүчү трафикти камтыбайт.

Прокси эрежелери туура болсо да, дагы эки NAT катмары жолду буза алат. Үй байланышында коомдук дарек маршрутизаторго таандык, ал эми анын файрволунда портту ачуу ошол портту проксиге жөнөтүүчү портту өткөрүп берүү жазуусун түзүүгө барабар эмес. Сырттан ачык көрүнгөн, бирок эч нерсе жооп бербеген портто көбүнчө дал ошол салыштыруу жетишпейт.

NAT VPS’те провайдер коомдук портту жеке дарекке салыштырат. Салыштыруу сиз жарыялаган портко дал келиши керек, ал эми дал келбестик бузулган туннелге так окшош. WireGuard конфигурациясын өзгөртүүдөн мурун провайдердин салыштыруусун ырастаңыз.

Кайтуу жолун текшерип, баасын кабыл алыңыз

Проксинин LAN’ы эмес тармактан туташыңыз, андан кийин байланыш ачык турганда транслия жупун текшериңиз:

conntrack -L -p tcp --dport 8080
tcpdump -ni any tcp port 8080

conntrack жазуусу баштапкы tuple’ды, которулган tuple’ды жана жооптун багытын көрсөтүшү керек. Эгер жооп жок болсо, peer туннель аркылуу жөнөтпөй жатат, бул адатта SNAT эрежеси колдонулбаганын же peer’дин өз файрволу агымды ыргытканын билдирет.

PostUp эрежелерди кайра колдонорун далилдөө үчүн бир жолу кайра жүктөңүз, андан кийин туннелди токтотуп, PreDown аларды өчүргөнүн ырастаңыз. Байланыш үзүлгөндөн кийин калган өлүк эрежелер кийинки өзгөртүүнүн болжолсуз жүрүшүнүн себеби.

Акыры, SNAT канча турганын кабыл алыңыз. Кызмат ар бир сурамды проксиден келген деп көрөт, ошондуктан кирүү журналдары, кардарга карата ылдамдык чектөөлөрү жана уруксат берилген дарек тизмелери мындан ары колдонуучуларды ажыратпайт. Hairpin учуру проксинин LAN’ындагы кардарлар үчүн өзүнүн булак транслиясын талап кылат. Эгер peer’ге чыныгы кардар даректери керек болсо, альтернатива – кардар тармагына кайтуу маршруту, бул көбүрөөк иш, бирок маалыматты сактайт.

Тектеш макалалар