Өзүнүн гана чыгуучу трафигин коргошу керек болгон Raspberry Pi үчүн эки реалдуу долбоор бар: туннелге тармак башкаруучусу ээ болсун, же ага ээ болгон скриптти кармаңыз. Экөө тең трафикти ташый алат. Алар ар башка жерде ишке ашпайт, ал эми түнү экиде алыстан диагностикалай алган бузулуу тандоого татыктуу. Аларды ээлик боюнча, IPv6 менен DNS кошулганда толук туннель эмнени билдиреринде жана туннель үзүлгөн учурда эмне болорунда салыштырыңыз.

Бир туннелге эки ээ

A долбоору — системанын тармак башкаруучусунун ичиндеги профиль: импорттолгон OpenVPN профили же жергиликтүү WireGuard байланышы, аны жүктөө учурунда Ethernet менен Wi-Fi'ди көтөргөн ошол эле кызмат активдештирет. B долбоору — кардарды түздөн-түз иштетүүчү, resolver конфигурациясын оңдоп, өзүнүн маршруттары менен firewall эрежелерин орноткон өзүңүздүн бирдигиңиз. Экөө тең мыйзамдуу долбоор; алар маршруттоо таблицасын өзгөртүүгө кимдин укугу бар экени менен айырмаланат.

Бузулуулар ар башка, анткени ээлер ар башка. A учурда активдешпеген профиль интерфейсти жогору, туннелди төмөн калтырат, ал эми башкаруучунун журналдары себебин айтат. B учурда жарым ийгиликтүү скрипт аларды жараткан процесстен кийин да жашаган маршруттарды калтырат. Экөөнү тең иштетүү эң начар жыйынтык: эки процесс демейки маршрутту жазат, жүктөөдө resolver'дин эки өзгөртүүсү жарышат жана айландырууга эки сыр топтому керек.

Ар туннелге бир ээни тандап, бир нерсени сынаардын алдында экинчисин өчүрүңүз. Эки ээ — туннель көтөрүлгөндө жана эч нерсе чечилбегенде карай турган эки жер дегендик. Ушул бир эреже Pi VPN талкууларында сүрөттөлгөн баш аламан абалдардын көбүн алдын алат.

Импорт эмнени жаратат, эмнени жаратпайт

Raspberry Pi OS Bookworm жана андан кийинки версияларда тармак конфигурациясынын демейки куралы NetworkManager, ошондуктан профиль кардар туннели үчүн табигый үй. Импорт тиешелүү плагиндин орнотулушун талап кылат; ансыз импорт колдоого алынбаган туташуу түрү тууралуу билдирүү менен ишке ашпайт, бул токтоп плагинди орнотуунун чынчыл белгиси.

nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name

Импорт профилди сактайт. Ал каршы тарапка жетүүгө болорун далилдебейт жана файлдагы ар бир көрсөтмө өзгөртүүдөн аман калганына кепилдик бербейт. Алынган байланышты кайра окуп, инсандык жана ишеним алып жүргөн бөлүктөрдү текшериңиз: сертификат, алыскы хост жана порт, жана сырсөз суралабы же сакталабы.

--ask менен активдештирүү жалпы машинадагы shell тарыхынан тышкаркы сырсөз сүйлөмүн сактайт. Көзөмөлсүз Pi үчүн акырында профилдин жүктөөдө көтөрүлүшүн каалайсыз, бул аны кол менен бир жолу көтөрүүдөн өзүнчө чечим.

Толук туннель, эки долбоор боюнча салыштыруу

Толук туннель — маршруттар жөнүндө билдирүү, ниет жөнүндө эмес, жана эки долбоор аны ар башка билдирет. Профиль ыкмасы башкаруучудан демейки маршрут менен анын resolver жөндөөлөрүн орнотууну суранат; скрипт ыкмасы скрипт эмне десе ошону кылат, эч нерсе кылбоону да кошкондо. Эч бир долбоор айтылбаса IPv6'ны камтыбайт, ал эми тийилбеген IPv6 демейки маршруту IPv4 кемчиликсиз көрүнгөндө трафикти туннелдин сыртына кубаныч менен ташыйт.

ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org

