Dua mesin Ubuntu daripada imej yang sama, satu profil VPN, hasil bertentangan semasa log masuk: pada satu mesin terowong sudah naik sebelum desktop muncul, pada mesin lain ia tidak pernah naik. Profil bukan pemboleh ubah di sini. Yang berbeza ialah komponen mana antara tiga yang diarahkan memulakannya, dan ketiga-tiganya tidak berkongsi satu suis.

Membandingkannya bersebelahan lebih cepat daripada meneka. Setiap satunya gagal dengan cara yang boleh dikenali, dan itulah yang menjadikan perbandingan ini berbaloi.

Tiga pemula dengan tiga pencetus berbeza

Perkhidmatan openvpn berpeket ialah laluan paling lama. Skrip initnya membaca senarai autostart daripada /etc/default/openvpn. Jika senarai itu dikomentari atau dibiarkan kosong, skrip memulakan setiap konfigurasi yang ditemuinya dalam direktori itu dan bukan satu-satunya yang anda tambah. Satu fail yang ditambah untuk satu terowong boleh menaikkan beberapa tanpa disedari.

StarterWhat triggers itTypical failure
Init script and templated unitsBoot, plus anything in the autostart listStarts every config, not the one you meant
NetworkManager secondaryActivation of the base Wi-Fi or Ethernet profileNothing happens until that base link comes up
Hand-written unit or wrapperWhatever its WantedBy and ExecStart sayRuns a different binary or environment than your shell

Baris kedua ialah yang orang salah konfigurasi. NetworkManager memegang profil yang diimport dan akan memulakannya, tetapi hanya sebagai sekunder kepada sambungan lain, bermakna pencetus itu milik pautan rangkaian dan bukan VPN.

Bandingkan kos persediaan dan skopnya

Laluan skrip init berharga satu baris dan meliputi setiap konfigurasi pada mesin. Itu sesuai untuk penghala dan salah untuk komputer riba yang menyertai rangkaian berbeza. Laluan NetworkManager berharga satu carian UUID dan mengikat terowong kepada satu sambungan asas. Ia naik pada SSID pejabat dan kekal turun pada rangkaian hotel.

Unit yang ditulis tangan paling mahal dan memberi kawalan paling banyak, termasuk susunan berbanding perkhidmatan lain. Skop ialah faktor penentu. Jika mesin mempunyai satu rangkaian dan satu terowong, perkhidmatan berpeket itu jujur dan boleh dijangka. Jika terowong perlu mengikut rangkaian Wi-Fi tertentu, sekunder ialah satu-satunya daripada tiga yang menyatakan syarat itu tanpa skrip tambahan.

Pilih satu pemilik dan buang yang lain

Profil yang dimulakan oleh dua pemilik menghasilkan masa yang berubah antara boot, yang lebih buruk daripada mana-mana mekanisme itu sahaja. Pilih pemiliknya, kemudian lumpuhkan laluan pesaing dengan sengaja, bukan secara tidak sengaja.

# who is configured to start something?
grep -v '^#' /etc/default/openvpn
systemctl list-units 'openvpn*'
nmcli -g connection.secondaries connection show 'Work Wi-Fi'

# NetworkManager: attach the tunnel to the base link by UUID
TUNNEL=$(nmcli -g UUID connection show 'Corp Tunnel')
nmcli connection modify 'Work Wi-Fi' +connection.secondaries "$TUNNEL"

Jika laluan berpeket yang dipersarakan, lakukan dalam urutan yang betul: tetapkan AUTOSTART kepada none, jalankan systemctl daemon-reload supaya unit yang dijana mengambil senarai baharu, kemudian lumpuhkan instans templat yang anda tidak mahu lagi. Melangkau muat semula membiarkan unit lama kekal aktif, dan ia kelihatan seolah-olah perubahan itu tidak memberi kesan.

Hentian yang tergantung ialah masalah berasingan dengan jawapan terbatas. TimeoutStopSec mengehadkan berapa lama systemd menunggu sebelum menghantar SIGKILL. Fail drop-in ialah tempat yang betul untuk menetapkannya, kerana menyunting unit berpeket akan kehilangan perubahan itu pada peningkatan seterusnya.

Sahkan apa yang benar-benar dimulakan

But semula dan baca buktinya dan bukannya mempercayai fail konfigurasi. Unit yang memiliki terowong akan menunjukkan keadaan aktif dan cap masa mula yang sepadan dengan boot, dan antara muka VPN akan wujud sebelum anda log masuk.

systemctl is-enabled openvpn-client@office
systemctl status openvpn-client@office --no-pager
nmcli -f GENERAL.STATE,connection.secondaries connection show 'Work Wi-Fi'
ip -brief link show tun0

Satu lagi pemeriksaan wajar di sini: pastikan ExecStart unit menunjuk kepada binari yang anda fikirkan. Klien yang dikompilasi secara setempat atau pakej snap selalunya memerlukan laluan eksplisit atau pembalut snap run, kerana systemd tidak mewarisi susunan carian shell anda. Membandingkan command -v openvpn dengan fail unit menyelesaikannya dalam beberapa saat.

Tulis pemilik yang dipilih dalam nota mesin, di sebelah nama profil. Orang seterusnya yang menyahpepijat terowong yang hilang akan bermula dari baris itu dan bukan mengulangi perbandingan.

Artikel berkaitan