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 е почетокот на тестот, не крајот.

Поврзани статии