ВПН између локација заснован на рутама наспрам оног заснованог на политикама: шта се разликује
ИПсец заснован на политикама бира саобраћај селектором; онај заснован на рутама шаље га кроз интерфејс тунела. Оба и даље траже правила заштитног зида и повратну руту.
Оба решења штите исти саобраћај истом ИПсец машинеријом, а разликују се по томе шта одлучује који пакет улази у тунел. У вези заснованој на политикама то раде договорени селектори саобраћаја; у вези заснованој на рутама то ради рута која показује на интерфејс тунела. Мешање двају ствара познату нит за подршку у којој тунел пријављује да је успостављен, а апликација не стиже никуда. Разлика је најважнија када додајете мрежу, покрећете протокол рутирања или отклањате грешку на путу који тихо излази на погрешном излазу.
Два начина да одлучите шта улази у тунел
ВПН заснован на политикама гради безбедносну политику која се поклапа са префиксима извора и одредишта, а затим шифрује све што се уклопи. Друга страна мора да договори компатибилне селекторе, па делотворни обухват на крају постаје пресек онога што су обе стране предложиле. Ништа изван тог пресека није заштићено, шта год таблица рутирања каже.
ВПН заснован на рутама ствара интерфејс који представља тунел и пушта таблицу рутирања да шаље саобраћај у њега. ИКЕ демон и даље инсталира стање и политику по интерфејсу, а то је детаљ који људи прескачу када одлуче да су руте замениле шифровање. Оба решења шифрују ИПсец-ом; разликује се само механизам избора.
Читајте поређење испод као скуп потписа квара, а не као табелу резултата, јер ниједна колона не побеђује сама по себи.
| Aspect | Policy-based | Route-based |
|---|---|---|
| What selects traffic | Negotiated selectors | A route into the tunnel interface |
| Adding a network | Edit selectors on both peers | Add a route, widen the selector once |
| Dynamic routing | Awkward to run over the tunnel | Runs over the interface directly |
| Typical failure | Tunnel up, host outside the selector | Tunnel up, no route or wrong source |
Заснован на политикама: селектор је уговор
Селектори се договарају, не само конфигуришу. Предложите 10.10.0.0/16 са једне стране и 10.10.1.0/24 са друге, и асоцијација ће покрити оно на чему су преговори стали, док сваки други домаћин остаје изван.
Читајте инсталирано стање уместо конфигурационе датотеке. На Linux партнеру сопствене таблице кернела су основна истина и показују шта је преживело преговоре. Политика која именује исправне префиксе без одговарајућег стања значи да се асоцијација никада није подигла. Стање упаренo са политиком за погрешан префикс је супротан проблем и ствара тунел који изгледа здраво док једна подмрежа не стиже никуда.
sudo ip xfrm state
sudo ip xfrm policy
sudo swanctl --list-sas
Упоредите оба излаза са префиксима за које мислите да их штитите. То једно поређење решава већину пријава о тунелу који ради са недоступним сервером. Оно такође показује коју страну треба променити, јер се неусаглашеност обично види само у једном смеру.
Заснован на рутама: интерфејс је уговор
ИФРМ интерфејс даје тунелу име и идентитет, а саобраћај стиже до њега јер таблица рутирања тако каже. Неколико удаљених префикса тада постаје проблем рутирања, а не проблем селектора, и протокол рутирања може да их оглашава. То је права корист, а не шифровање.
Интерфејс не уклања потребу за политиком. Демон инсталира правила по интерфејсу везана за идентитет интерфејса, па пакет који стигне на погрешан интерфејс и даље не пролази. Изворна адреса коју друга страна неће прихватити такође не пролази, чак и са савршеном рутом. Заснован на рутама значи да рута одлучује о улазу, а не да је политика нестала.
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
Пратите бројаче интерфејса када рута буде на месту. Рута постоји, а бројачи стоје на нули, што значи да се ништа не уклапа у тунел, и то обично указује на стање које недостаје, а не на руту која недостаје.
Где се та два решења заиста разилазе
Додавање мреже је најчистији тест који вам модел одговара. Решење засновано на рутама додаје руту и највише једном проширује селектор, док решење засновано на политикама уређује парове префикса на обе стране и поново преговара. Две стабилне подмреже чине то уређивање тривијалним, а двадесет га претварају у пројекат.
Ниједан модел не замењује заштитни зид, и поређења се обично заустављају пре ове тачке. Широк селектор или широка рута одлучују шта се шифрује, а не шта је дозвољено.
Понашање МТУ-а се такође разликује у пракси. Инкапсулација смањује корисни терет, а интерфејс заснован на рутама носи сопствени МТУ, па причвршћивање МСС-а на оба пролаза избегава симптом црне рупе у којем мали одговори стижу, а велики нестају. Тунели засновани на политикама сусрећу исти зид са друге стране, јер селектор ништа не каже о величини пакета. Поставите причвршћивање намерно уместо да кривите другу страну.
Миграција без губитка повратног пута
Забележите постојеће парове префикса пре него што било шта промените, затим преместите једну путању апликације и посматрајте је од почетка до краја. Тунел који се успостави није тунел који прослеђује, а разлика се појављује у смеру одговора.
Када се стране повежу, а домаћини ЛАН-а не могу, проверите повратну руту и изворну адресу коју ће удаљени домаћин користити. Домаћин са два интерфејса може да одговори са погрешног, и никаква промена селектора то не поправља. Снимите саобраћај на оба краја пре уређивања алгоритама.
ip route get 10.20.5.10
sudo tcpdump -ni any host 10.20.5.10 and icmp
sudo swanctl --list-conns
Задржите путању управљања која не зависи од тунела док радите. Враћање је лакше када приступ самог пролаза не иде преко везе коју отклањате.