Пустая табліца VPN сама па сабе нічога не блакуе
Табліца палітыкі без адпаведнага маршруту не скідвае пакеты; пошук працягваецца. Дадайце тэрмінальнае дзеянне, затым праверце абодва станы збою.
Правіла палітыкі накіроўвае пазначаныя пакеты ў асобную табліцу, і звычайнае чаканне ў тым, што страта маршруту VPN іх блакуе. Механізм робіць іншае. Калі ў табліцы няма адпаведнага маршруту, пошук пераходзіць да наступнага правіла замест таго каб спыніцца, і табліца main па-ранейшаму трымае звычайны маршрут па змаўчанні для uplink. Вынік — канфігурацыя, якая выглядае як fail-closed, але паводзіць сябе як fail-open.
Нічога не зламана; менавіта так вызначана маршрутызацыя на аснове палітык.
Пошук працягваецца, калі ў табліцы нічога няма
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 lookup default 32766: from all lookup main
Вазьміце гэты набор правілаў: пазначаны пошук ідзе ў табліцу 42, а наступнае правіла накіроўвае тую ж пазнаку ў табліцу з назвай default. Пакуль табліца 42 трымае прыдатны маршрут па змаўчанні, першы пошук дае шлях. Калі гэты маршрут знікае і ў табліцы 42 больш нічога не супадае, пошук не становіцца скідам; апрацоўка пераходзіць да наступнага правіла, і калі яно таксама нічога не знаходзіць, дасягае табліцы main. Нішто ў гэтай паслядоўнасці не паведамляе, якое правіла дало канчатковы адказ, таму працоўнае злучэнне выглядае як працоўная палітыка.
Табліца 253, якую звычайна называюць default, — гэта звычайная табліца маршрутызацыі, і звычайна яна пустая. Яе назва не з’яўляецца загадам скідваць пакеты і не тое ж самае, што маршрут прызначэння па змаўчанні ўнутры табліцы.
Тэрмінальныя дзеянні спыняюць пошук
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 prohibit 32766: from all lookup main
Тэрмінальнае правіла можа ісці пасля пошуку VPN замест пошуку ў пустой табліцы. З той жа пазнакай дзеянне prohibit, змешчанае пасля правіла табліцы 42, спыняе пошук, калі гэтая табліца нічога не дае, і вяртае адміністрацыйную адмову замест таго каб даць табліцы main яшчэ адзін шанец. Unreachable і blackhole таксама тэрмінальныя, з іншымі паводзінамі памылкі для адпраўніка.
Маршрут тыпу throw іншы: унутры гэтай табліцы ён паводзіць сябе так, нібыта нічога не супала, таму наступныя правілы атрымліваюць свой чаргу. Гэта робіць throw карысным для наўмыснага адкату і памылковым як канчатковы блок.
Правярайце з рэальнай пазнакай і інтэрфейсам
ip -4 rule show ip -4 route show table 42 ip -4 route get 198.51.100.20 from 10.44.0.2 iif lan0 mark 0x36
Аглядзіце рэальныя правілы і табліцу, а не дыяграму, затым запытайце паток з крыніцай, пазнакай і ўваходным кантэкстам, якія ён сапраўды мае. Пошук толькі для чытання, накіраваны на прызначэнне, якому паведамілі адрас крыніцы, інтэрфейс і пазнаку, паведамляе маршрут, які выбера ядро, без выхаду пакета. Указанне пазнакі ў запыце не даказвае, што міжсеткавы экран пазначае рэальны трафік; гэта асобная праверка правілаў пазначэння. Пацвердзіце значэнне лічыльнікам або журналам, перш чым рабіць высновы з запыту.
Лакальна створаныя запыты патрабуюць уласнага кантэксту, бо іх шлях пазначэння часта адрозніваецца ад шляху перанакіраванага трафіку. Праверце іх з выходным інтэрфейсам, які праграма сапраўды выкарыстоўвае.
Два станы збою, а не адзін
Адзін стан збою — гэта знікненне маршруту VPN і пераход трафіку на uplink. Мёртвы тунэль, маршрут якога застаецца ўсталяваным, — іншы: пакеты працягваюць накіроўвацца ў непрыдатны шлях замест пераходу, і сімптом — ціхая страта, а не бачнае прамое злучэнне. Праверце абодва, а таксама паводзіны пры запуску, перападключэнні і прыпынку службы.
Такое правіла дапамагае толькі пакуль яно існуе і пакуль пакеты нясуць пазнаку, якая яго выбірае. Скрыпт выключэння, які выдаляе правіла, або шлях, які здымае пазнаку, вяртае адкрытыя паводзіны. Гэтыя пераходы варта адпрацаваць.
Ужывайце палітыку да IPv6 асобна і трымайце зацверджаныя выключэнні канчатковых пунктаў яўнымі, а не меркаванымі.