Карпаратыўны VPN унутры WireGuard: які ўзровень ідзе першым?
Два кліенты на адной машыне працуюць толькі тады, калі знешні тунель нясе ўласнае злучэнне ўнутранага кліента, а метрыкі выбіраюць правільны інтэрфейс для кожнага прэфікса.
Ёсць дзве разумныя прычыны ўкладваць тунелі адзін у адзін на ноўтбуку распрацоўшчыка. Або карпаратыўны кліент павінен выглядаць так, быццам ён прыходзіць з пэўнай краіны, або дзве прыватныя сеткі павінны быць дасягальныя адначасова. У абодвух выпадках знешні тунель павінен несці ўласнае злучэнне ўнутранага кліента.
Запуск двух кліентаў у любым парадку гэтага не дае. Гэта робіць маршрутызацыя.
Параўнайце два магчымыя парадкі
Выберыце знешні ўзровень як тунель, канцавы пункт якога дасягальны з публічнага інтэрнэту. Унутраны ўзровень — гэта тунель, сервер якога адказвае толькі праз гэты выхад. У Windows практычны падзел такі: WireGuard знаружы, карпаратыўны кліент унутры. Вырашальны фактар — кантроль.
Афіцыйны кліент WireGuard прымяняе поўны файл канфігурацыі, уключаючы маршруты і DNS. Камерцыйныя карпаратыўныя кліенты звычайна хаваюць і тое, і іншае. Калі паставіць схаваны кліент знешнім, вам давядзецца здагадвацца пра шлях пад ім.
Зваротны парадак не немагчымы. Проста пра яго цяжэй разважаць, бо знешні кліент перапісвае маршруты па раскладзе, якога вы ніколі не бачыце.
Хай AllowedIPs называе толькі карпаратыўны дыяпазон
AllowedIPs пералічвае пункты прызначэння, якія WireGuard накіроўвае ў тунель. Для ўкладання яму патрэбны толькі адрас унутранага сервера і карпаратыўныя прэфіксы. Усё астатняе застаецца ў лакальнай сетцы, уключаючы прынтары і гіпервізар. Гэта раздзелены тунель па задуме, і ён цалкам пазбягае праблемы выключэння.
Знешняму ўзроўню з поўным тунелем патрэбна 0.0.0.0/0 мінус лакальныя дыяпазоны. Фармат не можа выразіць выключэнне, таму дапаўненне даводзіцца вылічваць і ўстаўляць уручную.
[Interface]
PrivateKey = ...
Address = 10.99.4.2/32
[Peer]
PublicKey = ...
Endpoint = 198.51.100.44:51820
AllowedIPs = 198.51.100.44/32, 10.20.0.0/16, 10.21.0.0/16
Калі ўнутраны кліент не ўсталёўвае свае маршруты, пералічыце карпаратыўныя прэфіксы самі. Прэфікс, які забылі ў гэтым радку, — гэта пункт прызначэння, які знешні тунель ніколі не нясе. Састарэлая копія спіса горш за яе адсутнасць, бо яна ўсё яшчэ выглядае правільна.
Парадак, метрыкі і другі адаптар
Спачатку падключыце знешні тунель, затым запусціце карпаратыўны кліент. Тады яго злучэнне з канцавым пунктам выходзіць праз WireGuard, а не праз лакальны шлюз. Дайце карпаратыўнаму інтэрфейсу ніжэйшую метрыку, каб яго прэфіксы перамагалі для адрасоў, якімі ён валодае.
# which interface currently claims the corporate prefix?
Find-NetRoute -RemoteIPAddress 10.20.10.5 | Select-Object -First 1
# prefer the corporate interface for its own prefixes
Set-NetIPInterface -InterfaceAlias 'Corp VPN' -InterfaceMetric 3
Set-NetIPInterface -InterfaceAlias 'wg-personal' -InterfaceMetric 40
wg show interfaces
Метрыкі — гэта крок, які людзі прапускаюць. Без парадку для перакрыжаванага прэфікса перамагае маршрут, усталяваны апошнім. Гэта змяняецца паміж загрузкамі, таму праблема выглядае перарывістай.
Кліенты на базе OpenVPN 2.6 дадаюць сваю пастку. Калі адаптар выгрузкі канала даных ужо заняты, другі экзэмпляр проста адмаўляецца запускацца. Даданне disable-dco у профіль вяртае да старога шляху TAP, і тады абое працуюць побач.
Дзе ламаецца ўкладзены шлях
Адключэнне знешняга тунеля забівае ўнутраны. Паўторнае падключэнне аднаго ўнутранага кліента часта адпраўляе яго проста ў інтэрнэт, ціха здымаючы ўкладанне. Правярайце паслядоўнасць з нуля кожны раз, пачынаючы з абодвух спыненьх тунеляў.
Чакайце меншы карысны MTU. Кожны ўзровень дадае накладныя выдаткі, таму пара для старту каля 1420 і 1400 — гэта месца, з якога можна пачаць. Перадача, якая завісае на вялікіх пакетах, пакуль малыя запыты праходзяць, — звычайная прыкмета. Карпаратыўная палітыка — другі мяжа, бо кліент, які патрабуе кіраванай прылады, можа лічыць укладзены шлях парушэннем.
Калі абодва канцы — фіксаваныя сеткі, тунель паміж шлюзамі «сайт-сайт» прыбірае праблему парадку замест таго, каб ёю кіраваць. На адным ноўтбуку два тунелі суіснуюць толькі тады, калі кожны мае свой інтэрфейс і правіла, якое выбірае пункты прызначэння па прэфіксе.