Wi-Fi'ден уюлдук тармакка өткөндөн кийин kill-switch: эмне сынат
Kill-switch тармак өзгөрүүсү алмаштырган интерфейс аттарына каршы жазылат. Ага ишенүүдөн мурун сырткы жолду, дарек үй-бүлөлөрүн жана чечүүчүнү текшериңиз.
Бир учурда ноутбук кеңсе Wi-Fi'инде, кийинки учурда телефонго туташкан, ал эми туннелдин көрсөткүчү терезелерди алмаштырып бүтө электе эле кайра жашыл. Жашыл жарык туннел кайра туташканын гана билдирет; ошол боштукта маршруттоо жана блоктоо саясаты эмне кылганы башка суроо. Ал саясат акыркы орнотуу учурунда түзүлгөн дал келүү шарттарынын жыйындысы жана өтүү жаңы эле жок кылган интерфейсти, даректи жана дарек үй-бүлөсүн атайт. Ошондуктан ошол эле которуу бирдей көрүнгөн үч жыйынтык берет: блоктоо уланат, саясат өзүнүн калыбына келишин бөгөттөйт, же эч нерсе жаппаган жол ачылат.
Экранда бул үч абалды эч нерсе ажыратпайт, ошондуктан көрсөткүч кандай түс көрсөткөнүн эмес, эрежелер кайсы идентификаторлорго бекитилгенин сураңыз. Linux'то эреже интерфейсти же андан толтурулган ipsetти атай алады; Android'де VpnService'ке setUnderlyingNetworks аркылуу кайсы негизги тармактарды ээрчүүнү айтууга болот. Ар бир байланыш алмаштырылуучу звеного көрсөтөт, жана ар бири кийин кайра бааланышы керек.
Өтүү чындыгында эмнени кайра жазат
Эски звоно жоголгондо ядро анын даректерин алып салат, андан өткөн маршруттарды кери кайтарат жана калганынан баштапкы даректи тандоону кайра курат. Демейки маршрут жаңы шлюзга өтөт, ал эми эски эрежелер шилтеме кылган интерфейс индекси жок болду же башка түзмөк үчүн кайра иштетилди. Звено боюнча чечүүчүлөр да жаңыртылат, бирок маршруттар менен бир учурда эмес. Мунун баары VPN кардарынын астында болот, ошондуктан өз туннелинин абалын гана байкаган кардар андан эч нерсе көрбөйт.
Кыйынчылык — эреже өзүнүн артындагы ниеттин ордуна белгилүү бир идентификаторду коддойт. Туннелдин интерфейсинен чыкпагандын баарын таштаган эреже интерфейс атын коддойт; акыркы чекитке уруксат берген эреже жаңы тармак башка жакка багытташы мүмкүн болгон даректи коддойт. Идентификатор жоголгондо эреже көзгө ачык туура эмес болуп калбайт: ал же эч нерсеге дал келүүнү токтотот, же туура эмес нерсеге дал келе баштайт.
Тешик жасабай сырткы туннелди кайра куруу
Сырткы транспорт эски баштапкы дарекке байланган болчу, ошондуктан ал жаңы даректен жаңы сокет ачышы керек. Акыркы чекит тамга түрүндөгү дарек эмес, хост аты болгондо, блок күчүндө турганда издеп табуу ийгиликтүү болушу керек. Бул — тартиптин тузагы: акыркы чекиттен башканын баарын таштоого жетиштүү катуу саясат аны табуу үчүн керек болгон издөөнү да таштайт, эгер чечим блок көтөрүлө электе болбосо же дагы тирүү туннел аркылуу өткөрүлбөсө. Эки тартип тең иштеши мүмкүн, бирок кардар кайсы тартипте экенин билсе гана.
Кардарлар бул жерде диагностика учурунда маанилүү болгон жактан айырмаланат. Кээ бирлери адегенде чечип, анан эрежелерди орнотот, ошондуктан өтүү көрүнүктүү үзгүлтүккө алып келип, анан өзү калыбына келет; башкалары блокту кармап туруп, издөөнү алып жүрүүнү аман калган туннелге таштайт, ал эми туннел звоно менен өлсө, толук ийгиликсиз болот. Байланышты калыбына келтирүү үчүн кеңири түз демейки маршрут кошуу тестти дайым өткөрөт жана сиз алдын алган агымды дайым калтырат.
Эски шлюзга дагы эле шилтеме кылган маршрут башка себептен ушундай эле тыгылып калган калыбына келүүнү берет, ошондуктан кардарды күнөөлөөдөн мурун таблицаны окуңуз. Төмөнкү буйруктар ядро чындыгында колдоно турган интерфейс менен баштапкы даректи атайт, жана бул эски жол дагы орнотулганын бир сапта чечет.
ip route get 1.1.1.1
ip -6 route get 2606:4700:4700::1111Жаңы звоно IPv6 алып келсе, эрежелер алып келбесе
Уюлдук жана конок тармактары көбүнчө глобалдык IPv6 префиксин берет, кеңсенин зымдуу LAN'ы муну эч качан кылбаса да. Тек IPv4 эрежелери катары жазылган саясат — кол менен жасалган iptables жана nftables рецепттеринин көпчүлүгүнүн демейки формасы — андан эч нерсени жабалбайт. Туннел туташкан бойдон турат, IPv6 жеткиликтүүлүгү бар колдонмолор анын сыртына чыгат, ал эми көрсөткүч айырманы көрсөтө албайт, анткени туннел чын эле көтөрүлгөн. Тескери учур да ошондой эле кеңири таралган: тек IPv6 үчүн эрежелер жыйындысы v6 сунуштабаган тармакта эч нерсе кылбайт.
Звоно эмне сунуштаарын жана саясат эмнени эскерерин өтүүнүн эки жагында салыштырыңыз. Бул буйруктар кардар иштеген ошол эле фактыларды басып чыгарат:
ip -4 route show default
ip -6 route show default
sudo nft list ruleset | grep -c 'ip6 'Эгер экинчи буйрук демейки маршрутту басып чыгарса, үчүнчүсү нөл кайтарса, жаңы звоно машинаны IPv6 аркылуу сыртка чыгара алат, аны эч бир эреже көзөмөлдөбөйт. Которуудан кийин үчөөнү тең кайра иштетиңиз, анткени кызыктуу сан — эки иштетүүнүн айырмасы. Эгер экинчиси эч нерсе басып чыгарбаса, тескери учур колдонот жана ал жердеги кандайдыр v6 оор саясат жөн гана жасалга.
Чечүүчү сессиянын ортосунда кол алмаштырат
Заманбап системаларда чечүүчүлөр звонолорго байланган, ошондуктан жаңы звоно жаңы чечүүчүлөр жыйындысы менен жана балким башка split-DNS көрүнүшү менен келет. systemd-resolved ар бир звоного бир scope кармап, алардын ортосунда маршрут боюнча тандайт, ал эми macOS scoped чечүүчүлөрдү динамикалык кампадан окуп, интерфейстердин тартибин сыйлайт. Өз чечүүчүсүн орноткон кардар звонунку менен атаандашат, ал эми эч ким көзөмөлдөбөгөн артыкчылык эрежелери жеңүүчүнү аныктайт. Ошондо аттарды чечүү бузулушу мүмкүн, ал эми пакеттерди чыпкалоо өзү үчүн жазылганды так аткарып турат.
Конфигурацияланган чечүүчүнү эмес, активдүү чечүүчүнү окуңуз. systemd хостунда status кошумча буйругу ар бир scope кайсы звонодон келгенин жана private-DNS аты күчүндө экенин көрсөтөт:
resolvectl status --no-pager
resolvectl query intranet.example.comЭгер сурам туннелден эмес, физикалык звонодон чыкса, кардар артыкчылык жарышында утулуп калды жана эч бир firewall жөндөөсү аттоону оңдобойт. Сурамдын жолун өтүүнүн эки жагында салыштырып, кайсынысы жылганын көрүңүз. Жаңы тармак маршруттай албаган жеке дарекке чечилген ат — үчүнчү учур, жана ал ката катары эмес, убакыттын бүтүшү катары көрүнөт.
Өтүүнү машыктырып, жазууну сактаңыз
Өзгөрүүнү күтпөй, атайын кайра жаратыңыз. Туннелди биринчи звонодо көтөрүңүз, узак ташууну жана кайталанма издөөнү баштаңыз, анан звонун алмаштырып, кайсынысы аман каларын караңыз. Эски звоно жоголгондон туннелдин туташканы тууралуу билдирүүсүнө чейинки аралыкты жазыңыз, анткени дал ошол терезеде саясат чыдадыбы же жокпу. Натыйжа бир жактуу болбосун үчүн ырааттуулукту тескери багытта да иштетиңиз.
Өзгөчөлүктөргө өзүнчө өтүү керек, анткени эски тармакта акталган айланып өтүү жаңысында автоматтык түрдө акталбайт. Үй LAN'ындагы принтердин, NAS'тын же captive portal'дын уюлдук тармакта баламасы жок, жана аларга жеткен өзгөчөлүк баламасыз эрежеге айланат.
Ар бир багыт үчүн интерфейс аттарын, сунушталган үй-бүлөлөрдү, күчүндөгү чечүүчүнү жана үзгүлтүктүн узактыгын жазыңыз. Кайра туташуу транспорт калыбына келгенин далилдейт, боштукта блок кармап турганын эмес, жана бул билетке жазылуучу өзүнчө ырастоолор. Ушул жазуу менен кийинки өтүү эске эмес, белгилүү абалга салыштырылат.