Raspberry Pi коме треба да штити само сопствени одлазни саобраћај има два реалистична дизајна: препустите тунел мрежном управљачу или задржите скрипту која га поседује. Оба могу да носе саобраћај. Падају на различитим местима, а квар који можете да дијагностикујете на даљину у два сата ујутру је онај који вреди изабрати. Упоредите их по власништву, по томе шта пун тунел значи када су укључени IPv6 и DNS, и по томе шта се дешава у тренутку када тунел падне.

Два власника за један тунел

Дизајн A је профил унутар мрежног управљача система: увезени профил OpenVPN или изворна WireGuard веза, коју при подизању активира иста услуга која подиже Ethernet и Wi-Fi. Дизајн B је ваша сопствена јединица која директно покреће клијент, мења конфигурацију резолвера и инсталира сопствене руте и правила заштитног зида. Оба су легитимна дизајна; разликују се по томе коме је дозвољено да мења табелу рутирања.

Кварови се разликују јер се власници разликују. Код A профил који се не активира оставља интерфејс подигнут а тунел спуштен, и управљачеви дневници кажу зашто. Код B скрипта која напола успе оставља руте које надживе процес који их је створио. Покретати обоје је најгори исход: два процеса пишу подразумевану руту, две измене резолвера се такмиче при подизању и два скупа тајни треба ротирати.

Изаберите једног власника по тунелу и онемогућите другог пре него што било шта тестирате. Два власника значе и два места за проверу када је тунел подигнут а ништа се не разрешава. То једно правило спречава већину збуњујућих стања описаних у расправама о 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 држи фразу за лозинку изван историје љуске на дељеном рачунару. За Pi без надзора на крају ћете желети да се профил подигне при подизању система, што је одвојена одлука од ручног подизања једном.

Пун тунел, упоређен кроз оба дизајна

Пун тунел је тврдња о рутама, не о намери, а два дизајна га изражавају различито. Приступ са профилом тражи од управљача да инсталира подразумевану руту и своја подешавања резолвера; приступ са скриптом ради шта скрипта каже, укључујући ништа. Ниједан дизајн не покрива IPv6 ако му се не каже, а нетакнута подразумевана рута IPv6 радо ће носити саобраћај изван тунела док IPv4 изгледа беспрекорно.

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

Користите документациону адресу за проверу руте и замените је хостом који вам је дозвољено да проверавате. Прва команда показује који би интерфејс Pi користио за обично одредиште; друга показује да ли подразумевана рута IPv6 још постоји; трећа доказује који је резолвер одговорио. Прочитајте све три пре него што поверујете било којој тврдњи о пуном тунелу.

Ако упутства провајдера обећавају пун тунел али подразумевана рута IPv6 остане, Pi цури. Онемогућите IPv6 на улазној вези или замолите профил да га затражи, и одлучите свесно уместо да то откријете касније.

Отворен квар наспрам затвореног

Када тунел падне, табела рутирања која изгуби подразумевану руту једноставно се врати на физичку улазну везу, а саобраћај наставља отворено. То је отворен квар и то је подразумевано понашање оба дизајна ако нешто не спречи. Већина људи то открије недељама касније читајући дневник заштитног зида.

Затворен квар вас кошта удаљеног приступа када је тунел спуштен, па му треба свестан изузетак за пут управљања. Један начин је правило које дозвољава само адресу 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, тунел не захтева ништа егзотично и желите да прати улазну везу аутоматски, узмите профил. Ако вам треба рутирање по политикама, неколико тунела бираних по одредишту или правило затвореног квара које мора постојати пре него што се тунел подигне, узмите скрипту и поседујте сваки њен део, укључујући редослед подизања и чишћење. Мешање два дизајна кошта више од било ког самог.

Миграција између њих углавном је питање реда: онемогућите старог власника, потврдите да није остала застарела рута или унос резолвера, затим омогућите новог и два пута се рестартујте. Један рестарт може сакрити трку коју други открије. Завршите тестирањем Pi-ја, а не тунела: разрешите име, преузмите нешто преко IPv4, преузмите преко IPv6 ако сте га задржали, затим спустите тунел и потврдите да се понашање које сте изабрали заиста дешава. Интерфејс у ip link је почетак теста, не крај.

Повезани чланци