Dodajanje drugega podomrežja v VPN med lokacijama: dve poti
Tuneli na osnovi pravil potrebujejo ujemajoče se selektorje na obeh straneh; tuneli na osnovi poti potrebujejo pot. Izberite pravo pot in najprej popravite povratno pot.
Dodajanje drugega podomrežja v delujoč tunel med lokacijama traja pri eni zasnovi pet minut, pri drugi pa skoraj celo popoldne. Ko tunel namesti poti za navedene predpone, dodate pot in promet ji sledi. Ko se pogaja za en fiksen par selektorjev, nova predpona ostane nezaščitena, dokler se obe strani ne dogovorita za ujemajoči se par. Odločajo tri stvari: kaj konfiguracija vsake strani v resnici opisuje, ali se dogovorjeni promet zoži na najmanjši ujemajoči se par in kdo ima povratno pot za novo območje.
Berite jedro, ne oznako stanja
Tunel, ki poroča o povezavi, je namestil vsaj eno podrejeno asociacijo, ne pa nujno tiste, ki jo pričakujete. V Linuxu jedro pokaže, kaj se uporablja: ip xfrm policy našteje pare selektorjev, swanctl --list-sas (ali starejši ipsec statusall) pa pokaže, o čem sta se strani dogovorili, vključno s selektorji prometa v vsaki smeri. Če nove predpone ni v nobenem, je nezaščitena, ne glede na konfiguracijsko datoteko.
Primerjajte s tabelo usmerjanja. Pri zasnovi na osnovi poti je naprava tunela naslednji skok za zaščitene predpone. Zasnova na osnovi pravil pogosto nima posebne poti za oddaljeno podomrežje, le privzeto pot, ker promet izbira pravilo in ne tabela.
Na osnovi pravil: obe strani morata navesti novo predpono
V izrazoslovju strongSwan selektor živi v local_ts in remote_ts v podrejeni konfiguraciji, naslednikih leftsubnet in rightsubnet. Nova predpona se mora pojaviti na obeh straneh zrcalno: kar lokacija A imenuje lokalno, lokacija B imenuje oddaljeno. Neujemanje redko da čisto napako. Strani se zožita na presek, stara predpona deluje naprej in le nova tiho odpove.
swanctl --load-conns
swanctl --initiate --child <child-name>
swanctl --list-sas
ip xfrm policy
Na pfSense ali OPNsense to pomeni drug vnos Phase 2, ki poveže novo lokalno podomrežje z novim oddaljenim, in nato uporabo. Obdržite stari vnos; zamenjava premakne izvorno podomrežje namesto da bi ga dodala. Če obstoječi Phase 2 že pokriva superomrežje, kot je 0.0.0.0/0, ali povzet obseg, ne dodajajte ob njem ožjega vnosa: prekrivajoči se selektorji namestijo konkurenčna pravila in o zmagovalcu odloči vrstni red vrednotenja.
IKEv1 naredi vsak par podomrežij svoj Phase 2, stran, ki sprejme en par na izmenjavo, pa ostale zavrže. IKEv2 lahko nosi več parov selektorjev v enem podrejenem, a le če jih obe implementaciji sprejmeta. Seznam iz swanctl --list-sas je resnica; kar ste vnesli, je zahteva.
Na osnovi poti: pot je pravilo
Vmesnik XFRM ali naprava VTI nosi promet po tabeli usmerjanja. Novo predpono usmerite na napravo na obeh lokacijah in stanje, vezano na pretvorbo vmesnika, se uporabi. Ni para selektorjev za sinhronizacijo, zato se ta zasnova bolje skalira z naraščanjem podomrežij. strongSwanov vodnik za posredovanje podrobneje obravnava stran jedra.
ip route add 192.168.60.0/24 dev xfrm0
ip route get 192.168.60.10
WireGuard gre dlje. AllowedIPs je hkrati kriptografski seznam dovoljenih in prek wg-quick vnos v tabeli usmerjanja. Dodajte predpono le na eni strani in dobite rokovanje, odhodne pakete in tišino, ker oddaljena stran zavrže pakete, katerih vir ni na njenem seznamu. Oblika wg set zamenja celoten seznam, zato ponovite predpone, ki so že delovale, sicer jih boste odrezali:
wg set wg0 peer <PUBKEY> allowed-ips 192.168.10.0/24,192.168.60.0/24
ip route add 192.168.60.0/24 dev wg0
Ta drugi ukaz ni izbiren, ko ste uporabili wg set namesto wg-quick. Jedro takoj sprejme nov seznam, a nič mu ne doda poti, zato lokalno ustvarjen promet še vedno odhaja skozi privzeti prehod. To je najpogostejši razlog, da novo podomrežje WireGuard deluje z gostitelja tunela in ne s prenosnika.
Povratna pot odpove pogosteje kot tunel
Gostitelji v novem oddaljenem podomrežju morajo odgovore pošiljati nazaj skozi prehod VPN. Ko ta prehod ni njihov privzeti usmerjevalnik, gre odgovor na usmerjevalnik LAN, ki ga zavrže ali posreduje v internet z zasebnim izvornim naslovom. Preizkusite z gostitelja na oddaljeni strani, ne s prehoda: ip route get 10.30.20.15 v Linuxu ali Find-NetRoute -RemoteIPAddress 10.30.20.15 v PowerShellu pokaže naslednji skok, ki ga gostitelj res uporabi. Če odgovor ni končna točka tunela, dodajte tam statično pot za novo predpono.
Izvorni NAT na lokaciji brez povratne poti je legitimna alternativa in način, kako se številne postavitve hub-and-spoke izognejo dotiku vsakega strežnika. Uporabite ga tudi za novo predpono na prehodu na strani cilja:
iptables -t nat -A POSTROUTING -s 10.30.20.0/24 -d 192.168.60.0/24 -j MASQUERADE
Cena je resnična. Oddaljeni dnevniki prenehajo prikazovati posamezne izvorne naslove in pravila požarnega zidu, vezana na izvorno podomrežje, se strnejo v eno pravilo za prehod. Izberite to namerno, ne zato ker je manjkala pot.
Požarni zidovi so druga polovica povratne poti. Naprave na osnovi območij ne razširijo območja obstoječega vmesnika tunela na novo podomrežje samodejno in pravilo, napisano za staro predpono, se ne bo ujemalo. Dodajte novo podomrežje v območje ali v par pravil v obe smeri, preden obtožite IPsec.
Odločite se s tremi vprašanji, nato preverite s prometom
Kratka različica: ali konfiguracija strani navaja predpone (na osnovi pravil) ali se promet usmerja v vmesnik (na osnovi poti)? Ali oba konca navajata novo predpono? Ali obstaja pot nazaj iz novega podomrežja v izvorno območje virov?
| Tunnel style | Where the prefix goes | What breaks if you skip it |
|---|---|---|
| Policy-based IPsec | Selector pair on both peers | Old subnets work, the new one fails with no clear error |
| Route-based XFRM or VTI | Route into the device on both sites | Packets routed but not transformed, or the state never matches |
| WireGuard | AllowedIPs on both peers plus a route | Handshake succeeds, replies are dropped |
| Overlapping supernet | Adjust the existing entry instead | A shadowed policy wins or loses by evaluation order |
Preverjanje je mesto, kjer se večina sprememb zapre prezgodaj. Ping s prehoda dokaže malo, ker prehod pošilja sam od sebe in se pogosto ujema z drugim pravilom kot gostitelj. Pingajte z gostitelja v novem podomrežju, nato zaženite aplikacijo, ki je sprožila spremembo, in glejte števce, ne ikone stanja.
tcpdump -ni any host 192.168.60.10 and (esp or udp port 4500)
ip xfrm state
wg show
Na tunelu na osnovi pravil morajo števci ip xfrm state rasti v obe smeri; ravni števci pomenijo, da je paket usmerjen, a ni izbran. Na WireGuardu wg show poroča o prenosu na stran, rokovanje z nič prejetimi bajti pa kaže na seznam oddaljene strani ali njeno povratno pot.
Končajte z zapisom predpone, selektorja ali poti strani, odločitve o povratni poti in vnosa požarnega zidu skupaj s preostalim inventarjem tunela. Nato znova zaženite en prehod in preizkusite: ročno dodana pot izgine in naslednja oseba je ne bi smela znova odkrivati.