Direcționați doar portul 25 în tunel, nu gazda
O regulă selectată după port trimite doar SMTP-ul de ieșire prin tunel. Tabelul, adresa sursă și calea de întoarcere trebuie să coincidă, altfel nimic nu funcționează.
Patru lucruri trebuie să se alinieze înainte ca un host Linux să trimită doar propriul SMTP prin tunel: o rută într-un tabel dedicat, o regulă de politică ce selectează traficul, o adresă sursă pe care peer-ul o va accepta și o cale de întoarcere care rezistă asimetriei. Fiecare este o configurație separată cu propriul mod de eșec. Ordinea de mai jos este cea care face ca un eșec să indice partea care este cu adevărat greșită. Este o sarcină de rutare specifică portului, nu o cerere pentru o rută implicită VPN.
O regulă de port nu este o rută implicită
O regulă care potrivește TCP generat local cu portul destinație 25 trimite acel trafic într-un tabel pe care îl numiți. Regula nu creează nimic de la sine: selectează, iar tabelul trebuie să conțină o rută capabilă să transporte pachetul. Combinarea celor două acoperă doar direcția de ieșire a unui protocol, așa că forwardarea pentru alte gazde, conexiunile de poștă de intrare și IPv6 rămân în afara aranjamentului. Numind-o politică specifică portului în loc de implicit VPN se păstrează această graniță onestă.
Două setări wg-quick sunt condiții prealabile, nu parte a politicii. AllowedIPs = 0.0.0.0/0 permite peer-ului să transporte destinații IPv4 arbitrare, iar Table = off împiedică wg-quick să instaleze propria rută implicită pentru acel prefix. Nu amestecați aceste instrucțiuni cu un manager care aplică propria politică de rutare, pentru că cei doi nu vor fi de acord cine deține tabelul principal.
Scrieți ruta, selectorul și garda
Alegeți un număr de tabel și o pereche de priorități pe care nimic altceva nu le folosește, apoi aplicați ruta, selectorul și garda în această ordine. Numerele de mai jos sunt exemple, nu valori rezervate:
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 limitează regula la traficul de origine locală, iar ipproto tcp dport 25 identifică direcția conexiunii; referința ip-rule documentează ambii selectori. Ele există în nucleele și versiunile iproute2 actuale, iar pe un sistem mai vechi regula este respinsă direct, ceea ce este un eșec mai clar decât o regulă care se încarcă și nu se potrivește cu nimic.
Regula unreachable de la următoarea prioritate este garda. Fără ea, o rută lipsă din tabelul 51825 cade în rutina implicită obișnuită, iar poșta pleacă pe legătura fizică în timpul unei căderi a tunelului, exact cazul pe care politica urma să îl împiedice.
Adresa sursă trebuie să coincidă
Preferința src a rutei completează o sursă doar pentru conexiunile care nu au legat una proprie. Nu este traducere și nu suprascrie o legare explicită, așa că un daemon legat de adresa fizică continuă să trimită din acea adresă. Dacă asta găsiți, schimbați setarea daemonului însuși sau proiectați o politică de traducere deliberată, pentru că un masquerade global târziu este altă soluție cu alte consecințe.
La poartă, peer-ul clientului trebuie să autorizeze sursa pe care o primește efectiv, adică 10.77.0.2/32 în loc de un prefix de destinație larg. Copierea 0.0.0.0/0 a clientului în fiecare peer al porții încurcă cine deține ce trafic. Poarta are nevoie și de forwardare, o politică de firewall care permite fluxul și o cale de întoarcere, inclusiv traducerea de ieșire când partea superioară nu poate ruta o adresă privată de tunel.
Verificați calea de întoarcere, apoi persistența
Citiți căutările înainte de a vă încrede în orice, pentru că arată ce tabel și ce sursă primește fiecare direcție. O destinație pe portul 25 și aceeași destinație pe portul 443 sunt suficiente:
ip -4 route get 198.51.100.25 ipproto tcp dport 25
ip -4 route get 198.51.100.25 ipproto tcp dport 443Prima căutare ar trebui să numească wg0 și sursa dorită, iar a doua ar trebui să păstreze legătura superioară obișnuită. Când aplicația își leagă propria adresă, adăugați from cu acea adresă la căutare. O direcție de răspuns care ajunge la wg0 și apoi este aruncată local indică filtrarea căii inverse IPv4, pentru că o regulă doar pentru portul de ieșire nu face căutarea inversă să aleagă tunelul.
Unde rutarea asimetrică este autorizată, modul lax limitat la interfață prin net.ipv4.conf.wg0.rp_filter=2 poate fi potrivit și merită verificat mai întâi maximul efectiv al valorilor all și al interfeței. Nu dezactivați validarea global ca scurtătură. Apoi predați tabelul, prioritățile și garda celui care deține configurația și deschideți conexiuni noi după o reconectare pentru a confirma că selecția încă rezistă. Rețineți că răspunsurile unui ascultător SMTP local poartă portul sursă 25, nu portul destinație 25, ceea ce este o chestiune de politică separată.