Pi-г Wi-Fi-аас кабель руу шилжүүлэх нь таван минутын ажил мэт санагдах бөгөөд зөөлтийг нэг биш дөрвөн тусдаа тохиргоо гэж үзвэл л тийм хэвээр үлдэнэ. Таны клиентүүд залгах төгсгөлийн цэгийн нэр яг ижил хэвээр үлдэж болно, харин доорх хаяг өөрчлөгдөнө. Үнэндээ эвдэрдэг зүйл бол хуучин хаягт бэхлэгдсэн сонсогч, одоо ч утасгүй lease рүү чиглэсэн портын дамжуулалт, эсвэл та ажиллагаанаас гаргасан гэж бодсон интерфэйсээр гарч буй буцаах зам юм. Энэхүү заавар алхам бүрт сэргээх замыг нээлттэй байлгадаг тул бүтэлгүй шилжилт зөвхөн дахин ачаалалтад л өртөнө.

Ямар нэг зүйлийг салгахаас өмнө дөрвөн хариуцлагатайг бичээрэй

Дөрвөн тохиргоо шилжилтийг давах эсэхийг шийднэ: Pi-ийн хаяг, холболтын хаяг OpenVPN, чиглүүлэгчийн дамжуулах зорилт болон хариунуудын явдаг зам. Дөрвийг нь кабельд хүрэхээс өмнө бичээрэй, учир нь утасгүй lease алга болсны дараа хуучин утгуудыг машинаас уншиж чадахгүй. Кабелийн интерфэйс утасгүй профайлыг өвлөхгүй бөгөөд Bookworm дээр хаяг NetworkManager дотор амьдардаг бол Bullseye үүнийг dhcpcd.conf дотор хадгалдаг. Утасгүй MAC хаягийг бэхэлсэн захиалга eth0 тухай юу ч хэлэхгүй. Шинэ хаягийг өөрийн нотолгоо шаарддаг шинэ хуваарилалт гэж үзээрэй.

Old wireless lease:   10.42.7.24/24 on wlan0
New wired address:    10.42.7.31/24 on eth0
Client endpoint:      vpn.lab.example:1194/udp

Сонсогч бол хоёр дахь хариуцлагатай. Хэрэв үйлчилгээ тодорхой холболтын хаягаар эхэлсэн бол сокет хуучин интерфэйстэй хамт үхнэ; хэрэв бүх хаягыг холбодог бол сокет амьд үлдэж, чиглүүлэгчийн дүрэм засах цорын ганц зүйл болно.

Дамжуулах зорилт болон буцаах зам нь хүмүүсийн алгасдаг хариуцлагатай нар юм. Одоо ч 10.42.7.24 рүү заасан дамжуулалт ирж буй гар барилтыг Pi-д байхгүй хаяг руу илгээдэг тул клиентүүд серверийн талд нэг ч лог мөргүйгээр тайм-аут болдог. Хоёр холбоос түр зуур идэвхтэй байх үед буцаах зам чухал, учир нь Pi нь чиглүүлэлтийн хүснэгтийн илүүд үздэг интерфэйсээр хариулдаг бөгөөд энэ нь пакет ирсэн интерфэйс байх албагүй. Доорх замын хайлт нь цөм ямар эх сурвалж сонгодогийг харуулна.

Шинэ хаягт итгэхээс өмнө бодит сокетыг уншаарай

Тохиргооны файлууд санаа зорилгыг дүрсэлдэг, сокет бодит байдлыг дүрсэлдэг. Санаж буй тохиргоодоо итгэхийн оронд ажиллаж буй үйлчилгээнээс юунд холбогдсоныг асуугаарай. OpenVPN 2.6 гарын авлага нь --local нэг хаягт холбох гэж тодорхойлж, үүнийг орхивол бүх интерфэйсийг холбодог гэдгийг тэмдэглэдэг.

sudo systemctl cat openvpn-server@server | grep -n -- '--local'
sudo ss -lunp '( sport = :1194 )'

Төлөвийн баганын оронд локал хаягийн баганыг уншаарай. 10.42.7.24:1194 харуулсан мөр нь сокет таны устгах гэж буй хаягт бэхлэгдсэнийг илэрхийлнэ, харин 0.0.0.0:1194 эсвэл *:1194 нь демон интерфэйсийн өөрчлөлтийг өөрөө дагахыг илэрхийлнэ. Хэрэв хаяг бэхлэгдсэн бол амьд сокетыг гараар дахин бичихийн оронд профайлыг засаж, нэгжийг дахин эхлүүлээд, дараа нь үйлчилгээ сертификат, түлхүүрийн файлуудаа хүрч байгаа эсэхийг баталгаажуулаарай.

Зөөлтийг таныг хүрч болохоор байлгах дарааллаар гүйцэтгээрэй

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

ip -br addr show eth0
ip route get 203.0.113.10
nmcli -g ipv4.method,ipv4.addresses con show "Wired connection 1"

