Пір VPN пінгуе іншыя інтэрфейсы, бо яны лакальныя
Лакальная табліца маршрутызацыі адпраўляе пакеты на любы адрас, якім валодае хост, на якім бы інтэрфейсе ён ні знаходзіўся. Налады перасылкі ніколі не ўваходзяць на гэты шлях.
Кліент WireGuard падключаецца і пінгуе адрас на цалкам іншым інтэрфейсе, і адказ прыходзіць. Запісы паказваюць запыт толькі на тунелі. Нішто не зламана, і налада перасылкі, якую старанна адключылі, тут ні пры чым. Гэта параўнанне двух шляхоў, якія выглядаюць падобна на схеме і цалкам розныя ў ядры.
Адзін шлях перасылае пакеты за кагосьці іншага; другі дастаўляе іх самому хосту.
Пакет, адрасаваны хосту, застаецца ў хосце
Аддалены кліент адпраўляе IP-пакет на адрас, якім валодае хост. Маршрутызацыя задае адно пытанне пра гэты пакет: ці гэты пункт прызначэння лакальны? Кожны адрас, які трымае хост, з'яўляецца ў лакальнай табліцы маршрутызацыі, і гэтая табліца праглядаецца раней за асноўную, таму пакет ідзе ва ўласны стек хоста, а не выходзіць праз іншы інтэрфейс. Адказ генеруецца лакальна, і ён вяртаецца праз тунель, бо менавіта адтуль прыйшоў запыт.
Вось і ўвесь механізм. Ніякай перасылкі не адбываецца, ніякіх змен стану інтэрфейса не ўдзельнічае, і адрас, пра які ідзе гаворка, не павінен быць дасяжным з некулькі іншага месца.
Чаму ip_forward не прымяняецца
Перасылка кіруе пакетамі, якія павінны выйсці праз іншы інтэрфейс, чым той, на які яны прыйшлі. Пінг да самога хоста ніколі не ідзе гэтым шляхам: пакет спажываецца лакальна, і адказ генеруецца лакальна. Таму ўстаноўка net.ipv4.ip_forward=0 тут нічога не змяняе, і правіла ў ланцугу перасылкі ніколі не бачыць трафік. Правільны кантроль знаходзіцца на шляху ўводу, абмежаваны ўваходным інтэрфейсам або крыніцай.
Менавіта таму адключэнне перасылкі і здагадка, што хост ізаляваны, ствараюць ілжывае пачуццё бяспекі.
Прачытайце лакальную табліцу, якая вырашыла
ip rule show звычайна паведамляе пра правіла з прыярытэтам нуль, якое накіроўвае ўсе пошукі спачатку ў лакальную табліцу, а ip route show table local пералічвае ўласныя адрасы хоста з лакальнай сферай. Гэтая табліца ўключае адрасы на інтэрфейсах, якія адміністрацыйна выключаныя, але ўсё яшчэ наладжаныя. Адрасы IPv4, прызначаныя статычна, звычайна перажываюць разрыў злучэння, і менавіта таму пінг да выключанага моста можа ўсё яшчэ паспяхова прайсці і здзівіць аператара.
IPv6 разыходзіцца менавіта ў гэтым пункце. Яго адрасы звычайна забіраюцца, калі злучэнне разрываецца, калі не ўстаноўлена keep_addr_on_down. Параўноўвайце сямействы, а не здагадвайце, што адно правіла пакрывае абодва.
Што пір насамрэч дасягае
Адказ з уласнага адраса маршрутызатара на сегменце нічога не кажа пра машыны за гэтым сегментам. Пір не можа дасягнуць хоста за іншым інтэрфейсам гэтым шляхам; ён дасягае толькі адрасы, якімі валодае сам маршрутызатар. Тэставанне службы на асобным хосце LAN, а не пінг адраса маршрутызатара, устанаўлівае, ці дазволена перасылка наогул.
Абмежаванне піра паслугамі, прывязанымі да адраса тунеля, — гэта пытанне палітыкі ўводу. Дазвольце патрэбную паслугу на інтэрфейсе тунеля і абмяжуйце крыніцы, якім можна ёю карыстацца, бо пакет сапраўды прыходзіць туды.
Праверце таксама адрасы, якія вы мелі намер вывесці з эксплуатацыі. Выдаленне адраса з інтэрфейса надзейнейшае за накладанне правілаў міжсеткавага экрана на састарэлы адрас.