Направіць у тунель толькі порт 25, а не хост
Правіла, абранае па порце, адпраўляе праз тунель толькі зыходны SMTP. Табліца, адрас крыніцы і зваротны шлях павінны супасці, інакш нішто не будзе працаваць.
Чатыры рэчы павінны супасці, перш чым Linux-хост адправіць праз тунель толькі свой уласны SMTP: маршрут у асобнай табліцы, правіла палітыкі, якое выбірае трафік, адрас крыніцы, які прыме партнёр, і зваротны шлях, што вытрывае асіметрыю. Кожная з іх — асобная канфігурацыя з уласным рэжымам адмовы. Парадак ніжэй — той, які робіць так, каб збой паказваў на сапраўды няправільную частку. Гэта праца па маршрутызацыі, спецыфічная для порта, а не запыт на стандартны маршрут VPN.
Правіла порта — не стандартны маршрут
Правіла, якое супастаўляе лакальна створаны TCP з портам прызначэння 25, адпраўляе гэты трафік у табліцу, якую вы назвалі. Правіла само па сабе нічога не стварае: яно выбірае, а табліца павінна ўтрымліваць маршрут, здольны пранесці пакет. Спалучэнне двух ахоплівае толькі выходны кірунак аднаго пратакола, таму перадача для іншых хастоў, уваходныя паштовыя злучэнні і IPv6 застаюцца па-за гэтай схемай. Называць гэта палітыкай для канкрэтнага порта, а не стандартам VPN, — значыць захоўваць гэтую мяжу сумленнай.
Дзве налады wg-quick — гэта перадумовы, а не частка палітыкі. AllowedIPs = 0.0.0.0/0 дазваляе партнёру несці адвольныя адрасы прызначэння 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 unreachableiif lo абмяжоўвае правіла трафікам лакальнага паходжання, а ipproto tcp dport 25 вызначае кірунак злучэння; даведнік па ip-rule апісвае абодва селектары. Яны існуюць у бягучых ядрах і выпусках iproute2, а ў старой сістэме правіла адхіляецца цалкам, што з'яўляецца больш ясным збоем, чым правіла, якое загружаецца і ні з чым не супадае.
Правіла unreachable на наступным прыярытэце — гэта ахова. Без яго адсутны маршрут у табліцы 51825 правальваецца ў звычайны стандарт, і пошта выходзіць праз фізічнае злучэнне падчас збою тунеля, што з'яўляецца менавіта тым выпадкам, дзеля прадухілення якога будувалася палітыка.
Адрас крыніцы павінен супасці
Перавага src у маршруце толькі запаўняе крыніцу для злучэнняў, якія не прывязалі ўласную. Гэта не трансляцыя, і яна не перакрывае яўную прывязку, таму дэман, прывязаны да фізічнага адраса, працягвае адпраўляць з гэтага адраса. Калі вы бачыце менавіта гэта, змяніце ўласную наладу дэмана або распрацуйце наўмысную палітыку трансляцыі, бо позні суцэльны masquerade — іншае рашэнне з іншымі наступствамі.
На шлюзе партнёр кліента павінен аўтарызаваць крыніцу, якую ён фактычна атрымлівае, — 10.77.0.2/32, а не шырокі прэфікс прызначэння. Капіяванне 0.0.0.0/0 кліента ў кожнага партнёра шлюза блытае, каму належыць які трафік. Шлюзу таксама патрэбныя перадача, палітыка фаервола, якая дазваляе паток, і зваротны шлях, уключаючы трансляцыю выхаду, калі вышэйшы бок не можа маршрутызаваць прыватны адрас тунеля.
Праверце зваротны шлях, потым устойлівасць
Прачытайце вынікі пошуку, перш чым давяраць чаму-небудзь, бо яны паказваюць, якую табліцу і якую крыніцу атрымлівае кожны кірунак. Аднаго прызначэння на порце 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, і гэта асобнае пытанне палітыкі.