Ang Raspberry Pi na kailangan lamang protektahan ang sariling papalabas na trapiko ay may dalawang makatotohanang disenyo: hayaang pagmamay-ari ng network manager ang tunnel, o panatilihin ang isang script na nagmamay-ari nito. Pareho silang makakapagdala ng trapiko. Nasisira sila sa magkaibang lugar, at ang pagkabigong maaari mong masuri mula sa malayo nang alas-dos ng madaling-araw ang siyang sulit piliin. Ihambing sila sa pagmamay-ari, sa kahulugan ng buong tunnel kapag kasangkot ang IPv6 at DNS, at sa nangyayari sa sandaling bumagsak ang tunnel.

Dalawang may-ari para sa isang tunnel

Ang disenyo A ay isang profile sa loob ng network manager ng sistema: isang na-import na OpenVPN profile o katutubong WireGuard koneksyon, na pinapagana sa boot ng parehong serbisyo na nag-aangat sa Ethernet at Wi-Fi. Ang disenyo B ay isang yunit mo mismo na direktang nagpapatakbo ng client, nag-e-edit ng configuration ng resolver at naglalagay ng sariling mga ruta at patakaran ng firewall. Pareho silang lehitimong disenyo; nagkakaiba sila sa kung sino ang pinapayagang magbago ng routing table.

Nagkakaiba ang mga pagkabigo dahil nagkakaiba ang mga may-ari. Sa A, ang profile na hindi nag-aactivate ay nag-iiwan sa interface na nakataas at sa tunnel na nakababa, at sinasabi ng mga log ng manager kung bakit. Sa B, ang script na kalahating nagtagumpay ay nag-iiwan ng mga rutang nabubuhay pagkatapos ng prosesong gumawa sa kanila. Ang pagpapatakbo ng dalawa ay ang pinakamasamang resulta: dalawang proseso ang nagsusulat ng default na ruta, dalawang edit ng resolver ang nag-aagawan sa boot, at dalawang set ng sikreto ang dapat paikutin.

Pumili ng isang may-ari sa bawat tunnel at patayin ang isa bago subukan ang anuman. Ang dalawang may-ari ay nangangahulugan din ng dalawang lugar na titingnan kapag nakataas ang tunnel at walang nireresolba. Ang nag-iisang patakarang iyon ay pumipigil sa karamihan ng nakalilitong estado na inilarawan sa mga thread ng Pi VPN.

Ano ang nililikha ng import, at ano ang hindi

Sa Raspberry Pi OS Bookworm at mas bago, ang default na kasangkapan sa configuration ng network ay NetworkManager, kaya profile ang natural na tahanan ng client tunnel. Kailangan ng import ang katugmang plugin na naka-install; kung wala ito, nabibigo ang import na may mensahe tungkol sa hindi suportadong uri ng koneksyon, na siyang tapat na senyales upang huminto at i-install ang plugin.

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

Nag-iimbak ng profile ang import. Hindi nito pinapatunayan na maabot ang kabilang panig, at hindi nito ginagarantiyahan na ang bawat direktiba sa file ay nakaligtas sa conversion. Basahin muli ang resultang koneksyon at tingnan ang mga bahaging nagdadala ng pagkakakilanlan at tiwala: ang sertipiko, ang remote host at port, at kung tinatanong o iniimbak ang password.

Ang pag-activate gamit ang --ask ay nagpapanatili ng passphrase sa labas ng kasaysayan ng shell sa isang kompartidong makina. Para sa Pi na walang pagmamatyag, sa huli ay gusto mong umangat ang profile sa boot, na isang hiwalay na desisyon sa pag-angat nito nang isang beses gamit ang kamay.

Buong tunnel, inihambing sa dalawang disenyo

