Четири работи мора да се поклопат пред Linux домаќин да прати само својот SMTP низ тунел: рута во посебна табела, правило за политика што го избира сообраќајот, изворна адреса што ќе ја прифати peer-от, и повратен пат што ја издржува асиметријата. Секое е одделна конфигурација со сопствен режим на откажување. Редоследот подолу е тој што прави откажувањето да покажува на делот што навистина е погрешен. Ова е работа за рутирање специфична за порта, а не барање за стандардна рута на VPN.

Правилото за порта не е стандардна рута

Правило што локално генериран TCP го совпаѓа со целната порта 25 го праќа тој сообраќај во табела што ја именувате. Правилото само по себе не создава ништо: избира, а табелата мора да држи рута што може да го носи пакетот. Комбинацијата на двете покрива само излезниот правец на еден протокол, затоа проследувањето за други домаќини, влезните поштански врски и IPv6 остануваат надвор од оваа поставеност. Да се нарече политика специфична за порта наместо VPN стандард ја одржува таа граница чесна.

Две поставки на wg-quick се предуслови, а не дел од политиката. AllowedIPs = 0.0.0.0/0 му дозволува на peer-от да носи произволни IPv4 цели, а Table = off го спречува wg-quick да ја инсталира сопствената стандардна рута за тој префикс. Не мешајте ги овие упатства со менаџер што применува сопствена рутна политика, бидејќи двете нема да се согласат кому му припаѓа главната табела.

Напишете ја рутата, селекторот и заштитата

Изберете број на табела и пар приоритети што ништо друго не ги користи, потоа применете ја рутата, селекторот и заштитата по тој редослед. Броевите подолу се примери, а не резервирани вредности:

ip -4 route add default dev wg0 src 10.77.0.2 table 51825
ip -4 rule add priority 10000 iif lo ipproto tcp dport 25 lookup 51825
ip -4 rule add priority 10001 iif lo ipproto tcp dport 25 unreachable

iif lo го ограничува правилото на локално настанат сообраќај, а ipproto tcp dport 25 го идентификува правецот на врската; референцата за ip-rule ги документира двата селектори. Тие постојат во тековните кернели и изданија на iproute2, а на постар систем правилото е целосно отфрлено, што е појасна грешка од правило што се вчитува и не се совпаѓа со ништо.

Правилото unreachable на следниот приоритет е заштитата. Без него, рута што недостасува во табелата 51825 паѓа на обичната стандардна, и поштата излегува преку физичката врска за време на прекин на тунелот, што е токму случајот што политиката требаше да го спречи.

Изворната адреса мора да се совпадне

Претпочитањето src на рутата само пополнува извор за врските што не поврзале свој. Тоа не е превод и не ја поништува експлицитната врска, затоа демон поврзан со физичката адреса продолжува да праќа од таа адреса. Ако го најдете токму ова, сменете ја поставката на самиот демон или дизајнирајте намерна политика за превод, бидејќи доцна сеопфатна masquerade е друго решение со други последици.

На портата, peer-от на клиентот мора да го авторизира изворот што навистина го прима, односно 10.77.0.2/32, а не широк целен префикс. Копирањето на 0.0.0.0/0 на клиентот во секој peer на портата збунува кој peer поседува каков сообраќај. Портата исто така бара проследување, firewall политика што го дозволува текот, и повратен пат, вклучително излезен превод кога повисокиот крај не може да рутира приватна адреса на тунел.

Проверете го повратниот пат, потоа трајноста

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

ip -4 route get 198.51.100.25 ipproto tcp dport 25
ip -4 route get 198.51.100.25 ipproto tcp dport 443

Првото пребарување треба да ги именува wg0 и предвидениот извор, а второто треба да ја задржи обичната горна врска. Кога апликацијата ја поврзува сопствената адреса, додајте from со таа адреса во пребарувањето. Правецот на одговорот што стигнува до wg0 и потоа локално се отфрла укажува на IPv4 филтрирање на обратниот пат, бидејќи правило само за излезна порта не прави обратното пребарување да го избере тунелот.

Каде што асиметричното рутирање е дозволено, слаб режим ограничен на интерфејсот преку net.ipv4.conf.wg0.rp_filter=2 може да биде соодветен, и вреди прво да се провери ефективниот максимум на all и на вредностите на интерфејсот. Не исклучувајте ја валидацијата глобално како кратенка. Потоа предадете ја табелата, приоритетите и заштитата на тој што ја поседува конфигурацијата, и по повторно поврзување отворете свежи врски за да потврдите дека изборот сѐ уште важи. Имајте на ум дека одговорите од локален SMTP слушач носат изворна порта 25, а не целна порта 25, што е одделно прашање на политика.

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