WireGuard AllowedIPs: маршрут, які NetworkManager так і не дадаў
Сапраўдны профіль WireGuard можа завяршыць рукапацісканне і ўсё роўна нічога не адпраўляць. Параўнайце табліцу ядра з AllowedIPs, затым дайце шляху маршруту аднаго ўладальніка.
Лічыльнік рукапаціскання абнаўляецца, інтэрфейс захоўвае свой адрас, а ping на другі бок нідзе не з’яўляецца. Такое спалучэнне блытае людзей, бо працоўнае рукапацісканне выглядае як доказ таго, што тунель гатовы. Гэта не так: тунель можа быць цалкам узгоднены і ўсё роўна не мець маршруту, які накіроўвае трафік у яго, і гэта два асобныя заданні, якія выконваюць два асобныя кавалкі стану. Выпраўленне цалкам залежыць ад таго, чаго з двух не хапае, таму першы крок — гэта высветліць.
wg-quick выконвае абодва без просьбы. Убудаваная падтрымка WireGuard у NetworkManager таксама па змаўчанні ўсталёўвае маршруты да піраў, што звужае падазроных да адключанай опцыі, іншай табліцы маршрутызацыі або канфігурацыі, імпартаванай праз нешта іншае.
Пацвердзіце тунель, перш чым гнацца за маршрутам
wg show друкуе інтэрфейс, піра, канчатковы пункт і ўзрост апошняга рукапаціскання, а ip addr show пацвярджае, што адрас прысутнічае. Нядаўняе рукапацісканне азначае, што ключы, канчатковы пункт і шлях UDP працуюць. Усё, што зламана, знаходзіцца ніжэй за іх: маршрутызацыя, фільтраванне або развязанне імёнаў.
Затым спытайце ядро, што яно зробіць з сапраўдным пунктам прызначэння замест гіпатэтычнага: ip route get 10.42.7.9. Адказ называе зыходны інтэрфейс і адрас крыніцы, які панясе пакет. Калі ён называе фізічны адаптар, пакет ніколі не ўваходзіць у тунель, як бы здарова не выглядала рукапацісканне.
AllowedIPs — гэта фільтр і спіс маршрутаў
Прэфіксы ў AllowedIPs выконваюць дзве працы. Яны выбіраюць, які пір нясе зыходны пункт прызначэння, і яны правяраюць адрас крыніцы ўваходных пакетаў, што і ёсць мяжа маршрутызацыі па крыптаключы. У wg-quick яны таксама кіруюць аўтаматычнай устаноўкай маршрутаў, і менавіта гэтая дадатковая паводзіна тлумачыць, чаму адна і тая ж канфігурацыя працуе з тэрмінала, а не з настольнага кліента.
У выпадку, які стаіць за гэтым артыкулам, профіль быў імпартаваны праз старонні плагін, а не праз убудавую падтрымку, і інтэрфейс узняўся без маршруту прэфікса. Пералік табліцы паказвае гэта адразу: ip route show змяшчае толькі падключаны маршрут для адраса інтэрфейса, і нічога для аддаленага дыяпазону.
Спытайце, ці ўключаны маршруты да піраў наогул
Прачытайце наладу, перш чым нешта змяняць: nmcli -f wireguard.peer-routes,ipv4.route-table connection show work-wg. Калі peer-routes паказвае no, падтрыманае выпраўленне — nmcli connection modify work-wg wireguard.peer-routes yes, а затым перападключэнне. Даданне статычнага маршруту замест гэтага працуе да наступнай актывацыі і потым ціха знікае. Гэтае знікненне і ёсць прыкмета: маршрут, які кожную раніцу вяртаецца як загадка, не ўсталёўваецца профілем.
Калі опцыя ўжо ўключана, праверце, ці жыве прэфікс у іншай табліцы, з дапамогай ip route show table all | grep 10. Маршрут у неасноўнай табліцы не адсутнічае, ён проста нябачны для пошуку, які звяртаецца толькі да асноўнай табліцы. Выпраўце палітычную маршрутызацыю, а не навальвайце зверху дублікат запісу.
Дадайце прэфікс да злучэння, а не да працуючай сістэмы
У рэдактары злучэнняў старонка WireGuard трымае піра і яго AllowedIPs, а старонка IPv4 трымае дадатковыя маршруты. Маршрут, дададзены там, перажывае перападключэнні, бо належыць профілю. У камандным радку эквівалент — далучыць маршрут да злучэння ў форме з пустым шлюзам, а затым апусціць і падняць злучэнне, каб змена прымянілася.
Выберыце самы вузкі прэфікс, які пакрывае патрэбныя вам хасты. Капіраванне прыкладу /8 ад правайдэра можа праглынуць лакальныя дыяпазоны, якія выпадкова апынуліся ўнутры, і выніковыя збоі выглядаюць як зламаны тунель, а не як занадта шырокі маршрут.
Раздзельнае тунеляванне вызначаецца спісам прэфіксаў
Перамыкача раздзельнага тунелю няма; рашэнне — гэта спіс прэфіксаў. Пір з адным дыяпазонам для офіснай LAN і адным для лабараторнай сеткі адпраўляе менавіта гэтыя пункты прызначэння праз тунель, а ўсё астатняе пакідае ў спакоі. Адзін хаст патрабуе /32, а дыяпазоны, што перакрываюцца на двух пляцоўках, патрабуюць прэфіксаў хастаў, пакуль хтосьці не перанумаруе падсетку.
Выбар не адпраўляць нічога праз тунель даводзіць тое ж рашэнне да мяжы: мінімальны спіс пакідае канал узнятым, пакуль звычайны трафік ідзе сваім звыклым шляхам. Запішыце намер, бо наступны чытач інакш палічыць кароткі спіс недаглядам і паслужліва яго пашырыць.
Адзін уладальнік для табліцы маршрутаў
wg-quick і NetworkManager абодва вераць, што валодаюць маршрутамі інтэрфейса. Імпартуйце канфіг, напісаны для wg-quick, а потым яшчэ і запусціце службу wg-quick, і вы атрымаеце дубляваныя або канфліктныя запісы, паводзіны якіх залежыць ад таго, які з іх запусціўся апошнім. Выберыце аднаго ўладальніка і выдаліце іншага: калі NetworkManager кіруе злучэннем, адключыце юніт wg-quick для гэтага інтэрфейса і ніколі не дадавайце другі профіль для той жа прылады.
Калі раздзяленне павінна ісці за фізічным адаптарам, а не за пунктам прызначэння, вы перайшлі ў палітычную маршрутызацыю, а палітычная маршрутызацыя таксама патрабуе аднаго аўтара. Праверце, паўтарыўшы ip route get, а затым дасягнуўшы хаста ўнутры аддаленага прэфікса чымсьці, што друкуе выбраны ім адрас крыніцы. Праверце IPv6 і DNS асобна, калі профіль нясе любое з іх.