NetworkManager импорты OpenVPN және WireGuard файлдарында сәтсіз аяқталады
Әдетте профиль емес, талдағыш сынады. Плагинді тексеріңіз, импортталған қосылымды оқыңыз, secret жалаушалары мен маршруттарды түзетіңіз, содан кейін қайта жүктеуді тексеріңіз.
GNOME параметрлерінде Файлдан импорттау… таңдадым, өндіруші клиентімен жұмыс істейтін профильді таңдадым, диалог тізімге ештеңе қоспай жабылды. Екінші ноутбукта импорт аяқталды, қосылым профиль атымен пайда болды, содан кейін бірінші аутентификация сұранысында сәтсіз аяқталды. NetworkManager сіздің .ovpn немесе wg-quick файлын ешқашан сол күйінде орындамайды. Ол файлды талдағышқа береді, талдағыш оны NetworkManager-дің өз қосылым форматына айналдырады, содан кейін туннель осы талданған нысаннан құрылады — құпиялар, маршруттар, DNS және қалғанының бәрі. Сондықтан пайдалы сұрақ файлдың неге бүлінгені емес, талдау жүргізілді ме және ол нені сақтады.
Импорт файлмен шын мәнінде не істейді
OpenVPN үшін талдағыш плагин пакетінде тұрады, ал ол жасайтын қосылым org.freedesktop.NetworkManager.openvpn сияқты D-Bus қызметіне сілтейді. Плагин жоқ болса, талдағыш та жоқ: тип nmcli үшін белгісіз, ал VPN қосуға арналған графикалық тізім импорт жазбасын мүлде көрсетпеуі мүмкін. WireGuard бір маңызды жағынан ерекшеленеді — NetworkManager 1.30 сериясынан бастап өзінің WireGuard параметрлерін ұстайды, сондықтан жеке плагин пакеті жоқ, бірақ wg-quick оқу құралы оны жеткізетін жинақтарда ғана бар.
Қалай болғанда да файл бір рет оқылады. Нәтиже /etc/NetworkManager/system-connections/ астында keyfile ретінде жазылады, қосылым атымен аталады, root-қа тиесілі және басқа пайдаланушылар оқи алмайды, өйткені онда кілт материалы бар. Бұл keyfile енді қосылым; түпнұсқа .ovpn кейін өңдеу ештеңені өзгертпейді.
Үш симптом үш түрлі кезеңге жатады. Импорт жазбасының болмауы немесе белгісіз тип плагин немесе нұсқа жетіспейтінін білдіреді. Директиваны атайтын импорт қатесі талдағыш файлды оқып, оның бір бөлігін қабылдамағанын білдіреді. Бар болған, бірақ ешқашан белсендірілмейтін қосылым талданған нысанның толық емес екенін немесе сервер оны қабылдамайтынын білдіреді. Бірдеңені өңдеу алдында қай үш жағдайдың сізде екенін анықтаңыз.
Профильді жөндеу алдында плагинді растаңыз
Жоқ плагин дәл бүлінген профиль сияқты көрінеді, сондықтан алдымен буманы тексеріңіз. Debian мен Ubuntu-да OpenVPN қолдауы network-manager-openvpn және жұмыс үстелі көмекшісі ретінде жеткізіледі; Fedora-да бумалар NetworkManager-openvpn және NetworkManager-openvpn-gnome; Arch-та бұл networkmanager-openvpn.
dpkg -l network-manager-openvpn-gnome | tail -n 2 rpm -q NetworkManager-openvpn pacman -Q networkmanager-openvpn
Содан кейін абсолютті жолдан импорттаңыз: nmcli connection import type openvpn file /home/you/profile.ovpn. Салыстырмалы жолдар әдетте жұмыс істейді, бірақ каталогты ауыстырған shell жылдам импортты айналма жолға айналдырады. WireGuard үшін nmcli --version тексеріңіз және ядро жағы modprobe wireguard арқылы бар екеніне көз жеткізіңіз; модуль жоқ машинада сәтті өткен импорт құрылғысы ешқашан көрінбейтін қосылым қалдырады. nmcli анықтамасы import ішкі командасын және қабылданатын тип атауларын құжаттайды. Егер type wireguard бірден қабылданбаса, жинақ бұл функциядан ескі, ал дұрыс қадам — дистрибутив бумасы немесе backport, конфигурацияны еркін каталогқа көшіріп, бірдеңе оны оқиды деп үміттену емес.
OpenVPN қосылымын оқыңыз, .ovpn емес
Қосылым пайда болғаннан кейін файлды қайта оқымай, талданған параметрлерді оқыңыз: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Сізге remote және порт, тасымал, сәйкестендіру материалы — ca, cert, key, tls-auth немесе tls-crypt — және аутентификация әдісі керек. Жеке кілт құпиясөзі бар профильде sudo nmcli --show-secrets connection show "Work VPN" қосыңыз және secret жалаушаларына қараңыз: 0 — none, яғни құпия keyfile-да; 1 — agent-owned; 2 — not-saved, яғни ол ешқашан keyfile-ға жазылмайды; 4 — not-required, яғни құпия мүлде қажет емес. Бұлар биттер, шкала емес, сондықтан 3 — жай ғана agent-owned плюс not-saved. Сессия сайын бір рет сұралатын құпия — agent-owned (1), оны агент сұрайды; бұл үшін жеке жалауша нөмірі жоқ. Жалаушалардың сәйкессіздігі профильдің жұмыс үстелі апплетінен қосылып, скрипттен немесе жүктелу кезінде сәтсіз болуының әдеттегі себебі.
Талдағыштың нені тастағанын көрудің ең жылдам жолы — плагиннен файлды қайта жазуын сұрап, одан кейін оны салыстыру: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Сол diff-те жоғалатын директивалар қосылу кезінде болмайды. Hook-тар әдеттегі күдіктілер — script-security, up, down және route-up жоғарылатылған құқықтармен орындалатын скриптті күтеді және әдейі тасымалданбайды. Импорттың сәтті болуы үшін тексеруді төмендетпеңіз және қосымша артықшылық бермеңіз; қолдау көрсетілмеген опция әдетте қолжетімсіз серверді емес, плагиннің функция жиынтығын көрсетеді. Бұл мінез-құлықты NetworkManager dispatcher скриптіне немесе сервер жағындағы саясатқа көшіріңіз.
Сәйкестендіру өрістерінің сақталғанын да растаңыз: CA сілтемесі, remote-cert-tls және профиль сүйенген кез келген атау тексерісі. Оларсыз көтерілетін қосылым сол мекенжайда жауап беретін кез келген нәрсемен сөйлесуі мүмкін.
WireGuard қосылымын оқыңыз, wg-quick файлын емес
wg-quick файлы — shell семантикасы бар формат; импортталған қосылым — параметрлер жиынтығы. PrivateKey интерфейстің жеке кілті болады, Address бір немесе бірнеше IPv4 және IPv6 мекенжайына айналады, DNS NetworkManager-дің resolver қасиеттеріне салыстырылады, MTU wireguard.mtu-ға салыстырылады (wg-quick-тің өз әдепкі мәні — 1420), ал әрбір peer блогы ашық кілт, endpoint, рұқсат етілген IP және persistent keepalive бар peer жазбасына айналады. Не сақталғанын nmcli --show-secrets connection show wg0 арқылы шығарыңыз; егер peer тізімі бұл шығыста көрінбесе, keyfile-ды оқыңыз:
sudo sed -n '/^\[wireguard\]/,/^\[/p' /etc/NetworkManager/system-connections/wg0.nmconnection
Сақталмайтын нәрсе — wg-quick-тің shell жартысы. PreUp, PostUp, PreDown, PostDown және Table — сол құралдың мінез-құлқы, WireGuard интерфейсінің атрибуттары емес, сондықтан импорттан кейін оларды ешнәрсе орындамайды. Егер түпнұсқа әдепкі маршрутты тыныш қалдыру үшін Table = off қолданса, жаңа NetworkManager шығарылымдары сол мақсатта ip4-auto-default-route және ip6-auto-default-route ұсынады; қосылым скрипт сияқты әрекет етеді деп болжау орнына оларды анық орнатыңыз. Арнайы маршрутты итерген hook сол маршрутты қосылымның маршруттау параметрлерінде қажет етеді, әйтпесе ол жай ғана жетіспейді.
Қосылымға дәл бір иесін беріңіз
Классикалық кейінгі ақау — келесі жүктеуге дейін жұмыс істеп, содан кейін циклге түсетін қосылым. Әдетте [email protected] бұрынғы тәжірибеден әлі қосулы болатын, немесе өндіруші клиенті өз daemon-ын іске қосатын, және екі иесі бірдей тағайындау үшін маршруттар мен DNS жазды. NetworkManager resolver-ді өз жолымен орнатады, wg-quick resolvconf арқылы жазады, ал соңғы жазған жеңеді — сол себепті атау шешімі жұмыс істейді, содан кейін тоқтайды, содан кейін қайта жұмыс істейді. systemctl status wg-quick@wg0, nmcli connection show --active және ip link show type wireguard тексеріңіз, содан кейін metric-ті реттеудің орнына екінші иесін өшіріңіз.
Егер сізге шынымен екеуі де керек болса, оларға жеке интерфейстер мен қиылыспайтын рұқсат етілген IP беріңіз және әдепкі маршрутты дәл біреуі орнатсын. Әртүрлі metric-тері бар екі әдепкі маршрут split tunnel емес; бұл екінші болып іске қосылатын қызмет шешетін жарыс. Қайта қосылғаннан кейін қолданылған күйді тағы қарап шығыңыз — бәрін жұмыс істететін бір реттік қолмен resolver түзетуі импорттың толық екеніне дәлел емес.
Трафикпен тексеріңіз және қайта жүктеуден өтіңіз
Қосылымды nmcli connection up "Work VPN" арқылы көтеріңіз, содан кейін белгішеге сенудің орнына күйді, мекенжайды және маршруттарды оқыңыз: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default және тек туннель ішінде шешілетін атаудың нақты сұрауы. Handshake немесе сәтті ping тек криптографияның жұмыс істейтінін дәлелдейді; ол форвардинг, split tunnel префикстері немесе жеке DNS туралы ештеңе айтпайды, ал әдетте бұзылатын бөліктер — дәл солар.
Содан кейін қайта жүктеңіз және қайталаңыз. Autoconnect мінез-құлқы, аты өзгертілген интерфейс және құрылғыдан кейін жүктелетін плагин — бұлардың барлығы тек таза жүктеуде көретін ақаулар. journalctl -u NetworkManager -b --no-pager | tail -n 40 daemon-ның осы жүктеуде осы қосылыммен не істегенін көрсетеді. Екінші компьютер үшін keyfile-ды көшіріңіз және оны root меншігінде 600 режимінде ұстаңыз, немесе OpenVPN үшін nmcli connection export қолданып, алынған .ovpn файлын қайта импорттаңыз — экспорт жолының WireGuard баламасы жоқ, сондықтан бұл бағыт файл көшірмесі немесе қорғалған түпнұсқадан жаңа импорт.
Қысқа нұсқа, ретімен: плагинді немесе NetworkManager нұсқасын растаңыз, абсолютті жолдан импорттаңыз, secret жалаушаларын қоса талданған параметрлерді оқыңыз, OpenVPN экспортын түпнұсқамен салыстырыңыз, WireGuard жағындағы hook-тар мен маршруттарды тексеріңіз, кез келген екінші иесін өшіріңіз, содан кейін қайта жүктеуден кейін атау шешімін және маршрут кестесін тексеріңіз. Қосылым осының бәрінен өтсе, оны бастаған профиль файлы қорғалған қоймаға қайта орала алады.