/etc/wireguard/wg0.conf файлына peer кошосуз, systemctl restart wg-quick@wg0 иштетесиз, ал эми кайра караганда peer файлдан жок болуп кеткен. Эч нерсе эч нерсени бузган жок. Кайра иштетүү — токтотуудан кийинки баштоо, ал эми токтотуу кадамы учурдагы аткаруу абалын жаңы эле түзөткөн файлдын үстүнө жазышы мүмкүн. Жооптуу параметр өзүңүз түзөткөн ошол эле файлда турат, жана бул циклди биринчи жолу кезиккенде ушунчалык баш аламан кылат.

Эки абал, бир файл жана өчүрүү учурундагы сактоо

WireGuard'дын аткаруу абалы менен wg-quick конфигурация файлы байланыштуу, бирок айырмаланат. Файл — кирүү: wg-quick аны окуйт, интерфейсти түзөт, даректерди жана маршруттарды коюп, peer'лерди конфигурациялайт. Ядро түзмөгү — тирүү объект, ал эми wg аркылуу жасалган төмөнкү деңгээлдеги өзгөртүүлөр эч качан өзүнөн кайра жазылбайт.

Бир багытты кошпогондо. Интерфейс бөлүмүндө SaveConfig = true пайда болгондо, wg-quick интерфейсти түшүрүүнүн бөлүгү катары тирүү конфигурацияны файлга сактайт. wg-quick колдонмосу дал ушул жөнүндө эскертет: интерфейс күйүп турганда файлга жасалган өзгөртүүлөр аны алып салганда үстүнөн жазылышы мүмкүн. Бул өчүрүү учурундагы сактоо, фондук таймер эмес, ошондуктан ал бир нерсе интерфейсти токтоткондо гана иштейт.

ActionWhat it writesWhen it surprises you
wg set on a live interfaceKernel state onlyAfter reboot, when the file was never updated
wg-quick down with SaveConfigLive state into the fileRight after you edited the file
wg syncconfKernel state onlyNever; it does not touch the file
wg-quick upKernel state from the fileIf 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 үчүн зыянсыз жана кийинки адамды баш аламан кылат, ал акырында туура эмесин түзөтөт.

Тектеш макалалар