Та /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-д хор хөнөөлгүй бөгөөд дараагийн хүнийг төөрөгдүүлж, эцэст нь буруу файлыг засварлана.

Холбоотой нийтлэлүүд