Cara memeriksa apakah terowongan VPN Linux benar-benar aktif
Tanda antarmuka, pencarian rute, tabel 220, dan cap waktu jabat tangan menjawab pertanyaan yang berbeda. Ikat setiap langkah skrip pada uji yang membuktikan prasyaratnya.
Cron menyalakan ulang VPN yang sepenuhnya sehat setiap sepuluh menit, dan tugas yang sama membiarkan VPN mati tetap berjalan selama sepekan. Kedua kegagalan itu berasal dari memperlakukan «aktif» sebagai satu fakta padahal setidaknya ada empat. Sebuah perangkat bisa diaktifkan secara administratif, dirutekan dengan benar, terenkripsi penuh, dan tetap tidak membawa apa pun yang berguna. Pisahkan dulu pengamatannya, dan pemeriksaan hampir menulis dirinya sendiri.
Tanda tautan menggambarkan perangkat, bukan jalurnya
Pemeriksaan yang disalin semua orang mencari alamat perangkat keras yang seluruhnya nol. Trik itu memisahkan antarmuka asli dari penanda tempat pada sebagian driver dan tidak membuktikan apa pun pada sisanya, karena perangkat tun memang tidak punya MAC untuk dilaporkan. ip -brief link show tun0 justru memberikan tanda: UP berarti administrator mengaktifkan perangkat, dan LOWER_UP berarti driver menganggap tautan itu bisa dipakai. Dibaca bersama, keduanya menyatakan perangkat ada dan tidak dimatikan secara administratif. Tidak satu pun mengatakan paket punya tempat untuk pergi.
OpenVPN membuat perangkat tun-nya sebelum rute dipasang, sehingga tandanya bisa tampak sempurna sementara tidak ada yang dirutekan. Perlakukan itu sebagai prasyarat, jangan pernah sebagai jawabannya.
Tanyakan ke mana paket akan pergi
Pencarian rute menjawab pertanyaan yang tidak bisa dijawab tanda. ip route get 10.8.0.1 from 10.8.0.2 menyebut antarmuka, alamat sumber, dan tabel yang akan dipakai kernel, dan itulah tepatnya yang harus diuji pada terowongan terpisah. Tanpa alamat sumber Anda menanyakan hal lain, dan dengan perutean berbasis kebijakan jawabannya bisa berbeda per sumber. Ini uji jujur termurah, karena ia menanyakan aturan yang sama dengan yang akan dipakai lalu lintas Anda.
Untuk WireGuard, tambahkan jabat tangan. wg show mencetak cap waktu jabat tangan terakhir per peer, dan cap waktu yang berhenti maju berarti peer-nya hilang, apa pun kata tanda antarmuka. Antarmuka yang dikonfigurasi tanpa jabat tangan terkini adalah salah satu positif palsu tersering dalam pemantauan buatan sendiri.
Tabel 220 menuturkan kisah IPsec
strongSwan memasang rute bagi pemilih yang dinegosiasikan di tabel 220 ketika pemasangan rute diaktifkan. ip route list table 220 karena itu memisahkan yang dinegosiasikan dari yang dirutekan: tabel kosong di samping koneksi yang termuat berarti SA IKE dan CHILD sudah naik sementara tidak ada lalu lintas yang diarahkan ke sana. Periksa ip xfrm state di sampingnya, karena perintah itu mendaftar asosiasi keamanan yang terpasang dan titik ujungnya.
Kebijakan jebakan adalah kasus yang perlu diwaspadai. Ia menunggu lalu lintas menarik alih-alih merutekannya, jadi tabel tetap kosong sampai sesuatu memicu terowongan.
Status manajer dan status daemon adalah dua daftar berbeda
NetworkManager hanya mendaftar koneksi yang dimilikinya. nmcli -t -f NAME,TYPE connection show --active tidak mengembalikan apa pun untuk terowongan yang dijalankan langsung oleh wg-quick atau oleh daemon OpenVPN.
Pembedaan itu penting ketika skrip harus memutuskan manajer mana yang ditanyai. Pilih yang benar-benar memiliki terowongan di host ini dan abaikan diamnya yang lain. Jika keduanya ada, putuskan mana yang berwenang dan nonaktifkan yang kedua, karena dua manajer yang menulis ulang rute pada satu antarmuka menghasilkan kegagalan yang tak bisa direproduksi siapa pun. Entri yang hilang adalah informasi tentang manajer, bukan tentang terowongan.
Ikat langkah berikutnya pada uji yang dibutuhkannya
Menjajaki port UDP tidak membuktikan apa pun tentang kesiapan, karena UDP tidak punya jabat tangan dan nc -u berhasil begitu paket keluar. Uji apa yang sebenarnya dikonsumsi langkah berikutnya: sambungan TCP ke port yang diteruskan, permintaan ke host di dalam terowongan, nama yang hanya terurai di sana. Batasi tunggu dengan batas waktu dan jumlah percobaan, lalu gagal dengan lantang saat keduanya habis.
Kait mengalahkan penjajakan ketika klien menyediakannya. --up dan --down skrip OpenVPN berjalan setelah antarmuka berubah status, yang menghapus balapan sepenuhnya, tetapi keduanya berjalan dengan hak istimewa yang dipertahankan daemon. Jika OpenVPN turun ke akun tanpa hak istimewa lewat user dan group, kait berjalan sebagai akun itu. Menyalakan ulang layanan sistem lalu memerlukan sudo untuk mengizinkan persis perintah itu. Serahkan percobaan ulang kepada manajer layanan alih-alih ke loop cron: kebijakan restart terbatas dengan batas mulai menyingkap terowongan rusak, sedangkan loop tanpa batas menyembunyikannya tanpa akhir.