Интерфэйс таны хүссэн нэрийн орон зайд жагсаагдсан, програмыг түүнд холбосон, гэсэн ч туннелийн урсгал огт харагдахгүй. Энэ нь Linux цөмд нэг нэрийн орон зайд үүсгэж нөгөө рүү зөөсөн WireGuard төхөөрөмжийн шинж: интерфэйс зөөгдсөн, харин түүний шифрлэгдсэн UDP сокет зөөгдөөгүй. Дотоод урсгал утга учрай болохоос өмнө хоёулаа зөв газарт байх ёстой. Нэг биш хоёр контекстийг харах хэрэгтэйг мэдвэл шалгалт хурдан.

Шинж тэмдэг: нэрийн орон зай зөв, гэхдээ пакет байхгүй

Нэрийн орон зайн дотор туннель эрүүл харагдана. Төхөөрөмж байгаа, хаягууд олгогдсон, хамтрагчийн тохиргоо байна. Гадна талд хүлээгдэж буй UDP солилцоо таны ажиглаж байсан интерфэйс дээр огт гарч ирэхгүй, нөгөө тал гар барилт болоогүй гэж мэдэгдэнэ.

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

Энэ нь зөөлтийн алдаа биш, хамтрагчийн буруу тохиргоо ч биш. Цөмийн хэрэгжүүлэлт ингэж ажилладаг бөгөөд WireGuard-ийн нэрийн орон зайн баримт бичиг үүсгэх дүрмийг шууд тайлбарладаг.

Сокет яагаад төрсөн газартай вэ

WireGuard төхөөрөмж шифрлэгдсэн дамжуулалтад нэг UDP сокет эзэмшдэг бөгөөд тэр сокет нь төхөөрөмж үүсдэг нэрийн орон зайд нээгддэг. Холбоосын командаар интерфэйсийг зөөх нь харагдах төхөөрөмжийг зөөдөг ч дамжуулалтыг эхэлсэн газарт нь үлдээдэг. Тэгэхэд хоёр объект өөр өөр эзэмшигчтэй болно.

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

Сокетыг хүссэн газарт нь үүсгээрэй

Шийдэл нь төхөөрөмжийг гаднаас үүсгээд зөөх биш, зорилтот нэрийн орон зайн дотор үүсгэх явдал юм. Зөвшөөрөгдсөн нэрийн орон зай аль хэдийн байгаа, нэр нь ашиглагдаагүй гэж үзье:

ip netns exec vpn-apps ip link add wg-demo type wireguard
ip netns exec vpn-apps wg show

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

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

Замын хоёр талыг уншаарай

Төхөөрөмж зөв газарт орсны дараа хоёр шийдвэрийг тус тусад нь шалга. Эхлээд програмын контекстээс дотоод хайлтаар эхэлж, дараа нь сокетыг эзэмшиж буй контекстээс гадаад замыг шалга:

ip netns exec vpn-apps ip route get 10.30.0.9
ip netns exec vpn-apps wg show
tcpdump -ni any udp port 51820

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

Бичлэгт бас нэг шалгалт багтана: дахин ачаалсны дараа төхөөрөмж хэрхэн үүсдэг. Интерфэйсийг өөр үүсгэх контекстээр дахин үүсгэдэг менежер сокетын төрсөн газрыг өөрчлөдөг. Нэг удаа ажилласан гараар зөөлт нь удирдагдах замын талаарх нотолгоо биш.

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