Команд буцаж ирэхэд үйлчилгээ бүтэлгүй харагдаж, тайлбартай төстэй зүйл терминалд хүрэхгүй байна. Тэр чимээгүй байдал нь хүмүүсийн «OpenVPN асахгүй байна» гэж дүрсэлдэг шинж тэмдэг бөгөөд програм юу ч хэлэлгүй үхсэн гэсэн утга бараг байхгүй. Энэ нь мессеж таны уншиж байгаагүй суваг руу явсан, эсвэл таны ажиллуулсан зүйл таны тохируулсан зүйл биш байсан гэсэн үг. Профайлыг сэжигтэн гэж үзэхээ болиод хоёр тохиолдлыг нэг минутаас бага хугацаанд оношлох боломжтой.

Гаралтыг дөрвөн газар шингээдэг: unit-ийн journal, холболтыг эзэмшдэг plugin, туннелийн нөгөө үзүүр, мөн таны ажиллаж байна гэж бодсоноос өөр binary. Тус бүр өөрийн шалгалттай.

Чимээгүй байдал нь та зөв сувгийг ажиглаагүй гэсэн үг

Урд төлөвлөгөөний дуудлага терминал руу хэвлэнэ. Unit journal руу хэвлэх ба бүтэлгүй unit юу ч бичихээс өмнө гарч болно, хэрэв алдаа нь түүнийг хэрхэн эхлүүлсэнд байгаа бол, түүнд юу хэлсэнд байхгүй. Энэ ялгаа чухал: journal-д бичлэг байхгүй нь процесс хэзээ ч үнэхээр ажиллаагүй гэсэн үг, харин нэг бичлэг дараа нь гарах нь ажиллаж, ямар нэг зүйлийг татгалзсан гэсэн үг.

systemctl status openvpn-client@office
journalctl -u openvpn-client@office -b --no-pager

Цэвэр гаралтыг сигналаас ялгахын тулд нэмнэ үү: systemctl show -p Result -p ExecMainStatus openvpn-client@office. Төлөв 1 ба Result=exit-code нь програмын шийдвэр; Result=signal эсвэл таймаут нь харин орчныг зааж байна, профайлыг хэрхэн засах ч үүнийг өөрчлөхгүй. Ямар нэг зүйлийг дахин эхлүүлэхийн өмнө хоёр утгыг бичиж ав, дахин эхлүүлэх нь тэдгээрийг үүсгэсэн түр зуурын төлөвийг устгадаг.

Instance-ийн нэр замны нэг хэсэг

Багцлагдсан загвар unit файлын зам авдаггүй. Instance-ийн нэр авдаг ба тэр нэр профайлыг олохын тулд лавлах замд нэмэгддэг: office Debian ба Ubuntu багцад /etc/openvpn/client/office.conf руу шийдэгддэг. office-v2.conf нэртэй файлыг @office гэж эхлүүлсэн ч хэзээ ч уншигдахгүй бөгөөд unit чимээгүй гарна, учир нь түүний өнцгөөс хийх зүйл байгаагүй. Хайлтын лавлах нь client ба server горимд өөр байдаг тул загварыг солиход ижил алдаа огт өөр газар заадаг.

Тэр зөрүү нь чимээгүй бүтэлгүйтлийн хамгийн нийтлэг эх сурвалж бөгөөд профайл нь зүгээр учраас профайлд харагдахгүй. Юу үнэхээр байгааг жагсааж, багц хүлээж буй аливаа өргөтгөлийг оруулан хоёр нэрийг үсэг үсгээр харьцуул.

ls -l /etc/openvpn/client/
systemctl list-units 'openvpn*' --all

Хэрэв unit идэвхжсэн боловч нэг ч instance жагсаагдаагүй бол идэвхжүүлэлт өөрөө дараа нэр солигдсон нэр рүү зааж болно. Зөв instance-ийг дахин идэвхжүүлэх нь ихэвчлэн хангалттай бөгөөд үлдсэн хуучин unit файлыг устгах нь зүйтэй, дараагийн хүнийг төөрөгдүүлэхгүйн тулд. Үлдсэн unit файл бол дараа нь хэн нэгэнд нэг цагийн зардал болох жижиг зүйл.

Plugin туннелийг эзэмших үед терминал юу ч хардаггүй

