Albei ontwerpe beskerm dieselfde verkeer met dieselfde IPsec-masjinerie, en hulle verskil in wat besluit watter pakkie die tonnel binnegaan. In 'n beleidsgebaseerde verbinding doen die bedingde verkeerskeurders daardie werk; in 'n roetegebaseerde een doen 'n roete wat na 'n tonnelkoppelvlak wys dit. Om die twee te verwar lewer 'n bekende ondersteuningsdraad op waarin die tonnel as gevestig rapporteer terwyl die toepassing niks bereik nie. Die onderskeid maak die meeste saak wanneer jy 'n netwerk byvoeg, 'n roeteringsprotokol laat loop of 'n pad ontfout wat stilweg deur die verkeerde uitgang verlaat.

Twee maniere om te besluit wat die tonnel binnegaan

'n Beleidsgebaseerde VPN bou 'n sekuriteitsbeleid wat bron- en bestemmingsvoorvoegsels pas, en versleutel dan wat inpas. Die eweknie moet versoenbare keurders beding, so die effektiewe omvang eindig as die snyding van wat beide kante voorgestel het. Niks buite daardie snyding word beskerm nie, wat die roetertabel ook al sê.

'n Roetegebaseerde VPN skep 'n koppelvlak wat die tonnel verteenwoordig en laat die roetertabel verkeer daarin stuur. Die IKE-daemon installeer steeds die toestand en die beleid per koppelvlak, dit is die besonderheid wat mense oorslaan wanneer hulle besluit dat roetes versleuteling vervang het. Albei ontwerpe versleutel met IPsec; net die keusemeganisme verskil.

Lees die vergelyking hieronder as 'n stel foutpatrone eerder as 'n puntelys, want geen van die kolomme wen in die abstrakte nie.

AspectPolicy-basedRoute-based
What selects trafficNegotiated selectorsA route into the tunnel interface
Adding a networkEdit selectors on both peersAdd a route, widen the selector once
Dynamic routingAwkward to run over the tunnelRuns over the interface directly
Typical failureTunnel up, host outside the selectorTunnel up, no route or wrong source

Beleidsgebaseerd: die keurder is die kontrak

Keurders word beding, nie bloot opgestel nie. Stel 10.10.0.0/16 aan een kant voor en 10.10.1.0/24 aan die ander, en die assosiasie dek wat die onderhandeling bepaal het terwyl elke ander gasheer daarbuite bly.

Lees die geïnstalleerde toestand eerder as die konfigurasielêer. Op 'n Linux-eweknie is die kernel se eie tabelle die grondwaarheid, en hulle wys wat die onderhandeling oorleef het. 'n Beleid wat die regte voorvoegsels noem sonder bypassende toestand beteken die assosiasie het nooit opgekom nie. Toestand saam met 'n beleid vir die verkeerde voorvoegsel is die teenoorgestelde probleem, en dit lewer die tonnel wat gesond lyk terwyl een subnet niks kan bereik nie.

sudo ip xfrm state
sudo ip xfrm policy
sudo swanctl --list-sas

Vergelyk albei uitsette met die voorvoegsels wat jy dink jy beskerm. Daardie enkele vergelyking los die meeste verslae op van 'n werkende tonnel met 'n onbereikbare bediener. Dit wys ook watter eweknie om te verander, want die wanverhouding is gewoonlik net in een rigting sigbaar.

Roetegebaseerd: die koppelvlak is die kontrak

'n XFRM-koppelvlak gee die tonnel 'n naam en 'n identiteit, en verkeer bereik dit omdat die roetertabel so sê. Verskeie afgeleë voorvoegsels word dan 'n roeteringsprobleem eerder as 'n keurderprobleem, en 'n roeteringsprotokol kan hulle adverteer. Dit is die werklike wins, nie versleuteling nie.

Die koppelvlak verwyder nie die behoefte aan beleid nie. Die daemon installeer reëls per koppelvlak wat aan die koppelvlakidentiteit gebind is, so 'n pakkie wat op die verkeerde koppelvlak aankom, misluk steeds. 'n Bronadres wat die eweknie nie sal aanvaar nie, misluk ook, selfs met 'n perfekte roete. Roetegebaseerd beteken die roete besluit die toegang, nie dat beleid verdwyn het nie.

sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip route add 10.20.0.0/16 dev xfrm0
ip -s link show xfrm0
ip route get 10.20.5.10

Hou die koppelvlaktellers dop sodra die roete in plek is. 'n Roete wat bestaan terwyl die tellers op nul bly, beteken niks word by die tonnel ingepas nie, wat gewoonlik op 'n ontbrekende toestand eerder as 'n ontbrekende roete wys.

Waar die twee ontwerpe werklik verskil

Om 'n netwerk by te voeg is die skoonste toets van watter model by jou pas. 'n Roetegebaseerde ontwerp voeg 'n roete by en verbreed die keurder hoogstens een keer, terwyl 'n beleidsgebaseerde ontwerp voorvoegselpare aan albei kante wysig en weer onderhandel. Twee stabiele subnette maak daardie wysiging triviaal, en twintig maak dit 'n projek.

Geen van die modelle vervang 'n brandmuur nie, en vergelykings stop gewoonlik voor hierdie punt. 'n Wye keurder of 'n breë roete besluit wat versleutel word, nie wat toegelaat word nie.

MTU-gedrag verskil ook in die praktyk. Enkapsulering verminder die bruikbare loonvrag, en 'n roetegebaseerde koppelvlak dra sy eie MTU, so om MSS by albei poorte vas te klem vermy die swartgat-simptoom waar klein antwoorde aankom en groot een verdwyn. Beleidsgebaseerde tonnels tref dieselfde muur van die ander kant, want 'n keurder sê niks oor pakkiegrootte nie. Stel die klem doelbewus in plaas daarvan om die eweknie te blameer.

Migreer sonder om die terugpad te verloor

Teken die bestaande voorvoegselpare aan voordat jy enigiets verander, beweeg dan een toepassingspad en kyk dit van begin tot end. 'n Tonnel wat vestig is nie 'n tonnel wat aanstuur nie, en die verskil verskyn in die antwoordrigting.

Wanneer die eweknieë verbind maar LAN-gashere nie, ondersoek die antwoordroete en die bronadres wat die verre gasheer sal gebruik. 'n Gasheer met twee koppelvlakke kan van die verkeerde een antwoord, en geen keurderwysiging herstel dit nie. Vang verkeer aan albei kante voordat jy algoritmes wysig.

ip route get 10.20.5.10
sudo tcpdump -ni any host 10.20.5.10 and icmp
sudo swanctl --list-conns

Hou 'n bestuurspad wat nie van die tonnel afhang nie terwyl jy werk. Terugrol is makliker wanneer die poort se eie toegang nie op die verbinding ry wat jy ontfout nie.

Verwante artikels