Зөвхөн өөрийн гарах урсгалыг хамгаалах шаардлагатай Raspberry Pi-д хоёр бодит загвар байна: сүлжээний менежерт туннелийг эзэмшүүлэх, эсвэл түүнийг эзэмшдэг скриптийг барих. Хоёулаа урсгалыг зөөж чадна. Тэд өөр өөр газарт бүтэлгүйтдэг бөгөөд шөнийн хоёр цагт алсаас оношлох боломжтой гэмтэл нь сонгох үнэ цэнэтэй нь юм. Тэднийг эзэмшлийн, IPv6 болон DNS оролцсон үед бүрэн туннель юу гэсэн үг болох, мөн туннель унах мөчид юу болох талаас нь харьцуул.

Нэг туннельд хоёр эзэмшигч

А загвар нь системийн сүлжээний менежерийн доторх профайл: импортолсон OpenVPN профайл эсвэл уугуул WireGuard холболт бөгөөд ачаалах үед Ethernet болон Wi-Fi-г өргөдөг ижил үйлчилгээ идэвхжүүлдэг. Б загвар нь клиентийг шууд ажиллуулж, resolver-ийн тохиргоог засварлаж, өөрийн маршрут болон firewall дүрмийг суулгадаг таны өөрийн нэгж юм. Хоёулаа хууль ёсны загвар; тэд маршрутжуулалтын хүснэгтийг хэн өөрчилж болох талаар ялгаатай.

Эзэмшигчид ялгаатай тул гэмтлүүд ялгаатай. А-д идэвхжихгүй профайл интерфейсийг дээш, туннелийг доош үлдээж, менежерийн лог яагаад гэдгийг хэлнэ. Б-д хагас амжилттай скрипт түүнийг үүсгэсэн процессоос хойш ч амьд үлдэх маршрутуудыг үлдээдэг. Хоёуланг зэрэг ажиллуулах нь хамгийн муу үр дүн: хоёр процесс өгөгдмөл маршрутыг бичиж, ачаалах үед 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 доторх интерфейс бол туршилтын эхлэл, төгсгөл биш.

Холбоотой нийтлэлүүд