Маршрутту издөө үчүн документтик даректи колдонуп, аны текшерүүгө уруксатыңыз бар хост менен алмаштырыңыз. Биринчи буйрук Pi кадимки багыт үчүн кайсы интерфейсти колдоноорун көрсөтөт; экинчиси IPv6 демейки маршруту дагы барбы же жокпу көрсөтөт; үчүнчүсү кайсы resolver жооп бергенин далилдейт. Толук туннель жөнүндө кандайдыр бир билдирүүгө ишенердин алдында үчөөнү тең окуңуз.

Эгер провайдердин көрсөтмөлөрү толук туннелге убада берип, бирок IPv6 демейки маршруту калса, Pi агып жатат. Жогорку звенодо IPv6'ны өчүрүңүз же профилден аны талап кылуусун сураңыз, жана кийин аныктоонун ордуна атайын чечим кабыл алыңыз.

Ачык бузулуу жабык бузулууга каршы

Туннель үзүлгөндө демейки маршрутунан ажыраган маршруттоо таблицасы жөн эле физикалык жогорку звеного кайтат, ал эми трафик ачык уланат. Бул ачык бузулуу жана бир нерсе тоскоол болбосо, эки долбоордун тең демейки жүрүм-туруму. Көпчүлүк муну апталар өткөндөн кийин firewall журналын окуп билишет.

Жабык бузулуу туннель төмөндө турганда сизди алыскы кирүүдөн ажыратат, ошондуктан башкаруу жолу үчүн атайын өзгөчөлүк керек. Бир жол — туннелдин сыртында VPN шеригинин дарегине гана уруксат берген эреже:

sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject

Операциялык чыгымды чынчылдык менен салыштырыңыз. Профиль адатта бул эрежени билдире албайт, ошондуктан жабык бузулуу сизди скрипт долбооруна же эрежени туннелден көз карандысыз орноткон кичинекей бирдикке түртөт. Кандай болбосун, баш тартууларды бир жума жазып туруңуз: үнсүз баш тартуу бузулган кызматка так окшош, ал эми колдонуучу бир сайт жүктөлбөй калганын билдиргенде эсептегич керек болот.

Экраны жок Pi үчүн тандоо

Эгер сүрөт мурунтан NetworkManager иштетип жатса, туннелге өзгөчө эч нерсе керек болбосо жана ал жогорку звенону автоматтык түрдө ээрчишин кааласаңыз, профилди алыңыз. Эгер сизге саясий маршруттоо, ар бир багыт үчүн тандалган бир нече туннель же туннель көтөрүлөөрдөн мурун болушу керек болгон жабык бузулуу эрежеси керек болсо, скриптти алып, жүктөө тартибин жана тазалоону кошкондо анын ар бир бөлүгүнө ээ болуңуз. Эки долбоорду аралаштыруу кайсынысынан болсо да кымбат.

Алардын ортосунда которулуу негизинен тартип маселеси: эски ээни өчүрүңүз, эскирген маршрут же resolver жазуусу калбаганын ырастаңыз, анан жаңысын күйгүзүп, эки жолу кайра жүктөңүз. Бир кайра жүктөө экинчиси ача турган жарышты жашырышы мүмкүн. Туннелди эмес, Pi'ни сыноо менен бүтүрүңүз: атты чечиңиз, IPv4 аркылуу бир нерсе алыңыз, сактасаңыз IPv6 аркылуу алыңыз, анан туннелди түшүрүп, тандаган жүрүм-турумуңуз чындап болорун ырастаңыз. ip link ичиндеги интерфейс — сыноонун башталышы, аягы эмес.

Тектеш макалалар