Lei slegs poort 25 in die tonnel, nie die gasheer nie
’n Poortgebaseerde reël stuur slegs uitgaande SMTP deur die tonnel. Die tabel, die bronadres en die terugpad moet elkeen saamstem, anders werk niks.
Vier dinge moet in lyn kom voordat ’n Linux-gasheer net sy eie SMTP deur ’n tonnel stuur: ’n roete in ’n toegewyde tabel, ’n beleidsreël wat die verkeer kies, ’n bronadres wat die eweknie sal aanvaar, en ’n terugpad wat die asimmetrie oorleef. Elkeen is ’n aparte konfigurasie met sy eie foutmodus. Die volgorde hieronder is die een wat ’n fout laat wys na die stuk wat werklik verkeerd is. Dit is ’n poortspesifieke routeringstaak, nie ’n versoek om ’n VPN-standaardroete nie.
’n Poortreël is nie ’n standaardroete nie
’n Reël wat plaaslik gegenereerde TCP met bestemmingspoort 25 pas, stuur daardie verkeer na ’n tabel wat jy noem. Die reël skep op sigself niks: dit kies, en die tabel moet ’n roete hou wat die pakkie kan dra. Die twee saam dek net die uitgaande rigting van een protokol, so aanstuur vir ander gashere, inkomende posverbindings en IPv6 bly buite die reëling. Om dit ’n poortspesifieke beleid eerder as ’n VPN-standaard te noem, hou daardie grens eerlik.
Twee wg-quick-instellings is voorvereistes eerder as deel van die beleid. AllowedIPs = 0.0.0.0/0 laat die eweknie willekeurige IPv4-bestemmings dra, en Table = off keer dat wg-quick sy eie standaardroete vir daardie voorvoegsel installeer. Moenie hierdie instruksies meng met ’n bestuurder wat sy eie roetebeleid toepas nie, want die twee sal verskil oor wie die hoof-tabel besit.
Skryf die roete, die kieser en die wag
Kies ’n tabelnommer en ’n paar prioriteite wat niks anders gebruik, en pas dan die roete, die kieser en die wag in daardie volgorde toe. Die nommers hieronder is voorbeelde, nie gereserveerde waardes nie:
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 beperk die reël tot plaaslik oorsprong verkeer, en ipproto tcp dport 25 identifiseer die rigting van die verbinding; die ip-rule-verwysing dokumenteer beide kiesers. Hulle bestaan op huidige kerne en iproute2-vrystellings, en op ’n ouer stelsel word die reël heeltemal verwerp, wat ’n duideliker fout is as een wat laai en niks pas nie.
Die onbereikbare reël by die volgende prioriteit is die wag. Sonder dit val ’n ontbrekende roete in tabel 51825 deur na die gewone standaard, en pos verlaat die fisiese skakel tydens ’n tonnelonderbreking, wat juis die geval is waarvoor die beleid gebou is.
Die bronadres moet saamstem
Die roete se src-voorkeur vul net ’n bron in vir verbindings wat nie een van hulle eie gebind het nie. Dit is nie vertaling nie, en dit ignoreer nie ’n eksplisiete binding nie, so ’n daemon wat aan die fisiese adres gebind is, bly van daardie adres af stuur. As dit is wat jy vind, verander die daemon se eie instelling of ontwerp ’n doelbewuste vertalingsbeleid, want ’n laat oorkoepelende masquerade is ’n ander oplossing met ander gevolge.
By die gateway moet die kliënt se eweknie die bron magtig wat dit werklik ontvang, dit is 10.77.0.2/32 eerder as ’n breë bestemmingsvoorvoegsel. Om die kliënt se 0.0.0.0/0 in elke gateway-eweknie te kopieer, verwar wie watter verkeer besit. Die gateway het ook aanstuur nodig, ’n firewall-beleid wat die vloei toelaat, en ’n terugpad, insluitend uitgangsvertaling wanneer die opstroom nie ’n private tonneladres kan roeteer nie.
Kontroleer die terugpad, dan die volharding
Lees die opsoeke voordat jy enigiets vertrou, want hulle wys watter tabel en watter bron elke rigting kry. Een bestemming op poort 25 en dieselfde bestemming op poort 443 is genoeg:
ip -4 route get 198.51.100.25 ipproto tcp dport 25
ip -4 route get 198.51.100.25 ipproto tcp dport 443Die eerste opsoek moet wg0 en die beoogde bron noem, en die tweede moet die gewone opkoppeling behou. Wanneer die toepassing sy eie adres bind, voeg from met daardie adres by die opsoek. ’n Antwoordrigting wat wg0 bereik en dan plaaslik laat val word, wys op IPv4 terugpadfiltering, want ’n slegs-uitgaande poortreël maak nie dat die terugsoek die tonnel kies nie.
Waar asimmetriese routering gemagtig is, kan koppelvlakbeperkte los modus deur net.ipv4.conf.wg0.rp_filter=2 gepas wees, en dit is die moeite werd om eers die effektiewe maksimum van die all- en koppelvlakwaardes na te gaan. Moenie validasie as ’n kortpad globaal afskakel nie. Gee dan die tabel, die prioriteite en die wag aan wat ook al die konfigurasie besit, en maak vars verbindings na ’n herverbinding oop om te bevestig die keuse hou steeds. Onthou dat antwoorde van ’n plaaslike SMTP-luisteraar bronpoort 25 dra eerder as bestemmingspoort 25, wat ’n aparte beleidsvraag is.