wg-quick интерфейсті тоқтатқанда wg0.conf файлын неге қайта жазады
SaveConfig — өшіру кезіндегі сақтау, фондық синхрондау емес. Туннель қосылып тұрғанда файлды өңдеңіз, қайта іске қосу ескі күйді оның үстіне жазуы мүмкін.
/etc/wireguard/wg0.conf файлына peer қосасыз, systemctl restart wg-quick@wg0 іске қосасыз, ал қайта қарағанда peer файлдан жоғалып кеткен. Ешнәрсе ешнәрсені бүлдірген жоқ. Қайта іске қосу — тоқтатудан кейінгі іске қосу, ал тоқтату қадамы ағымдағы орындалу күйін жаңа ғана өңдеген файлдың үстіне жазуы мүмкін. Жауапты параметр өзіңіз өңдеген сол файлда тұрады, және бұл циклды бірінші рет кездескенде соншалықты шатастыратын нәрсе.
Екі күй, бір файл және өшіру кезіндегі сақтау
WireGuard-тың орындалу күйі мен wg-quick конфигурация файлы байланысты, бірақ әртүрлі. Файл — кіріс: wg-quick оны оқиды, интерфейсті жасайды, мекенжайлар мен маршруттарды орнатады және peer-лерді конфигурациялайды. Ядро құрылғысы — тірі нысан, ал wg арқылы жасалған төменгі деңгейлі өзгерістер ешқашан өздігінен кері жазылмайды.
Бір бағытты қоспағанда. Интерфейс бөлімінде SaveConfig = true пайда болғанда, wg-quick интерфейсті түсірудің бөлігі ретінде тірі конфигурацияны файлға сақтайды. wg-quick нұсқаулығы дәл осы туралы ескертеді: интерфейс қосылып тұрғанда файлға жасалған өзгерістер оны жойған кезде үстінен жазылуы мүмкін. Бұл өшіру кезіндегі сақтау, фондық таймер емес, сондықтан ол тек бірдеңе интерфейсті тоқтатқанда іске қосылады.
| Action | What it writes | When it surprises you |
|---|---|---|
wg set on a live interface | Kernel state only | After reboot, when the file was never updated |
wg-quick down with SaveConfig | Live state into the file | Right after you edited the file |
wg syncconf | Kernel state only | Never; it does not touch the file |
wg-quick up | Kernel state from the file | If the file is stale, you get the old tunnel |
Кестені реттілік туралы ескерту ретінде оқыңыз. Бұл саладағы әрбір кездейсоқ жоғалту сақтаудан кейін емес, оған дейін болған өңдеуден туындайды.
Алдымен тоқтатыңыз, екінші өңдеңіз, соңында іске қосыңыз
Егер файл сіздің шындық көзіңіз болса, файлды үмітпен емес, құрылыммен беделді етіңіз. Интерфейсті түсіріңіз, оның кеткеніне көз жеткізіңіз, содан кейін өңдеңіз, содан кейін оны қайта көтеріңіз. Ереже қарапайым: сақтау әлі орындала алатын кезде ешқандай өңдеу болмауы керек.
sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0
Сақтық көшірме жолы — рәсім емес. Егер туннель осы машинаға жетудің жолы болса, түсіру қадамы сеансыңызды аяқтауы мүмкін, ал дискідегі көшірме плюс консоль немесе сыртқы жол — жалғыз жұмыс істейтін кері қайтару. Екінші жолды оған сенбес бұрын тексеріңіз: үнсіз сәтсіздікке ұшырайтын скрипттегі ескірген интерфейс атауы — адамдардың әлі тірі файлды өңдеу тәсілі.
Қалыпты түсіру алдында SaveConfig = false орнату — екінші қабылданған жол, және ол wg-quick шынымен оқитын файлда жасалуы керек. Ол сол бір автоматты сақтауды болдырмайды. Ол жеке NetworkManager профилін, маршрутизатор экспортын немесе контейнер кіру нүктесін өңдеулеріңізді қайта жүктеуге мәжбүрлемейді, өйткені бұл менеджерлер бұл файлды мүлде оқымайды.
Интерфейсті жыртпай peer өзгерістерін қолданыңыз
Әр өңдеу үзіліс қажет етпейді. Peer деңгейіндегі өзгерістерді файлды конфигурацияға айналдырып, оны синхрондау арқылы жұмыс істеп тұрған интерфейске қолдануға болады, бұл түсіру қадамын толығымен айналып өтеді, демек сақтауды да айналып өтеді:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip қадамы маңызды. Ол файлды тек wg-quick-ке тән кілттерді алып тастап шығарады, сондықтан мекенжайлар, DNS және маршруттау директивалары оларды түсінбейтін құралға берілмейді. Содан кейін синхрондау интерфейсті қайта жасамай peer-лер мен кілттерді тірі құрылғыға қолданады, сондықтан бар сеанстар мен маршруттар сақталады.
Шектеулер туралы нақты болыңыз. Peer-лерді синхрондау интерфейс мекенжайын, wg-quick қосқан маршруттарды немесе шешуші конфигурациясын өзгертпейді, өйткені олардың ешқайсысы WireGuard құрылғысына тиесілі емес. AllowedIPs-ке ішкі желі қосып, ядро оны маршруттайды деп күту — классикалық қате оқу; маршрутты көтеру кезінде wg-quick немесе өзіңіз қосуы керек.
Бірдеңені өңдеу алдында интерфейс кімге тиесілі екенін тексеріңіз
Конфигурация жүйесі басқаратын жұмыс үстелінде немесе серверде файл кіріс емес, шығыс болуы мүмкін. NetworkManager қосылымы, маршрутизатор жасаған профиль немесе контейнердің іске қосылу скрипті — барлығы бірдей интерфейс атауына ие болуы мүмкін, және бұл жағдайда мінсіз wg-quick тізбегі бәрібір қате артефактіні өңдейді.
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
Үшінші команда тірі конфигурацияны файлмен бірдей форматта, жеке кілтті қоса шығарады, бұл салыстыру үшін пайдалы және тикетте қауіпті. Қою алдында оны жасырыңыз; қолдау ағынындағы жеке кілт — тұрақты бұзу, қате басу емес.
Егер қызмет бірлігі белсенді емес, бірақ интерфейс бар болса, оны басқа нәрсе жасаған және файл беделді емес. Сол бір байқау ешнәрсе оқымайтын файлды өңдеуден бір сағат үнемдейді.
Келесі қайта іске қосуды тексеріңіз, содан кейін кері қайтаруды сақтаңыз
Түзетуді шынымен дәлелдейтін тест — екінші қайта іске қосу, өйткені бірінші рет дәл сол тізбек сәтсіз аяқталды. Peer одан аман өткенін және тірі конфигурация әлі дискідегіге сәйкес келетінін растаңыз:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
Қайта іске қосуды екі рет орындаңыз. Бір таза өту сәттілік болуы мүмкін: бірінші қайта іске қосу әлі сақталмаған орындалу өзгерісін тұтынуы мүмкін, сондықтан екіншісі файл мен орындалу біріншісінің соңында келіскенін айтатын нұсқа.
Сақтық көшірмені процестің басынан қосарланған қайта іске қосуды бітіргенге дейін сақтаңыз, содан кейін оны жойыңыз немесе конфигурация каталогынан тысқары жылжытыңыз. Нақты файлдың жанында қалған wg0.conf.bak wg-quick үшін зиянсыз және келесі адамды шатастырады, ол ақырында қатесін өңдейді.