Ажлын талын applet-ээс эхэлсэн холболтыг NetworkManager эзэмшдэг бөгөөд түүний OpenVPN гаралт таны нээсэн shell руу биш, тэр үйлчилгээний journal руу явдаг. Client-ийг гараар ажиллуулж юу ч харахгүй байх нь тэр зохицуулалтад хүлээгдэж байгаа зүйл, учир нь гараар ажиллуулсан процесс холболтыг зөөдөг процесс биш.

Journal-оос түүнийг эзэмшдэг үйлчилгээг хайж, дараа нь уншиж чадах нарийвчлалтайгаар парсингыг давтан хий. Доорх хоёр команд нь ижил бүтэлгүйтлийн өөр өөр эзэмшигчдийг хардаг.

journalctl -b -u NetworkManager --no-pager | grep -i -A3 openvpn
openvpn --config /etc/openvpn/client/office.conf --verb 4 --log /tmp/ovpn.log

Бие даасан ажиллагаа нь мессеж уншихад зориулагдсан, удирдлагатай холболтыг орлуулахад биш, хоёулаа дараа нь ялгаатай: DNS интеграци, маршрут, насжилт нь plugin-д хамаарна. Бие даасан ажиллагаанд парсингын алдааг засах нь applet удирдлагыг авах үед нэрийн шийдвэрийг автоматаар засахгүй тул хоёр ажиглалтыг тусад нь бариарай.

Хоёр binary, нэг PATH

Гараар бүтээсэн суулгалт /usr/local дор байвал shell дуудлагад ялдаг, учир нь /usr/local/sbin Ubuntu-гийн анхдагч PATH-д /usr/sbin-ээс өмнө ирдэг. Unit таны PATH-ийг ашиглахгүй; тэр ExecStart дээр бичигдсэн абсолют замыг гүйцэтгэдэг. Тиймээс таны терминалд ажилладаг хувилбар ба үйлчилгээ болж бүтэлгүйтэх хувилбар үнэхээр өөр програмууд байж болно.

Ямар нэг зүйлийг дахин бүтээхийн өмнө хоёрыг харьцуул. Гурав дахь команд нь маргааныг шийддэг.

command -v openvpn
whereis openvpn
systemctl cat openvpn-client@office | grep ExecStart

Өөр нэг орчны ялгаа мөн тэр газар нуугдаж байна. Багцлагдсан unit /run дор systemd түүнд үүсгэдэг ажиллагааны лавлахад тулгуурладаг; тэр тохиргоог орхигдуулсан гараар бичсэн орлуулах unit нэг ч файл онгойлгохоос өмнө бүтэлгүйтэж болно, бүтэлгүйтэл нь OpenVPN мессежгүй ерөнхий татгалзал мэт харагдана.

Client мэдээлж чадахгүй бүтэлгүйтлүүд

Зарим үр дүн алслагдсан төгсгөлд шийдэгддэг. HTTP төлөвөөр хариулж холболтыг хаадаг гарц өөрийн төлөвийг танд хэлсэн бөгөөд дараагийн ашигтай алхам нь таны локал файлууд биш, түүний лог эсвэл итгэмжлэлийн ард байгаа бүртгэл юм. Тэр сценарт локалд юу ч эвдээгүй, нөхөн төлөхөөр профайлыг засах нь дараагийн оношийг хэцүү болгоно. Client-ийн тохиргоог хүрэхийн өмнө тэр логийг унш.

Өөр нэг чимээгүй тохиолдол бол зөв ажиллаж байгаа client юм. Client горимын туннель хэзээ ч порт дээр сонсдоггүй тул нээлттэй сонсогчийг хүлээж буй шалгалт юу ч мэдээлэхгүй бөгөөд бүтэлгүйтэл мэт харагдана. Хоосон портын жагсаалтаас дүгнэлт хийхийн өмнө ямар горим эхлүүлснээ батал.

Давхаргуудыг дарааллаар нь боловсруул: unit байгаа эсэх ба instance-ийн нэр зөв эсэх, journal эсвэл --log файл руу ямар нэг зүйл хүрсэн эсэх, аль binary ба профайл үнэхээр ажилласан, алдаа нь локал эсвэл алслагдсан эсэх. Аливаа хариулт нэг давхаргыг хасна. Профайлаас эхлэх нь хэзээ ч онгойлгогдоогүй байж болох файлыг дахин бичих гэсэн үг.

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