Raspberry Pi yang hanya perlu melindungi trafik keluar sendiri mempunyai dua reka bentuk realistik: biarkan pengurus rangkaian memiliki terowong, atau kekalkan skrip yang memilikinya. Kedua-duanya boleh membawa trafik. Kedua-duanya gagal di tempat berbeza, dan kegagalan yang boleh anda diagnosis dari jauh pada pukul dua pagi ialah yang berbaloi dipilih. Bandingkan kedua-duanya dari segi pemilikan, dari segi apa maksud terowong penuh apabila IPv6 dan DNS terlibat, dan dari segi apa yang berlaku pada saat terowong terputus.

Dua pemilik untuk satu terowong

Reka bentuk A ialah profil di dalam pengurus rangkaian sistem: profil OpenVPN yang diimport atau sambungan WireGuard asli, diaktifkan semasa but oleh perkhidmatan yang sama yang menaikkan Ethernet dan Wi-Fi. Reka bentuk B ialah unit anda sendiri yang menjalankan klien secara langsung, menyunting konfigurasi penyelesai dan memasang laluan serta peraturan firewall sendiri. Kedua-duanya sah; ia berbeza dari segi siapa yang dibenarkan menukar jadual penghalaan.

Kegagalan berbeza kerana pemilik berbeza. Dengan A, profil yang tidak diaktifkan membiarkan antara muka naik dan terowong turun, dan log pengurus menyatakan sebabnya. Dengan B, skrip yang berjaya separuh meninggalkan laluan yang kekal selepas proses yang menciptanya tamat. Menjalankan kedua-duanya ialah hasil terburuk: dua proses menulis laluan lalai, dua suntingan penyelesai bersaing semasa but, dan dua set rahsia perlu diputar.

Pilih satu pemilik bagi setiap terowong dan lumpuhkan yang satu lagi sebelum anda menguji apa-apa. Dua pemilik juga bermakna dua tempat untuk diperiksa apabila terowong naik dan tiada apa yang diselesaikan. Peraturan tunggal itu menghalang kebanyakan keadaan mengelirukan yang diterangkan dalam benang Pi VPN.

Apa yang dihasilkan oleh import, dan apa yang tidak

Pada Raspberry Pi OS Bookworm dan seterusnya alat konfigurasi rangkaian lalai ialah NetworkManager, jadi profil ialah rumah semula jadi bagi terowong klien. Import memerlukan pemalam yang sepadan dipasang; tanpanya import gagal dengan mesej tentang jenis sambungan yang tidak disokong, iaitu isyarat jujur untuk berhenti dan memasang pemalam.

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

Import menyimpan profil. Ia tidak membuktikan bahawa sisi lain boleh dicapai, dan tidak menjamin setiap arahan dalam fail itu terselamat daripada penukaran. Baca semula sambungan yang terhasil dan periksa bahagian yang membawa identiti dan kepercayaan: sijil, hos dan port jauh, dan sama ada kata laluan diminta atau disimpan.

Pengaktifan dengan --ask menyimpan frasa laluan di luar sejarah shell pada mesin dikongsi. Untuk Pi tanpa pengawasan, akhirnya anda mahu profil naik semasa but, yang merupakan keputusan berasingan daripada menaikkannya sekali secara manual.

Terowong penuh, dibandingkan merentas kedua-dua reka bentuk

Terowong penuh ialah dakwaan tentang laluan, bukan tentang niat, dan kedua-dua reka bentuk menyatakannya secara berbeza. Pendekatan profil meminta pengurus memasang laluan lalai dan tetapan penyelesainya; pendekatan skrip melakukan apa yang dikatakan skrip, termasuk tiada. Tiada reka bentuk yang meliputi IPv6 melainkan diberitahu, dan laluan lalai IPv6 yang tidak disentuh akan dengan senang hati membawa trafik di luar terowong sementara IPv4 kelihatan sempurna.

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

Gunakan alamat dokumentasi untuk carian laluan dan gantikannya dengan hos yang anda dibenarkan menyiasat. Perintah pertama menunjukkan antara muka mana yang akan digunakan Pi untuk destinasi biasa; kedua menunjukkan sama ada laluan lalai IPv6 masih wujud; ketiga membuktikan penyelesai mana yang menjawab. Baca ketiga-tiganya sebelum mempercayai apa-apa dakwaan tentang terowong penuh.

Jika arahan pembekal menjanjikan terowong penuh tetapi laluan lalai IPv6 kekal, Pi bocor. Lumpuhkan IPv6 pada pautan atas atau minta profil menuntutnya, dan putuskan dengan sengaja daripada menemuinya kemudian.

Gagal terbuka lawan gagal tertutup

Apabila terowong terputus, jadual penghalaan yang kehilangan laluan lalainya kembali kepada pautan fizikal, dan trafik berterusan secara terbuka. Itu gagal terbuka, dan itulah tingkah laku lalai kedua-dua reka bentuk melainkan ada sesuatu yang menghalangnya. Kebanyakan orang menemuinya berminggu-minggu kemudian dengan membaca log firewall.

Gagal tertutup merugikan anda akses jauh apabila terowong turun, jadi ia memerlukan pengecualian yang disengajakan untuk laluan pengurusan. Satu cara ialah peraturan yang hanya membenarkan alamat rakan VPN di luar terowong:

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

Bandingkan kos operasi dengan jujur. Profil biasanya tidak dapat menyatakan peraturan ini, jadi gagal tertutup mendorong anda ke arah reka bentuk skrip atau ke arah unit kecil yang memasang peraturan secara bebas daripada terowong. Walau apa pun, log penolakan selama seminggu: penolakan senyap kelihatan sama seperti perkhidmatan rosak, dan anda akan perlukan pembilang apabila pengguna melaporkan satu laman berhenti dimuatkan.

Memilih untuk Pi tanpa skrin

Jika imej sudah menjalankan NetworkManager, terowong tidak memerlukan apa-apa eksotik, dan anda mahu ia mengikut pautan atas secara automatik, ambil profil itu. Jika anda memerlukan penghalaan dasar, beberapa terowong yang dipilih mengikut destinasi, atau peraturan gagal tertutup yang mesti wujud sebelum terowong naik, ambil skrip itu dan miliki setiap bahagiannya, termasuk urutan but dan pembersihan. Mencampurkan kedua-dua reka bentuk lebih mahal daripada mana-mana satu sahaja.

Berhijrah antara kedua-duanya terutamanya soal urutan: lumpuhkan pemilik lama, sahkan tiada laluan atau entri penyelesai basi yang kekal, kemudian aktifkan yang baharu dan but semula dua kali. Satu but semula boleh menyembunyikan perlumbaan yang didedahkan oleh yang kedua. Akhiri dengan menguji Pi, bukan terowong: selesaikan nama, ambil sesuatu melalui IPv4, ambil melalui IPv6 jika anda menyimpannya, kemudian jatuhkan terowong dan sahkan tingkah laku yang anda pilih benar-benar berlaku. Antara muka dalam ip link ialah permulaan ujian, bukan penghujungnya.

Artikel berkaitan