Аль хэдийн суулгасан Linux VPN ашиглаж буй хөтөч /dev/net/tun-ийг нээхгүй. Тэр сокет нээдэг бөгөөд тухайн сокетийн пакетууд аль интерфэйсээр гарч байгааг цөм шийддэг. Туннелийг үүсгэсэн процесс нь өөрөө зөөж буй траффикийн процессоос өөр ажил хийдэг. Эдгээр хоёр үүргийг тусдаа байлгах нь ихэнх зөвшөөрлийн асуултад тэдгээрийг асуухаас өмнө хариулт өгдөг.

Сокетоос туннель хүртэл нэг пакетыг дага

Энгийн програм connect эсвэл send дуудаж, цөм очих газрын маршрутыг хайдаг. Хэрэв сонгосон маршрут туннелийн интерфэйс рүү зааж байвал пакет VPN демоны уншдаг төхөөрөмжийн дараалалд ордог. Демон түүнийг шифрлэж, физик интерфэйсээр гадагш илгээдэг. Тэр тайлбар дахь сум бүр зөвшөөрлийн асуултад хариулж болох газар юм.

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

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

Хэнд төхөөрөмж хэрэгтэй, хэнд хэрэггүйг шийд

TUN интерфэйс үүсгэх эсвэл түүнд холбогдох нь төхөөрөмжид хандах эрх ба түүнчлэн үүнийг тохируулах чадвар шаарддаг тул дэмжигдсэн VPN үйлчилгээ сүлжээний удирдлагын эрхээр эхэлдэг эсвэл онцгой туслах ашигладаг. Тэр шаардлага демонд хамаарна. Энэ нь хөтөч, өгөгдлийн сангийн клиент эсвэл файл дамжуулах хэрэгслийн талаар юу ч хэлдэггүй. Чадвар хэрэгтэй үйлчилгээ үүнийг өөрийн тохиргооны алхамд хэрэгтэй, клиентүүдэд нь биш.

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

Төхөөрөмжийн зөвшөөрлийг өөрчлөх нь програмд очих газарт хандах эрх олгох арга биш. Энэ нь зөвхөн төхөөрөмжийн хилийг өөр газар зөөдөг.

Програм яг аль нэрийн орон зайд ажиллаж байгааг шалга

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

Үүнийг ip netns list болон ip -n NAME route-ээр, эсвэл процессын нэрийн орон зайн холбоосыг харж шалга. Хариулт ихэвчлэн нэг командад харагддаг.

Нэг хост дээрх хоёр хэрэглэгчид бодлогоор өөр өөр зам өгч болно. Энэ нь сүлжээний шийдвэр бөгөөд төхөөрөмжийн өмчлөлийн баталгаа биш.

Чадварыг сүлжээний бодлогоос тусгаарла

Зарим хэрэгсэлд сокетоос илүү зүйл хэрэгтэй. Пакет барихын тулд түүхий сокет хэрэгтэй, маршрут солихын тулд удирдлагын эрх хэрэгтэй. Эдгээр нь тусдаа зөвшөөрөлтэй тусдаа үйлдлүүд бөгөөд нэгийг өгөхийг VPN ашиглах ерөнхий шаардлага гэж уншиж болохгүй.

Өөрийн туннелийг хэрэгжүүлдэг програм гурав дахь тохиолдол юм. Демоны үүргийг аваж байгаа тул TUN-ийг үнэхээр нээдэг, тиймээс демоны эрх хэрэгтэй.

Эрхийг нэрлэхээс өмнө үйлдлийг нэрлэ. Энэ хоёрыг салгах нь ихэвчлэн харагдахаас хялбар.

Хуваалтыг хоёр бүртгэлээр баталгаажуул

Туннелийг үйлчилгээ болгон холбож, дараа нь програмыг энгийн хэрэглэгчээр ажиллуулж, хувийн нөөцөд хүрч байгааг батал. Тэр хэрэглэгчийн shell-ээс очих газрын хувьд ip route get-ийг шалгаж, аль интерфэйс сонгогдсоныг хар. Маршрут зөв боловч холболт амжилтгүй хэвээр байвал асуудал бодлогод, эрхэд биш.

Гарч буй загвар нь тодорхой хил бүхий хамгийн бага эрх юм: нэг бүрэлдэхүүн тохиргоо болон туннелийн нөөцийг эзэмшдэг, ажлын ачаалал ердийн бүртгэлээ хадгалдаг, сүлжээний бодлого юу нэвтрэхийг шийддэг. Бүгдийг root-оор ажиллуулах нь тэр үүргүүдийг юу ч тайлбарлахгүйгээр нураадаг.

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