Ang buong tunnel ay isang pahayag tungkol sa mga ruta, hindi tungkol sa layunin, at magkaiba ang pagpapahayag ng dalawang disenyo. Hinihiling ng diskarteng profile sa manager na maglagay ng default na ruta at ng mga setting nito ng resolver; ginagawa ng diskarteng script ang sinasabi ng script, kasama ang wala. Wala sa mga disenyo ang sumasaklaw sa IPv6 maliban kung sasabihan, at ang hindi nagalaw na default na ruta ng IPv6 ay masayang magdadala ng trapiko sa labas ng tunnel habang perpekto ang tingin sa IPv4.

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

Gumamit ng documentation address para sa paghahanap ng ruta at palitan ito ng host na pinapayagang mong siyasatin. Ipinapakita ng unang utos kung aling interface ang gagamitin ng Pi para sa ordinaryong destinasyon; ipinapakita ng pangalawa kung may default na rutang IPv6 pa; pinapatunayan ng pangatlo kung aling resolver ang sumagot. Basahin ang tatlo bago maniwala sa anumang pahayag tungkol sa buong tunnel.

Kung nangangako ang mga tagubilin ng provider ng buong tunnel ngunit nananatili ang default na rutang IPv6, tumatagas ang Pi. Patayin ang IPv6 sa uplink o hilingin sa profile na angkinin ito, at magpasya nang sadya sa halip na matuklasan ito mamaya.

Bukas na pagkabigo laban sa saradong pagkabigo

Kapag bumagsak ang tunnel, ang routing table na nawalan ng default na ruta ay bumabalik lamang sa pisikal na uplink, at nagpapatuloy ang trapiko nang hayagan. Iyon ang bukas na pagkabigo, at iyon ang default na pag-uugali ng dalawang disenyo maliban kung may pumipigil. Natutuklasan ito ng karamihan pagkalipas ng mga linggo sa pagbabasa ng log ng firewall.

Ang saradong pagkabigo ay kumukuha ng iyong malayong pag-access kapag nakababa ang tunnel, kaya kailangan nito ng sadyang eksepsiyon para sa daan ng pamamahala. Isang paraan ay isang patakarang nagpapahintulot lamang sa address ng kapares ng VPN sa labas ng tunnel:

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

Ihambing ang gastos sa pagpapatakbo nang tapat. Karaniwang hindi maipapahayag ng profile ang patakarang ito, kaya itinutulak ka ng saradong pagkabigo patungo sa disenyong may script o sa maliit na yunit na naglalagay ng patakaran nang hiwalay sa tunnel. Anuman ang mangyari, itala ang mga pagtanggi sa loob ng isang linggo: ang tahimik na pagtanggi ay mukhang katulad ng sirang serbisyo, at kakailanganin mo ang counter kapag may nag-ulat na isang site ang tumigil sa pag-load.

Pagpili para sa Pi na walang screen

Kung pinapatakbo na ng image ang NetworkManager, hindi kailangan ng tunnel ang anumang kakaiba, at gusto mong sumunod ito sa uplink nang awtomatiko, kunin ang profile. Kung kailangan mo ng routing ayon sa patakaran, ilang tunnel na pinipili ayon sa destinasyon, o patakarang saradong pagkabigo na dapat umiral bago umangat ang tunnel, kunin ang script at angkinin ang bawat bahagi nito, kasama ang pagkakasunod-sunod ng boot at paglilinis. Ang paghahalo ng dalawang disenyo ay mas mahal kaysa sa alinman sa kanila nang mag-isa.

Ang paglipat sa pagitan nila ay pangunahing usapin ng pagkakasunod-sunod: patayin ang lumang may-ari, tiyakin na walang lumang ruta o entry ng resolver ang natira, pagkatapos ay buhayin ang bago at i-reboot nang dalawang beses. Maaaring itago ng isang reboot ang karerang ibinubunyag ng pangalawa. Tapusin sa pagsubok sa Pi at hindi sa tunnel: i-resolba ang isang pangalan, kumuha ng isang bagay sa IPv4, kumuha sa IPv6 kung pinanatili mo ito, pagkatapos ay ibagsak ang tunnel at tiyakin na ang piniling pag-uugali ay talagang nangyayari. Ang interface sa ip link ay simula ng pagsubok, hindi wakas.

Kaugnay na mga artikulo