Додавање друге подмреже у VPN између локација: два пута
Тунели засновани на политици траже одговарајуће селекторе са обе стране; они засновани на рути траже руту. Изаберите прави пут и прво поправите повратну руту.
Додавање друге подмреже у тунел између локација који ради траје пет минута у једном дизајну и скоро цело поподне у другом. Када тунел инсталира руте за префиксе које наведете, додате руту и саобраћај је прати. Када преговара један фиксни пар селектора, нови префикс остаје незаштићен док се обе стране не договоре о одговарајућем пару. Три ствари одлучују: шта конфигурација сваке стране заиста описује, да ли се преговарани саобраћај сужава на најмањи одговарајући пар и коме припада повратни пут за нови опсег.
Читајте кернел, не ознаку стања
Тунел који пријављује везу инсталирао је барем једну подређену асоцијацију, али не нужно ону коју мислите. На Linux-у кернел показује шта се примењује: ip xfrm policy наводи парове селектора, а swanctl --list-sas (или старији ipsec statusall) показује шта су стране преговарале, укључујући селекторе саобраћаја у сваком смеру. Ако нови префикс није ни у једном, незаштићен је, шта год каже конфигурациона датотека.
Упоредите са табелом рута. У поставци заснованој на рути тунелски уређај је следећи скок за заштићене префиксе. Поставка заснована на политици често нема посебну руту за удаљену подмрежу, само подразумевану руту, јер саобраћај бира политика, а не табела.
Засновано на политици: обе стране морају навести нови префикс
У терминима strongSwan селектор живи у local_ts и remote_ts унутар подређене конфигурације, наследницима leftsubnet и rightsubnet. Нови префикс мора да се појави на обе стране огледалски: што локација A зове локалним, локација B зове удаљеним. Несклад ретко даје чисту грешку. Стране се сужавају на пресек, стари префикс наставља да ради, а нови тихо пада.
swanctl --load-conns
swanctl --initiate --child <child-name>
swanctl --list-sas
ip xfrm policy
На pfSense или OPNsense то значи други унос Phase 2 који спаја нову локалну подмрежу са новом удаљеном, а затим примену. Задржите стари унос; замена премешта изворну подмрежу уместо да је дода. Ако постојећи Phase 2 већ покрива супермрежу као 0.0.0.0/0 или сажети опсег, не додајте ужи унос поред њега: селектори који се преклапају инсталирају супротстављене политике, а редослед процене одлучује победника.
IKEv1 чини сваки пар подмрежа сопственим Phase 2, а страна која узима један пар по размени одбацује остале. IKEv2 може носити неколико парова селектора у једној подређеној асоцијацији, али само ако их обе имплементације прихвате. Листа из swanctl --list-sas је истина; оно што сте откуцали је захтев.
Засновано на рути: рута је политика
XFRM интерфејс или VTI уређај носи саобраћај према табели рута. Усмерите нови префикс на уређај на обе локације и примењује се стање везано за трансформацију интерфејса. Нема пара селектора за синхронизацију, зато се овај дизајн боље скалира како се подмреже множе. strongSwan водич за прослеђивање детаљније обрађује страну кернела.
ip route add 192.168.60.0/24 dev xfrm0
ip route get 192.168.60.10
WireGuard иде даље. AllowedIPs је истовремено крипто листа дозвола и, преко wg-quick, унос у табели рута. Додајте префикс само на једној страни и добијате руковање, одлазне пакете и тишину, јер удаљена страна одбацује пакете чији извор није на њеној листи. Облик wg set замењује целу листу, зато поновите префиксе који су већ радили или ћете их одсећи:
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
Та друга команда није опциона када сте користили wg set уместо wg-quick. Кернел одмах прихвата нову листу, али ништа јој не додаје руту, па локально створен саобраћај и даље излази кроз подразумевани гејтвеј. То је најчешћи разлог зашто нова WireGuard подмрежа ради са тунелског хоста, а не са лаптопа.
Повратни пут пада чешће од тунела
Хостови на новој удаљеној подмрежи морају да шаљу одговоре назад кроз VPN гејтвеј. Када тај гејтвеј није њихов подразумевани рутер, одговор иде на LAN рутер, који га одбацује или прослеђује на интернет са приватном изворном адресом. Тестирајте са хоста на удаљеној страни, не са гејтвеја: ip route get 10.30.20.15 на Linux-у или Find-NetRoute -RemoteIPAddress 10.30.20.15 у PowerShell-у показује следећи скок који хост заиста користи. Ако одговор није крајња тачка тунела, додајте тамо статичну руту за нови префикс.
Изворни NAT на локацији којој недостаје повратна рута је легитимна алтернатива и начин на који многа hub-and-spoke постављања избегавају да дирају сваки сервер. Примените га и на нови префикс на гејтвеју на страни одредишта:
iptables -t nat -A POSTROUTING -s 10.30.20.0/24 -d 192.168.60.0/24 -j MASQUERADE
Цена је стварна. Удаљени дневници престају да приказују појединачне изворне адресе, а правила заштитног зида везана за изворну подмрежу стапају се у једно правило за гејтвеј. Изаберите то намерно, не зато што је рута недостајала.
Заштитни зидови су друга половина повратног пута. Уређаји засновани на зонама не шире зону постојећег тунелског интерфејса на нову подмрежу аутоматски, а правило написано за стари префикс неће се поклопити. Додајте нову подмрежу у зону или у пар правила у оба смера пре него што оптужите IPsec.
Одлучите са три питања, па проверите саобраћајем
Кратка верзија: наводи ли конфигурација стране префиксе (засновано на политици) или се саобраћај рутира у интерфејс (засновано на рути)? Наводе ли оба краја нови префикс? Постоји ли пут назад од нове подмреже до изворног опсега?
| 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 |
Провера је место где се већина промена затвара прерано. Пинг са гејтвеја доказује мало, јер гејтвеј шаље са себе и често се поклапа са другим правилом него хост. Пингујте са хоста на новој подмрежи, затим покрените апликацију која је изазвала промену и гледајте бројаче, не икону стања.
tcpdump -ni any host 192.168.60.10 and (esp or udp port 4500)
ip xfrm state
wg show
На тунелу заснованом на политици бројачи ip xfrm state треба да расту у оба смера; равни бројачи значе да је пакет рутиран, али није изабран. На WireGuard-у wg show приказује пренос по страни, а руковање са нула примљених бајтова указује на листу удаљене стране или њену повратну руту.
Завршите уписивањем префикса, селектора или руте стране, одлуке о повратном путу и уноса у заштитни зид заједно са остатком инвентара тунела. Затим рестартујте један гејтвеј и тестирајте поново: рута додата ручно нестаје и следећа особа не би требало то поново да открива.