Маршрут по подразбиране в XFRM погълна IKE и ESP: запазете външния път
Политика, която защитава всичко, може да улови и пакетите, които поддържат тунела. Маркирайте IKE и ESP или оставете маршрут към партньора.
Трафикът е защитен, тунелът работи и после умира при следващото обновяване на ключовете. Маршрутът по подразбиране през интерфейса XFRM описваше трафика, който искахте да защитите. Той също погълна пакетите, нужни, за да продължи да го защитава.
Двете участващи дестинации не са взаимозаменяеми. Маршрутизацията трябва да го каже изрично.
Къде всъщност отива търсенето на партньора
Запишете активните правила, таблицата, която държи маршрута XFRM, и публичния адрес на партньора. След това вижте пътя, който външната връзка би поела с реалния си източник и маркировка. Обща дестинация не ви казва нищо за този път за управление. Само действителните източник и маркировка дават полезен отговор.
Успешната първоначална връзка също доказва малко. Отказът често се появява, след като инсталирането на маршрут промени отговора. Стартирането успява, а след това първото обновяване не успява.
ip rule show
ip route show table 220
ip -4 route get 198.51.100.44 from 10.40.0.2
ip xfrm policy list
Ако търсенето за партньора попада в интерфейса XFRM, външните пакети се насочват в тунела, който те изграждат. Това е цикълът, видим с една команда.
Опции за изключване на съвременен шлюз
Документацията на strongSwan за VPN, базиран на маршрутизация дава два практични отговора. Единият маркира IKE и ESP, така че правилото, сочещо към таблицата XFRM, да не съвпада с тях. Другият оставя маршрут към партньора или изключване, до което търсенето все още може да стигне.
Вземете това, което вашият набор правила може да изрази без странични ефекти. Маркировката е чиста, когато останалата част от стека вече използва маркировки. Тя е опасна, когато същата маска означава нещо друго в друго правило. И двата типа пакети така или иначе се нуждаят от обработката.
Маркирането само на IKE оставя пакетите с данни на прихванатия път. Това създава тунел, който прави ръкостискане и след това не носи нищо.
Маркировката е един бит в fwmark на пакета, който нищо друго на шлюза не претендира: 0x1 с маска 0x1 е обичайният избор и трябва да се зададе на две места, за да работи изключването. Charon я иска на сокета IKE, а настройките за входяща и изходяща маркировка на дъщерната връзка се нуждаят от същата стойност, за да излизат инкапсулираните пакети също маркирани. Маска 0x1 вместо 0xffffffff оставя останалите битове свободни, което има значение, когато друга подсистема вече маркира пакети на същия хост. Когато и двете са зададени, правилото се записва като изключване, така че маркираните пакети пропускат таблицата с маршрута XFRM и преминават към основната таблица:
ip rule add not fwmark 0x1/0x1 lookup 220 pref 1000
ip -4 route get 198.51.100.44 from 10.40.0.2 mark 0x1
След това прочетете отговора с приложена маркировка. Без нея преглеждате пътя, който защитеният трафик поема, а това е обратното на въпроса в този раздел.
Какво предполага автоматичната инсталация за изграждането
Автоматично инсталиране на маршрут за интерфейс XFRM зависи от версията на strongSwan и нейната конфигурация. Идентификаторът на интерфейса, инсталираната политика и асоциацията трябва да сочат към предвидените обекти. Несъответствието се проявява като маршрут, който тихо сочи някъде реално.
Копирането на номер на таблица или на маска за маркиране от друг шлюз е начинът, по който започват сблъсъците. Първо проверете какво вече го използва. Сблъсъкът засяга трафик далеч отвъд тунела, който сте искали да промените, и симптомът рядко сочи към копието.
Промените на адреса на партньора са част от дизайна. Маршрут до хост за вчерашния адрес не е план за възстановяване на крайната точка, докато маркировката издържа на тази промяна.
Наблюдавайте първото обновяване
Проверете външния път, след като защитените маршрути са инсталирани, а не преди това. След това наблюдавайте следващото обновяване и един обмен на приложение. Отказът обикновено се появява при този преход, а не при стартирането.
ip -4 route get 198.51.100.44
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or esp'
Временното премахване на защитения маршрут по подразбиране обикновено възстановява връзката. Този резултат е диагностичен, не окончателен.
Целта е стабилно разделяне между вътрешния трафик и външните пакети, които го носят. Запишете избрания механизъм и неговата таблица или маркировка в бележките на шлюза. Иначе следващият човек, който пипне правилата, ще върне цикъла.