Нэг образоос гарсан хоёр Ubuntu машин, нэг VPN профайл, нэвтрэх үед эсрэг үр дүн: нэгэн дээр ажлын ширээ гарч ирэхээс өмнө туннель ажиллаж байгаа бол нөгөө дээр огт өргөгддөггүй. Энд профайл нь хувьсагч биш. Ялгаа нь гурван бүрэлдэхүүний алийг нь эхлүүлэх тушаал өгсөнд байгаа бөгөөд тэдгээр гурав нэг унтраалгыг хуваалцдаггүй.

Тэднийг зэрэгцүүлэн харьцуулах нь таамаглахаас хурдан. Тус бүр нь танигдах аргаар бүтэлгүйтдэг бөгөөд энэ нь харьцуулалтыг үнэ цэнэтэй болгодог.

Гурван өөр триггертэй гурван эхлүүлэгч

Багцлагдсан openvpn үйлчилгээ нь хамгийн хуучин зам. Түүний init скрипт /etc/default/openvpn файлаас автомат эхлүүлэх жагсаалтыг уншдаг. Хэрэв тэр жагсаалт тайлбарласан эсвэл хоосон үлдээсэн бол скрипт таны нэмсэн ганц тохиргоог биш, тэр хавтсанд байгаа бүх тохиргоог эхлүүлнэ. Нэг туннельд зориулж нэмсэн нэг файл чимээгүйгээр хэдийг ч өргөж болно.

StarterWhat triggers itTypical failure
Init script and templated unitsBoot, plus anything in the autostart listStarts every config, not the one you meant
NetworkManager secondaryActivation of the base Wi-Fi or Ethernet profileNothing happens until that base link comes up
Hand-written unit or wrapperWhatever its WantedBy and ExecStart sayRuns a different binary or environment than your shell

Хүмүүсийн буруу тохируулдаг нь хоёр дахь мөр. NetworkManager импортолсон профайлыг хадгалж, эхлүүлнэ, гэхдээ зөвхөн өөр холболтын хоёрдогч болгон, өөрөөр хэлбэл триггер нь VPN-д биш, сүлжээний холбоосд хамаарна.

Тохиргооны зардал ба хамрах хүрээг харьцуул

init скриптийн зам нэг мөрөнд тооцогдож, машины бүх тохиргоог хамарна. Энэ нь чиглүүлэгчид тохиромжтой, өөр өөр сүлжээнд холбогддог зөөврийн компьютерт тохиромжгүй. NetworkManager-ийн зам UUID хайлт шаардаж, туннелийг нэг үндсэн холболтод уяна. Ажлын SSID дээр өргөгдөж, зочид буудлын сүлжээнд доошоо хэвээр үлдэнэ.

Гараар бичсэн unit нь хамгийн үнэтэй бөгөөд бусад үйлчилгээнүүдтэй харьцуулахад дараалал зэрэг хамгийн их хяналт өгдөг. Шийдвэрлэх хүчин зүйл нь хамрах хүрээ. Хэрэв машин нэг сүлжээ, нэг туннельтэй бол багцлагдсан үйлчилгээ шударга, урьдчилан таамаглах боломжтой. Хэрэв туннель тодорхой Wi-Fi сүлжээг дагах ёстой бол нэмэлт скриптгүйгээр тэр нөхцөлийг илэрхийлдэг нь гуравын дотроос хоёрдогч нь л юм.

Нэг эзэмшигчийг сонгоод бусдыг нь хас

Хоёр эзэмшигчийн эхлүүлдэг профайл ачаалал хооронд өөрчлөгддөг хугацаа үүсгэдэг, энэ нь аль нэг механизмаас ч дор. Эзэмшигчийг сонгоод, дараа нь өрсөлдөгч замыг санамсаргүй биш, зориуд унтраа.

# who is configured to start something?
grep -v '^#' /etc/default/openvpn
systemctl list-units 'openvpn*'
nmcli -g connection.secondaries connection show 'Work Wi-Fi'

# NetworkManager: attach the tunnel to the base link by UUID
TUNNEL=$(nmcli -g UUID connection show 'Corp Tunnel')
nmcli connection modify 'Work Wi-Fi' +connection.secondaries "$TUNNEL"

Хэрэв хасагдаж байгаа нь багцлагдсан зам бол зөв дарааллаар хий: AUTOSTART-г none болгож, үүссэн unit-ууд шинэ жагсаалтыг авахын тулд systemctl daemon-reload-г ажиллуул, дараа нь хэрэггүй болсон загварын хувилбарыг унтраа. Дахин ачаалахыг алгасвал хуучин unit-ууд идэвхтэй үлдэж, өөрчлөлт нөлөөгүй мэт харагдана.

Тасалдсан зогсолт нь хязгаарлагдмал хариулттай тусдаа асуудал. TimeoutStopSec нь systemd SIGKILL илгээхээс өмнө хэр удаан хүлээхийг хязгаарлана. Үүнийг тохируулах зөв газар нь drop-in файл, учир нь багцлагдсан unit-ийг засварлавал дараагийн шинэчлэлтэд өөрчлөлт алдагдана.

Бодитоор юу эхэлснийг шалга

Дахин ачаалж, тохиргооны файлд итгэхийн оронд нотолгоог унш. Туннелийг эзэмшдэг unit идэвхтэй төлөв болон ачаалалтай тохирох эхлэлийн цагийн тэмдгийг харуулж, VPN интерфейс таны нэвтрэхээс өмнө бий болно.

systemctl is-enabled openvpn-client@office
systemctl status openvpn-client@office --no-pager
nmcli -f GENERAL.STATE,connection.secondaries connection show 'Work Wi-Fi'
ip -brief link show tun0

Энд бас нэг шалгалт хамаарна: unit-ийн ExecStart таны бодож байгаа бинари руу чиглэж байгаа эсэхийг батал. Орон нутгийн хөрвүүлсэн клиент эсвэл snap багц нь ихэвчлэн тодорхой зам эсвэл snap run боолт шаарддаг, учир нь systemd таны бүрхүүлийн хайлтын дарааллыг өвлөдөггүй. command -v openvpn-г unit файлтай харьцуулбал үүнийг секундын дотор шийднэ.

Сонгосон эзэмшигчийг профайлын нэрийн дэргэд машины тэмдэглэлд бич. Алга болсон туннелийг дибаг хийх дараагийн хүн харьцуулалтыг давтахгүй, тэр мөрөөс эхэлнэ.

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