NetworkManager içe aktarma OpenVPN ve WireGuard dosyalarında başarısız oluyor
Genellikle kırılan profil değil ayrıştırıcıdır. Eklentiyi denetleyin, içe aktarılan bağlantıyı okuyun, secret bayraklarını ve rotaları düzeltin, ardından yeniden başlatmayı test edin.
GNOME Ayarları'nda Dosyadan içe aktar… seçeneğini seçtim, satıcının istemcisiyle çalışan bir profil seçtim ve iletişim kutusu listeye hiçbir şey eklemeden kapandı. İkinci bir dizüstü bilgisayarda içe aktarma tamamlandı, bağlantı profilin adıyla göründü ve ardından ilk kimlik doğrulama isteminde başarısız oldu. NetworkManager .ovpn veya wg-quick dosyanızı hiçbir zaman olduğu gibi çalıştırmaz. Dosyayı bir ayrıştırıcıya verir, ayrıştırıcı onu NetworkManager'ın kendi bağlantı biçimine dönüştürür ve oradan itibaren tünel bu ayrıştırılmış nesneden inşa edilir — sırlar, rotalar, DNS ve her şey. Yani yararlı soru dosyanın neden bozuk olduğu değil, ayrıştırmanın gerçekleşip gerçekleşmediği ve neyi koruduğudur.
İçe aktarma dosyayla gerçekte ne yapar
OpenVPN için ayrıştırıcı eklenti paketinde yaşar ve oluşturduğu bağlantı org.freedesktop.NetworkManager.openvpn gibi bir D-Bus hizmetine işaret eder. Eklenti yoksa ayrıştırıcı da yoktur: tür nmcli için bilinmezdir ve grafik VPN ekleme listesi hiç içe aktarma girdisi göstermeyebilir. WireGuard önemli bir noktada farklıdır — NetworkManager 1.30 serisinden beri kendi WireGuard ayarlarını taşır, bu yüzden ayrı bir eklenti paketi yoktur, ancak wg-quick okuyucusu yalnızca onu içeren derlemelerde bulunur.
Her iki durumda da dosya bir kez okunur. Sonuç /etc/NetworkManager/system-connections/ altında keyfile olarak yazılır, bağlantının adını alır, root'a aittir ve anahtar malzemesini içerdiği için diğer kullanıcılar tarafından okunamaz. Artık bağlantı bu keyfile'dır; orijinal .ovpn dosyasını sonradan düzenlemek hiçbir şeyi değiştirmez.
Üç belirti üç farklı aşamaya aittir. İçe aktarma girdisinin olmaması veya bilinmeyen tür, eklentinin ya da sürümün eksik olduğu anlamına gelir. Bir yönergeyi adlandıran içe aktarma hatası, ayrıştırıcının dosyayı okuyup bir kısmını reddettiği anlamına gelir. Var olan ama hiç etkinleşmeyen bir bağlantı, ayrıştırılmış nesnenin eksik olduğu ya da sunucunun onu reddettiği anlamına gelir. Herhangi bir şeyi düzenlemeden önce hangi üç durumdan birine sahip olduğunuza karar verin.
Profili hata ayıklamadan önce eklentiyi doğrulayın
Eksik bir eklenti tam olarak bozuk bir profil gibi görünür, bu yüzden önce paketi kontrol edin. Debian ve Ubuntu'da OpenVPN desteği network-manager-openvpn artı bir masaüstü yardımcısı olarak gelir; Fedora'da paketler NetworkManager-openvpn ve NetworkManager-openvpn-gnome'dur; Arch'ta networkmanager-openvpn'dir.
dpkg -l network-manager-openvpn-gnome | tail -n 2 rpm -q NetworkManager-openvpn pacman -Q networkmanager-openvpn
Ardından mutlak bir yoldan içe aktarın: nmcli connection import type openvpn file /home/you/profile.ovpn. Göreli yollar genellikle çalışır, ancak dizini değiştiren bir kabuk hızlı bir içe aktarmayı dolambaçlı yola çevirir. WireGuard için nmcli --version komutunu kontrol edin ve çekirdek tarafının modprobe wireguard ile mevcut olduğundan emin olun; modül olmadan bir makinede başarılı olan bir içe aktarma, aygıtı asla görünmeyen bir bağlantı bırakır. nmcli referansı import alt komutunu ve kabul edilen tür adlarını belgeler. type wireguard doğrudan reddedilirse, derleme bu özellikten eskidir ve doğru adım bir dağıtım paketi veya backport'tır — yapılandırmayı rastgele bir dizine kopyalayıp bir şeyin onu okumasını ummak değil.
OpenVPN bağlantısını okuyun, .ovpn dosyasını değil
Bağlantı oluşturulduktan sonra dosyayı yeniden okumak yerine ayrıştırılmış ayarları okuyun: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Remote ve portu, taşımayı, kimlik malzemesini — ca, cert, key, tls-auth veya tls-crypt — ve kimlik doğrulama yöntemini istiyorsunuz. Özel anahtar parolası olan bir profilde sudo nmcli --show-secrets connection show "Work VPN" komutunu ekleyin ve secret bayraklarına bakın: 0 none'dır, yani sır keyfile'da durur; 1 agent-owned'dır; 2 not-saved'dır, yani asla keyfile'a yazılmaz; 4 not-required'dır, yani hiç sır gerekmez. Bunlar bitlerdir, ölçek değil, bu yüzden 3 basitçe agent-owned artı not-saved'dır. Oturum başına bir kez sorulan bir sır, agent'ın istediği agent-owned (1) durumundadır; bunun için ayrı bir bayrak numarası yoktur. Bayrak uyuşmazlığı, bir profilin masaüstü applet'inden bağlanıp bir betikten veya açılışta başarısız olmasının olağan nedenidir.
Ayrıştırıcının neyi attığını görmenin en hızlı yolu, eklentiden dosyayı geri yazmasını istemek ve sonra karşılaştırmaktır: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Bu farkta kaybolan yönergeler bağlantı zamanında var olmayacaktır. Hook'lar olağan şüphelilerdir — script-security, up, down ve route-up yükseltilmiş haklarla çalışan bir betik bekler ve kasıtlı olarak taşınmaz. Bir içe aktarmanın başarılı olması için doğrulamayı düşürmeyin ve ek ayrıcalık vermeyin; desteklenmeyen bir seçenek genellikle eklentinin özellik kümesini yansıtır, erişilemeyen bir sunucuyu değil. Bu davranışı bir NetworkManager dispatcher betiğine veya sunucu tarafı politikaya taşıyın.
Kimlik alanlarının hayatta kaldığını da doğrulayın: CA referansı, remote-cert-tls ve profilin dayandığı herhangi bir ad denetimi. Bunlar olmadan yükselen bir bağlantı, o adreste yanıt veren herhangi bir şeyle konuşuyor olabilir.
WireGuard bağlantısını okuyun, wg-quick dosyasını değil
wg-quick dosyası kabuk semantiği olan bir biçimdir; içe aktarılan bağlantı bir ayarlar kümesidir. PrivateKey arayüzün özel anahtarı olur, Address bir veya daha fazla IPv4 ve IPv6 adresi olur, DNS NetworkManager'ın çözümleyici özelliklerine eşlenir, MTU wireguard.mtu'ya eşlenir (wg-quick'in kendi varsayılanı 1420'dir) ve her peer bloğu genel anahtar, endpoint, izin verilen IP'ler ve persistent keepalive içeren bir peer girdisi olur. Neyin saklandığını nmcli --show-secrets connection show wg0 ile yazdırın; peer listesi bu çıktıda görünmüyorsa keyfile'ı okuyun:
sudo sed -n '/^\[wireguard\]/,/^\[/p' /etc/NetworkManager/system-connections/wg0.nmconnection
Hayatta kalmayan şey wg-quick'in kabuk yarısıdır. PreUp, PostUp, PreDown, PostDown ve Table o aracın davranışıdır, bir WireGuard arayüzünün öznitelikleri değildir, bu yüzden bir içe aktarmadan sonra onları hiçbir şey çalıştırmaz. Orijinal, varsayılan rotayı rahat bırakmak için Table = off kullandıysa, yeni NetworkManager sürümleri aynı amaçla ip4-auto-default-route ve ip6-auto-default-route sunar; bağlantının betik gibi davrandığını varsaymak yerine bunları açıkça ayarlayın. Özel bir rota iten bir hook, o rotanın bağlantının yönlendirme ayarlarında olmasına ihtiyaç duyar, yoksa basitçe eksik olur.
Bağlantıya tam olarak bir sahip verin
Klasik sonraki arıza, bir sonraki açılışa kadar çalışan ve sonra döngüye giren bir bağlantıdır. Genellikle [email protected] önceki bir deneyden hâlâ etkindir ya da bir satıcı istemcisi kendi daemon'unu başlatmıştır ve iki sahip aynı hedef için rotalar ve DNS yazıyordu. NetworkManager çözümleyiciyi kendi yoluyla ayarlar, wg-quick resolvconf üzerinden yazar ve son yazan kazanır — böylece ad çözümlemesi çalışır, sonra durur, sonra yeniden çalışır. systemctl status wg-quick@wg0, nmcli connection show --active ve ip link show type wireguard komutlarını kontrol edin, sonra metric'ini ayarlamak yerine ikinci sahibi devre dışı bırakın.
Gerçekten ikisine de ihtiyacınız varsa, onlara ayrı arayüzler ve ayrık izin verilen IP'ler verin ve varsayılan rotayı tam olarak biri kursun. Farklı metric'lere sahip iki varsayılan rota split tunnel değildir; ikinci başlayan hizmetin belirlediği bir yarıştır. Ve yeniden bağlandıktan sonra uygulanan durumu tekrar inceleyin — işleri yoluna koyan tek seferlik elle bir çözümleyici düzenlemesi, içe aktarmanın eksiksiz olduğunun kanıtı değildir.
Trafikle doğrulayın ve yeniden başlatmayı atlatın
Bağlantıyı nmcli connection up "Work VPN" ile kaldırın, sonra simgeye güvenmek yerine durumu, adresi ve rotaları okuyun: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default ve yalnızca tünelin içinde çözülen bir adın gerçek sorgusu. Bir handshake veya başarılı bir ping yalnızca kriptografinin çalıştığını kanıtlar; iletme, split tunnel önekleri veya özel DNS hakkında hiçbir şey söylemez ve genellikle bozulan kısımlar bunlardır.
Sonra yeniden başlatın ve tekrarlayın. Autoconnect davranışı, yeniden adlandırılmış bir arayüz ve aygıttan sonra yüklenen bir eklenti, yalnızca temiz bir açılışta gördüğünüz arızalardır. journalctl -u NetworkManager -b --no-pager | tail -n 40, daemon'un bu açılışta bu bağlantıyla ne yaptığını gösterir. İkinci bir masaüstü için keyfile'ı kopyalayın ve root sahipliğinde 600 modunda tutun veya OpenVPN için nmcli connection export kullanın ve ortaya çıkan .ovpn dosyasını yeniden içe aktarın — dışa aktarma yolunun WireGuard eşdeğeri yoktur, bu yüzden o yön bir dosya kopyası ya da korunan orijinalden yeni bir içe aktarmadır.
Kısa sürüm, sırasıyla: eklentiyi veya NetworkManager sürümünü doğrulayın, mutlak yoldan içe aktarın, secret bayrakları dahil ayrıştırılmış ayarları okuyun, OpenVPN dışa aktarımını orijinalle karşılaştırın, WireGuard tarafında hook'ları ve rotaları kontrol edin, her ikinci sahibi devre dışı bırakın ve yeniden başlatmadan sonra bir ad sorgusunu ve rota tablosunu doğrulayın. Bir bağlantı tüm bunları geçtiğinde, onu başlatan profil dosyası korumalı depoya geri dönebilir.