Эхний команд eth0 таны зорьсон хаягийг авсан эсэхийг хариулдаг бол хоёр дахь нь цөмийн гадаад очих газарт ашиглах эх хаягийг хэвлэдэг тул өөрчлөлтийн өмнө болон дараа ажиллуулаарай. Хэрэв тэр эх сурвалж одоо ч утасгүй хаяг бол кабелийн холбоос хараахан давуу зам биш бөгөөд гаднаас хийх тест OpenVPN-тэй ямар ч холбоогүй шалтгаанаар бүтэлгүй болно. Дамжуулалтад хүрэхээс өмнө чиглүүлэлтийн давуу талыг засаарай.

Хоёр холбоос идэвхтэй үед Pi нь утасгүй өгөгдмөл замыг илүүд үзэж болно, учир нь тэр эхэнд суулгагдсан эсвэл кабелийн холбоос өндөр метрик хүлээж байна. Bookworm дээр дэмжигддэг тохиргоо нь ipv4.route-metric холболт дээр, харин Bullseye дээр эквивалент нь интерфэйсэд хамаарах metric мөр dhcpcd.conf файлд байна. Буцаах зам нэг командын зайд үлдэхийн тулд утасгүй холбоосыг унтраахын оронд түүний давуу талыг бууруулаарай.

Туннелийг LAN-аас биш, гаднаас нотлоорой

Буйдан дээрээс ажилладаг VPN холболт харагдахаас бага нотолдог. LAN дотроос нийтийн хаяг руу явдаг урсгал нь чиглүүлэгчид өөр өөрөөр хэрэгжүүлдэг hairpin эсвэл тусгалын дүрмээр дамждаг тул амжилттай LAN тест эвдэрсэн гадаад замтай зэрэг оршиж болно. Хүлээн авах тестэд гар утасны өгөгдөлтэй телефон эсвэл сүлжээний гаднах дурын хост ашиглаарай. LAN оролдлогыг тусдаа сонголтот оношилгоо болгон үлдээгээрэй.

Дараа нь логийг пакетууд ирэх дарааллаар уншаарай. Огт юу ч байхгүй гэдэг нь гар барилт Pi-д хэзээ ч хүрээгүй гэсэн үг тул дамжуулах зорилт эсвэл хостын галт хана буруу байна. Эхэлж тээглэдэг гар барилт нь түлхүүр, сертификат эсвэл MTU-г заана. Дуусч унадаг сесс нь ихэвчлэн буцаах зам эсвэл хоёр дахь өгөгдмөл зам гэсэн үг бөгөөд клиентийн лог мөр Initialization Sequence Completed туннель өөрөө өргөгдсөнийг хэлнэ.

sudo journalctl -u openvpn-server@server -n 40 --no-pager
sudo tcpdump -ni any udp port 1194 -c 20

Клиент дахин оролдож байхад серверийн логт юу ч гарахгүй бол OpenVPN тохиргоог уншихаа зогсоож, дамжуулах зорилт руу буцаарай. Барилт ирэлтийн асуултад секундын дотор хариулж, хариугүй ирсэн пакетууд асуудлыг зам руу нарийсгана.

Нэг алхмын буцаалтыг хадгалж, утасгүй профайлыг ажиллагаанаас гаргаарай

Утасгүй профайлыг кабелийн зохион байгуулалт дахин ачаалалтыг давах хүртэл суулгасан хэвээр үлдээгээрэй. nmcli con show танд хэрэгтэй профайлын нэрсийг жагсаадаг бөгөөд устгасан профайлыг хамгийн муу мөчид ой санамжаас сэргээх шаардлагатай болно. Интерфэйсийн нэр, хаяглах арга, метрикийг бусад дөрвөн утгын хажууд бичээрэй. Тэмдэглэлээс бичиж болох буцаалт нь сэргээх шаардлагатай буцаалтаас илүү үнэтэй.

Утасгүй хамаарлыг ажиллагаанаас гаргах нь устгалт биш, шинж чанарын өөрчлөлт юм. connection.autoconnect no тохируулснаар нэвтрэх мэдээлэл болон хаягийн түүх хөндөгдөхгүй үлдэж, Pi-г таны явсан сүлжээнд дахин холбогдохоос сэргийлнэ.

nmcli con show
sudo nmcli con up "Wired connection 1"
sudo nmcli con mod "previously-used-wifi" connection.autoconnect no

Ажлыг дууссан гэж зарлахаасаа өмнө дөрвөн зүйлийг баталгаажуулаарай: дамжуулах зорилт кабелийн хаягтай таарч байна, сонсогч дахин ачаалалтыг давав, гадаад клиент гар барилтыг дуусгаж байна, Pi дахин ачаалалтын дараа ч кабелийн хаяг дээр хариулж байна. Дахин ачаалалт нь зөвхөн ажиллаж буй цөмд байсан хуваарилалтыг барих хамгийн хямд арга юм. Дөрвийн аль нэг нь бүтэлгүй болвол утасгүй профайлыг sudo nmcli con up ашиглан дахин өргөж, бүртгэсэн утгуудыг идэвхтэй утгуудтай харьцуулаарай.

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