Четири ствари морају да се поклопе пре него што 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, што је засебно питање политике.

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