Anda mengikut senarai semak: tolak keluar, benarkan terowong, aktifkan ufw. Kemudian klien menunggu pada jabat tangan dan tidak pernah menyambung, atau ia menyambung dan tiada halaman dimuatkan. Kedua-dua kegagalan datang dari jurang yang sama. Peraturan yang membenarkan terowong wujud tiada, kerana terowong bukan antara muka tempat paket anda keluar.

Mengapa kebenaran pada tun0 pada mulanya tidak sepadan dengan apa-apa

tun0 dicipta oleh klien selepas sesi wujud. Datagram yang membina sesi itu ialah paket UDP biasa yang dialamatkan kepada pembekal pada port 1194, dan ia keluar melalui wlan0 atau eth0 dengan alamat sumber fizikal. allow out on tun0 hanya sepadan dengan trafik yang antara muka keluarnya tun0, jadi semasa jabat tangan ia tidak sepadan dengan apa-apa.

Letakkan default deny outgoing di atasnya dan paket luar digugurkan sebelum antara muka muncul. Klien mencuba lagi, tamat masa, dan melaporkan kegagalan TLS atau jabat tangan, yang menghantar orang mencari dalam sijil dan MTU sementara firewall senyap memakan sambungan. Peraturan yang sepatutnya menahan trafik anda menghalang trafik itu daripada ditahan.

Pembetulan refleks menjadikan kebocoran kekal. sudo ufw allow out on wlan0, atau menukar semula lalai kepada benarkan, menaikkan terowong dan meninggalkan mesin tanpa suis mati: lain kali terowong jatuh, semuanya bersambung semula melalui penyesuai fizikal. Saya kehilangan sebelah petang pada pasangan suntingan itu sebelum mengetahui paket mana yang sebenarnya saya tapis.

Apa yang diperlukan oleh dua set paket

Trafik anda melintasi firewall dua kali, dalam dua bentuk. Paket dalaman bergerak dari alamat terowong keluar melalui tun0. Paket luaran bergerak dari alamat fizikal ke peer, dan itulah satu-satunya yang kelihatan pada wayar. Satu peraturan bagi setiap bentuk:

sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow out to 203.0.113.10 port 443 proto tcp comment 'tcp fallback'

Gantikan alamat dan port dengan yang daripada profil anda sendiri. Peer WireGuard biasanya menjawab pada 51820/udp; profil OpenVPN yang melalui TCP 443 memerlukan port itu sebaliknya. Butirannya berbeza, bentuknya tidak: kedua-dua peraturan sempit, dan bersama-sama ia menentukan satu-satunya destinasi yang boleh dicapai oleh mesin semasa terowong turun.

Urutan ialah mitos kedua. Dengan iptables mentah anda membaca rantaian dari atas ke bawah dan membuat pertimbangan peraturan mana yang menang. ufw bukan pembalut nipis di sekeliling senarai yang anda taip; ia menyusun peraturan anda ke dalam rantaiannya sendiri dan memilih titik sisipan. ufw status mencetaknya dalam susunan ufw, bukan susunan anda. Apabila peraturan kelihatan diabaikan, bandingkan ufw show added dengan set yang disusun dari iptables -S | grep ufw sebelum menulis semula apa-apa.

Pengecualian mesti kekal selebar satu alamat

Peraturan peer hanya betul selagi ia menamakan alamat yang didail klien. Pembekal memutar titik akhir, dan profil yang menyelesaikan nama hos akan mengikut perubahan DNS ke alamat baharu sementara peraturan terus menunjuk ke yang lama. Apabila terowong yang berfungsi berbulan-bulan berhenti naik, bandingkan alamat dalam peraturan dengan yang dicari klien sebelum meluaskan apa-apa.

Meluaskan ke seluruh subnet, atau ke setiap destinasi pada port 1194, menukar dasar kembali menjadi firewall berlubang. Pengecualian itulah suis mati; setelah ia luas, tiada apa lagi untuk dimatikan. Kekalkannya pada satu alamat dan tinggalkan komen yang menamakan profil dan pembekal yang empunya, kerana enam bulan lagi alamat itu akan kelihatan sewenang-wenangnya.

Penyelesaian nama patut mendapat barisnya sendiri. Carian berlaku sebelum terowong wujud, melalui antara muka fizikal, jadi dasar tolak-keluar yang ketat boleh meninggalkan klien tidak mampu mencari pelayannya sendiri. Benarkan port 53 ke alamat penyelesai anda, atau selesaikan sekali dan tetapkan alamat dalam profil. Membenarkan DNS pada setiap antara muka ialah keputusan, bukan lalai.

Bina dasar sebelum terowong diperlukan

ufw enable menggunakan seluruh dasar sekali gus dan memuat semula rantaiannya, dan menukar dasar lalai pada firewall yang berjalan juga memuat semulanya. manual ufw memberi amaran bahawa ini boleh menggugurkan sambungan sedia ada seperti SSH. Jadi arahan pergi dalam susunan ini, dengan peraturan SSH sebelum pengaktifan dan sesi konsol terbuka:

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose

ufw reset sengaja ditinggalkan daripada blok itu. Ia memadam setiap peraturan dan menyahdayakan firewall, dan pada hos jauh pengaktifan berikutnya itulah yang menggugurkan sesi anda. Jika anda tetap menetapkan semula, tambah peraturan SSH dan sahkan laluan kedua masuk semula melalui konsol sebelum meneruskan.

Urutannya bukan kosmetik. Peraturan yang ditambah semasa ufw berjalan tidak mengosongkan apa-apa, tetapi pada saat anda membalikkan dasar lalai rantaian dimuat semula, dan sesi yang dibenarkan oleh dasar lama turut pergi. Lakukan lalai, kebenaran dan pengaktifan dalam satu laluan, selagi anda masih mempunyai jalan masuk yang tidak bergantung pada mesin.

Uji keadaan tersekat, dan simpan pembatalannya

Suis mati yang belum diuji ialah tekaan. Putuskan klien dengan sengaja dan cuba memuatkan halaman: ia mesti gagal. Sambung semula dan ia mesti pulih tanpa menyentuh peraturan. sudo ufw status verbose mengesahkan lalai dan keadaan pengelogan, dan ufw status numbered menunjukkan peraturan ujian mana yang perlu dipadam apabila ia melebihi tujuannya.

Simpan skrip songsang di sebelah yang ke hadapan. Mesin dengan tolak-keluar dan terowong mati tidak boleh memuat turun pembaikannya sendiri, jadi pembatalan mesti berada di cakera dan boleh dibaca dari konsol:

sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

Jalankannya apabila terowong sudah turun dan peraturan perlu ditanggalkan, bukan sebagai langkah rutin. Sebelum menutup terminal, empat perkara mesti benar: peraturan peer menamakan tepat satu alamat, DNS mempunyai pengecualian bernama, pengaktifan datang selepas kebenaran, dan menarik terowong membunuh trafik biasa tanpa membunuh klien buat selama-lamanya.

Artikel berkaitan