Усталяванне сцяга multicast на прыладзе WireGuard робіць інтэрфейс прыдатным для праграм выяўлення, і на гэтым дзеянне сцяга сканчаецца. Ён не паведамляе пратаколу, куды павінен ісці пакет групы, а на прыладзе з некалькімі пірамі няма аднаго відавочнага адказу. Паміж працуючым дэманам і выяўленай службай стаяць тры асобныя брамы.

Правярайце іх па парадку, бо праходжанне адной нічога не кажа пра наступную.

Брама першая: сцяг і палітыка дэмана

Прылада WireGuard у Linux ствараецца як злучэнне пункт-пункт без ARP і па змаўчанні не нясе сцяг multicast. Даданне сцяга — гэта лакальнае змяненне інтэрфейсу, якое выконвае тое, што кіруе прыладай. Avahi мае ўласны погляд на свет па-над гэтым, і яго палітыка па змаўчанні цалкам прапускае інтэрфейсы пункт-пункт. Таму перад рухам хоць аднаго пакета прымяняюцца два незалежныя тэсты прыдатнасці.

Такім чынам, дэману патрэбна відавочнае рашэнне, а не проста працэс, які выконваецца. Яго дакументаваныя сродкі кіравання ўключаюць allow-interfaces, deny-interfaces і allow-point-to-point, і менавіта апошні настрой людзі прапускаюць.

Праверкі ніжэй паведамляюць сцягі злучэння, маршрут multicast і тое, ці разбіраецца канфігурацыя дэмана наогул:

ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check

Дэман, які паспяхова запусціўся, не абавязкова адкрыў сокеты на патрэбным вам інтэрфейсе. Чытайце яго эфектыўную канфігурацыю, а не меркавайце, што статус службы роўны пакрыццю.

Брама другая: маршрут да групы

Другая брама — звычайная маршрутызацыя. Пакет, адрасаваны 224.0.0.251, ідзе па табліцы перасылкі, як і ўсё астатняе, і калі табліца адпраўляе яго праз фізічны інтэрфейс LAN, то ніякая канфігурацыя WireGuard гэтага не зменіць. Выпраўце маршрут спачатку, і астатняе расследаванне стане карацейшым. Паглядзіце, што ядро паведамляе пра адрас групы, перш чым кранаць ключы піраў.

ObservationGate it belongs toWhat it does not prove
Multicast flag present on wg0Interface eligibilityThe daemon will use the interface
Route to the group via wg0ForwardingAny peer will receive it
Destination inside a peer's allowed listPeer selectionThat peer's network will answer

Без пэўнага маршруту ядро вяртаецца да ўласнай апрацоўкі multicast злучэння, і таму па змаўчанні ўсё выглядае правільна ў плоскай LAN і няправільна, як толькі той жа групавы трафік павінен выйсці праз тунель. Збой незаўважны з боку адпраўніка: запыт кудысьці ідзе, а адказ ніколі не прыходзіць.

Брама трэцяя: WireGuard выбірае аднаго піра на пакет

WireGuard выбірае выходнага піра, шукаючы пункт прызначэння ў наборах дазволеных адрасоў, і шлях перадачы Linux выконвае гэты пошук адзін раз на пакет. Вынік адзін, і пакет шыфруецца для гэтага піра. Адзін і той жа прэфікс групы ў дазволеных спісах некалькіх піраў не стварае членства або рэплікацыі; ён стварае няпэўны пошук, які вырашаецца на адным з іх.

На аддадзеным злучэнні з двума канцамі гэта менавіта тое, што трэба, бо ёсць адзін прызначаны атрымальнік для наўмысна перанесенага групавога трафіку. На інтэрфейсе з пяццю пірамі гэта абмежаванне, а не магчымасць, і выпраўленне належыць дызайну, а не канфігурацыі асобнага піра.

Дызайн з разгалінаваннем патрабуе відавочнага рэтранслятара, асобных злучэнняў або зусім іншага механізму выяўлення. Публікацыя рэцэпту для двух канцоў як рашэння для мноства кліентаў таму, што кожны кліент можа праверыць шлюз, — гэта спосаб разгарнуць гэта няправільна.

Уваходны кірунак правяраецца інакш: крыніца атрыманага пакета павінна трапляць у дазволены спіс аўтэнтыфікаванага піра. Даданне туды прызначэння multicast не замяняе рэальнага валодання крыніцай адпраўніка.

Адлюстраванне — гэта мяжа, а не мост

Адбівальнік Avahi узнаўляе паведамленні mDNS паміж выбранымі ім інтэрфейсамі на прыкладным узроўні. Гэта мяжа выяўлення паміж сеткамі, а не Ethernet-мост і не агульны multicast-маршрутызатар. Два адбівальнікі, далучаныя да адных і тых жа сетак, лёгка ствараюць пятлю паўторных аб'яў.

Адлюстраванне таксама перадае імёны службаў і іх метаданыя ў іншую сетку, што з'яўляецца рашэннем аб прыватнасці не менш, чым рашэннем аб маршрутызацыі. Абмяжуйце выбраныя інтэрфейсы і выкарыстоўвайце фільтры службаў там, дзе ўсталяваная версія іх падтрымлівае, каб мяжу перасякалі толькі аб'явы, патрэбныя ўпаўнаважанаму карыстальніку.

Выяўленне і выкарыстанне застаюцца асобнымі вынікамі. Кліент можа бачыць аб'яву службы, адрас якой недасягальны з месца, дзе знаходзіцца кліент, або порт якой адхіляе яго палітыка доступу. Пацвердзіце злучэнне са службай пасля з'яўлення аб'явы, і калі праграма падтрымлівае стабільнае імя DNS або відавочны адрас сервера, аддавайце перавагу ім перад пашырэннем лакальнага выяўлення злучэння. Апісанне маршрутызацыі крыптаключа ахоплівае выбар піра па пункце прызначэння, ад якога ўсё гэта залежыць.

Падобныя артыкулы