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

Адзін шлях перасылае пакеты за кагосьці іншага; другі дастаўляе іх самому хосту.

Пакет, адрасаваны хосту, застаецца ў хосце

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

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

Чаму ip_forward не прымяняецца

Перасылка кіруе пакетамі, якія павінны выйсці праз іншы інтэрфейс, чым той, на які яны прыйшлі. Пінг да самога хоста ніколі не ідзе гэтым шляхам: пакет спажываецца лакальна, і адказ генеруецца лакальна. Таму ўстаноўка net.ipv4.ip_forward=0 тут нічога не змяняе, і правіла ў ланцугу перасылкі ніколі не бачыць трафік. Правільны кантроль знаходзіцца на шляху ўводу, абмежаваны ўваходным інтэрфейсам або крыніцай.

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

Прачытайце лакальную табліцу, якая вырашыла

ip rule show звычайна паведамляе пра правіла з прыярытэтам нуль, якое накіроўвае ўсе пошукі спачатку ў лакальную табліцу, а ip route show table local пералічвае ўласныя адрасы хоста з лакальнай сферай. Гэтая табліца ўключае адрасы на інтэрфейсах, якія адміністрацыйна выключаныя, але ўсё яшчэ наладжаныя. Адрасы IPv4, прызначаныя статычна, звычайна перажываюць разрыў злучэння, і менавіта таму пінг да выключанага моста можа ўсё яшчэ паспяхова прайсці і здзівіць аператара.

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

Што пір насамрэч дасягае

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

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

Праверце таксама адрасы, якія вы мелі намер вывесці з эксплуатацыі. Выдаленне адраса з інтэрфейса надзейнейшае за накладанне правілаў міжсеткавага экрана на састарэлы адрас.

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