Send kun port 25 ind i tunnelen, ikke værten
En portbaseret regel sender kun udgående SMTP gennem tunnelen. Tabellen, kildeadressen og returvejen skal hver især passe sammen, ellers virker intet.
Fire ting skal passe sammen, før en Linux-vært sender kun sin egen SMTP ud gennem en tunnel: en rute i en dedikeret tabel, en politikregel der vælger trafikken, en kildeadresse som peer'en accepterer, og en returvej der overlever asymmetrien. Hver af dem er en separat konfiguration med sin egen fejltilstand. Rækkefølgen nedenfor er den, der får en fejl til at pege på den del, der faktisk er forkert. Det er et portspecifikt routingarbejde, ikke en anmodning om en VPN-standardrute.
En portregel er ikke en standardrute
En regel, der matcher lokalt genereret TCP med destinationsport 25, sender den trafik til en tabel, du navngiver. Reglen skaber intet i sig selv: den vælger, og tabellen skal indeholde en rute, der kan bære pakken. Kombinationen af de to dækker kun den udgående retning af én protokol, så videresendelse for andre værter, indgående mailforbindelser og IPv6 bliver uden for ordningen. At kalde det en portspecifik politik i stedet for en VPN-standard holder den grænse ærlig.
To wg-quick-indstillinger er forudsætninger, ikke en del af politikken. AllowedIPs = 0.0.0.0/0 lader peer'en bære vilkårlige IPv4-destinationer, og Table = off forhindrer wg-quick i at installere sin egen standardrute for det præfiks. Bland ikke disse instruktioner med en manager, der anvender sin egen rutepolitik, for de to vil være uenige om, hvem der ejer hovedtabellen.
Skriv ruten, selektoren og vagten
Vælg et tabelnummer og et par prioriteter, som intet andet bruger, og anvend derefter ruten, selektoren og vagten i den rækkefølge. Tallene nedenfor er eksempler, ikke reserverede værdier:
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 begrænser reglen til lokalt opstået trafik, og ipproto tcp dport 25 identificerer forbindelsens retning; ip-rule-referencen dokumenterer begge selektorer. De findes i aktuelle kerner og iproute2-udgivelser, og på et ældre system afvises reglen helt, hvilket er en klarere fejl end en regel, der indlæses og ikke matcher noget.
Unreachable-reglen på den næste prioritet er vagten. Uden den falder en manglende rute i tabel 51825 igennem til standardruten, og mail forlader den fysiske forbindelse under et tunneludfald, hvilket er præcis det tilfælde, politikken blev bygget til at forhindre.
Kildeadressen skal passe
Rutens src-præference udfylder kun en kilde for forbindelser, der ikke selv har bundet en. Det er ikke oversættelse, og det tilsidesætter ikke en eksplicit binding, så en dæmon bundet til den fysiske adresse fortsætter med at sende fra den adresse. Hvis det er, hvad du finder, skal du ændre dæmonens egen indstilling eller designe en bevidst oversættelsespolitik, for et sent generelt masquerade er en anden løsning med andre konsekvenser.
Ved gatewayen skal klientens peer autorisere den kilde, den faktisk modtager, altså 10.77.0.2/32 i stedet for et bredt destinationspræfiks. At kopiere klientens 0.0.0.0/0 ind i hver gateway-peer slører, hvilken peer der ejer hvilken trafik. Gatewayen har også brug for videresendelse, en firewallpolitik der tillader strømmen, og en returvej, inklusive udgående oversættelse når upstream ikke kan route en privat tunneladresse.
Kontroller returvejen, derefter persistensen
Læs opslagene, før du stoler på noget, for de viser, hvilken tabel og hvilken kilde hver retning får. Én destination på port 25 og samme destination på port 443 er nok:
ip -4 route get 198.51.100.25 ipproto tcp dport 25
ip -4 route get 198.51.100.25 ipproto tcp dport 443Det første opslag bør angive wg0 og den tilsigtede kilde, og det andet bør beholde den almindelige uplink. Når applikationen binder sin egen adresse, tilføj from med den adresse til opslaget. En svarets retning, der når wg0 og derefter droppes lokalt, peger på IPv4 reverse-path-filtrering, fordi en regel kun for udgående port ikke får det omvendte opslag til at vælge tunnelen.
Hvor asymmetrisk routing er tilladt, kan en grænsefladespecifik loose-tilstand via net.ipv4.conf.wg0.rp_filter=2 være passende, og det er værd at kontrollere det effektive maksimum for all og grænsefladeværdierne først. Slå ikke validering fra globalt som en genvej. Giv derefter tabellen, prioriteterne og vagten til den, der ejer konfigurationen, og åbn friske forbindelser efter en genopkobling for at bekræfte, at valget stadig holder. Husk, at svar fra en lokal SMTP-lytter bærer kildeport 25 i stedet for destinationsport 25, hvilket er et separat politikspørgsmål.