И двата дизайна защитават същия трафик със същата машина IPsec и се различават по това какво решава кой пакет влиза в тунела. При политиково базираната връзка това правят договорените селектори на трафик; при маршрутно базираната го прави маршрут, сочещ към тунелен интерфейс. Объркването между двете дава позната тема в поддръжката, в която тунелът се отчита като установен, а приложението не достига до нищо. Разликата е най-важна, когато добавяте мрежа, пускате протокол за маршрутизация или отстранявате проблем в път, който тихо излиза през грешния изход.

Два начина да решите какво влиза в тунела

Политиково базираният VPN изгражда политика за сигурност, която съвпада с префиксите на източника и дестинацията, после криптира всичко, което пасне. Партньорът трябва да договори съвместими селектори, затова ефективният обхват се оказва сечението на предложеното от двете страни. Нищо извън това сечение не е защитено, каквото и да казва таблицата за маршрутизация.

Маршрутно базираният VPN създава интерфейс, който представлява тунела, и позволява на таблицата за маршрутизация да изпраща трафик в него. Демонът IKE все още инсталира състоянието и политиката за всеки интерфейс — това е подробността, която хората пропускат, когато решат, че маршрутите са заменили криптирането. И двата дизайна криптират с IPsec; различава се само механизмът за избор.

Четете сравнението по-долу като набор от признаци на отказ, а не като таблица с точки, защото никоя колона не печели сама по себе си.

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

Политиково базиран: селекторът е договорът

Селекторите се договарят, а не просто се настройват. Предложете 10.10.0.0/16 от едната страна и 10.10.1.0/24 от другата и асоциацията ще покрие това, за което се е разбрал преговорът, докато всеки друг хост остава извън нея.

Четете инсталираното състояние, а не конфигурационния файл. При Linux партньор собствените таблици на ядрото са основната истина и показват какво е оцеляло след преговорите. Политика, която назовава правилните префикси без съответстващо състояние, означава, че асоциацията никога не се е вдигнала. Състояние, съчетано с политика за грешен префикс, е обратният проблем и произвежда тунел, който изглежда здрав, докато една подмрежа не може да достигне до нищо.

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

Сравнете двата изхода с префиксите, които смятате, че защитавате. Това единствено сравнение решава повечето сигнали за работещ тунел с недостъпен сървър. То показва и кой партньор да промените, защото несъответствието обикновено се вижда само в една посока.

Маршрутно базиран: интерфейсът е договорът

Интерфейсът XFRM дава на тунела име и идентичност и трафикът го достига, защото таблицата за маршрутизация така казва. Няколко отдалечени префикса тогава стават проблем на маршрутизацията, а не на селектора, и протокол за маршрутизация може да ги анонсира. Това е истинската печалба, не криптирането.

Интерфейсът не премахва нуждата от политика. Демонът инсталира правила за всеки интерфейс, вързани към идентичността на интерфейса, така че пакет, пристигнал на грешния интерфейс, пак се проваля. Адрес на източника, който партньорът няма да приеме, също се проваля, дори с перфектен маршрут. Маршрутно базиран означава, че маршрутът решава влизането, а не че политиката е изчезнала.

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

Наблюдавайте броячите на интерфейса, след като маршрутът е на място. Маршрут, който съществува, докато броячите стоят на нула, означава, че нищо не се съпоставя в тунела, което обикновено сочи към липсващо състояние, а не към липсващ маршрут.

Къде двата дизайна действително се разминават

Добавянето на мрежа е най-чистият тест кой модел ви подхожда. Маршрутно базираният дизайн добавя маршрут и най-много веднъж разширява селектора, докато политиково базираният редактира двойки префикси на двата партньора и преговаря наново. Две стабилни подмрежи правят тази редакция тривиална, а двадесет я превръщат в проект.

Нито един модел не заменя защитна стена и сравненията обикновено спират преди тази точка. Широкият селектор или широкият маршрут решава какво се криптира, не какво е разрешено.

Поведението на MTU също се различава на практика. Инкапсулацията намалява полезния товар и маршрутно базираният интерфейс носи собствен MTU, затова ограничаването на MSS на двата шлюза избягва симптома на черната дупка, при който малките отговори пристигат, а големите изчезват. Политиковите тунели срещат същата стена от другата страна, защото селекторът не казва нищо за размера на пакета. Задавайте ограничението нарочно, вместо да обвинявате партньора.

Мигриране без загуба на обратния път

Запишете съществуващите двойки префикси, преди да промените каквото и да е, после преместете един път на приложение и го проследете от край до край. Тунел, който се установява, не е тунел, който препраща, и разликата се появява в посоката на отговора.

Когато партньорите се свържат, а хостовете в LAN не могат, проверете обратния маршрут и адреса на източника, който далечният хост ще използва. Хост с два интерфейса може да отговори от грешния и никоя промяна на селектора не поправя това. Заснемете трафик в двата края, преди да редактирате алгоритми.

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

Поддържайте път за управление, който не зависи от тунела, докато работите. Връщането назад е по-лесно, когато собственият достъп на шлюза не се вози на връзката, която отстранявате.

Подобни статии