VPN-д зориулсан Linux сүлжээний нэрийн орон зай: юуг тусгаарлахгүй вэ
Нэрийн орон зай интерфейс, маршрут, сокетыг зөөдөг, файл эсвэл бүртгэлийг биш. VPN өөрийн netns дотор юуг хамарч, трафик хаанаас гарсаар байгааг энд үзүүлэв.
VPN-г өөрийн нэрийн орон зайн дотор эхлүүлж, тэнд нэг програмыг ажиллуулсан ч трафик хостны маршрутаар гарсаар байна. Юу ч эвдээгүй: нэрийн орон зай зөвхөн түүнд орсон процессуудыг удирддаг бөгөөд алдагдал хэзээ ч ороогүй процессоос гарсан. Интерфейс, хаяг, маршрут, галт хананы дүрэм, сокетууд нь нэрийн орон зайн эзэмшдэг зүйл юм. Файл, бүртгэл, аль хэдийн ажиллаж буй үйлчилгээнүүд тийм биш бөгөөд гайхалтай зүйлсийн ихэнх нь эндээс эхтэй.
Нэрийн орон зай юуг эзэмдэг, сокет хаана төрдөг
Интерфейсийг нэрийн орон зайд зөөхөд хост түүнийгээ алдана; дотор нь туннель баривал хост түүнийг харж чадахгүй. Энэ бол нэрийн орон зайгаар хязгаарлагдсан VPN-ийн механизм: төхөөрөмж болон түүн рүү заасан маршрутууд зөвхөн сонгосон процессууд хүрч чадах контекстод амьдардаг. Хост өөрийн анхдагч маршрутаа хадгалдаг тул гаднах бүхэн хөндөгдөөгүй үлддэг.
WireGuard-ийн хувьд үүсгэх контекст нь одоогийн байршилтай адил чухал: UDP сокет нь интерфейс үүссэн нэрийн орон зайд холбогддог, төхөөрөмж өөр газар нүүсний дараа ч. Шифрлэгдсэн пакетууд аль маршрутын хүснэгтийг дагах нь тэр төрсөн газраас хамаарна. Сокет нь хамтрагч руу маршрутгүй контекстод үлдвэл интерфейс хайж, гар барилт хэзээ ч гардаггүй. Эхлээд түүний төрсөн газрыг, дараа нь одоогийн байршлыг шалгана уу.
Нэрийн орон зай юуг тусгаарлахгүй
Энд юу ч файлын систем, бүртгэл эсвэл нууцыг тусгаарлахгүй, мөн эдгээр хил хязгаарын аль нь ч та нэрийн орон зай үүсгэсэн учраас үүсэхгүй. Резолверын тохиргоо нь файл тул доторх процесс хостны резолвер руу заасан тохиргоог уншиж, үүнээс үүдэх маршрутаар асуулгаа гадагш илгээж чадна. Хүсэлтийг аль хэдийн ажиллаж буй посредник эсвэл системийн үйлчилгээнд шилжүүлдэг програм огт өөр контекст дахь процессыг оролцуулна. Хоёулаа хил хязгаар хариулах зорилгогүй байсан хүсэлтүүд юм.
Шийдэл нь /etc/netns/<name>/resolv.conf дотор нэрийн орон зай тус бүрийн файл, эсвэл бэлтгэсэн файлын bind mount бөгөөд дотроос хүрч болох резолвер руу чиглүүлсэн. Хост дээрх /etc/resolv.conf-г засах нь нэрийн орон зайн харж буй юуг ч өөрчлөхгүй.
Процессийн байршил нь хяналт юм
Таны олж буй тусгаарлалт нь яг дотор нь эхлүүлсэн процессуудын тусгаарлалт юм. Нэрийн орон зайн exec туслахаар эхэлсэн shell болон түүний үүсгэсэн бүхэн дотор үлддэг; хостны сессээс эхлүүлсэн ширээний програм үлддэггүй. Контекстийг үүсгэ, төхөөрөмжийг зөө, дараа нь хоёр талыг батал:
ip netns add vpn1
ip link set wg0 netns vpn1
ip netns exec vpn1 wg show
wg show
Нэрийн орон зайн дотроос эхний wg show-г, хостноос хоёр дахь нь уншиж, тэдгээрийн зөвхөн нэг нь хамтрагчийг жагсаана гэж хүлээнэ үү. Хоёулаа жагсаавал төхөөрөмж хэзээ ч нүүж чадаагүй; аль нь ч жагсаахгүй бол өөр газар явсан. Эхлүүлэгч нь үйлчилгээний менежер бол засах ёстой зүйл нь unit файл, ширээний товчлол биш. Нэрийн орон зайн тохиргоогүй unit нь демоныг хостны контекстод эхлүүлж, загварыг чимээгүйгээр хүчингүй болгоно.
Програмын контекстээс туршина уу
Шалгалтыг програм ашигладаг ижил бинарь болон ижил хэрэглэгчтэйгээр нэрийн орон зайн дотор гүйцэтгэнэ. DNS болон хоёр хаягийн гэр бүлийг оруулна уу, учир нь та хэзээ ч бодож үзээгүй IPv6 маршрут бол гарах нийтлэг зам юм. Өөрийн shell-ээс хийсэн туршилт нь зөвхөн таны shell тусгаарлагдсаныг батална.
Дараа нь хост дээр ижил шалгалтыг гүйцэтгэж, хариултууд ялгаатай гэдгийг батал: дотор нь туннелийн хаяг ба зорьсон гарах гарц, гадна нь хостны маршрут ба оффисын гарах гарц, резолверыг нэрээр. Нэрийн орон зайг протоколоор бус байршуулалтаар нэрлэ, ингэснээр цэвэрлэх скрипт хоёрыг андуурахгүй.
Дамжуулалт, алдааны бодлого ба цэвэрлэгээ
Гарцын хувьд дамжуулалтыг санаатайгаар асааж, туннель унахад юу болох ёстойг шийд. Нэрийн орон зай дотор суулгасан маршрутуудыг хориглодоггүй тул хост руу нөөц маршрут үүсгэвэл түүнийг ашиглана. Энэ бол бодлогын шийдвэр бөгөөд саатал туршихаас өмнө бичих хэрэгтэй.
Нэрийн орон зайн нэр, интерфейс, тохиргоо хэнийх болохыг бичиж үлдээ, ингэснээр цэвэрлэгээ байршуулалтын үүсгэснийг л устгана. Буцаах үед хостны сүлжээг дахин тохируулах нь цэвэрлэгээг саатал болгоно. network_namespaces(7) хуудас богино бөгөөд тэр замыг зохион бүтээхийн өмнө унших нь зүйтэй.