WireGuard-д интерфэйсээ эзэмших яг нэг цөм хэрэгтэй бөгөөд энэ баримт нь гүйцэтгэлийн тухай яриа эхлэхээс өмнө Proxmox байршлын маргааны ихэнхийг шийддэг. LXC контейнер нь хост цөмийн нэрийн орон зайн харагдац бөгөөд VM нь өөрийн цөмийг ачаалдаг. Тиймээс ашигтай асуулт нь аль хувилбар хөнгөн бэ гэдэг биш, харин та аль цөмийг өөрчлөхөд бэлэн бэ, ямар сэргээх замтай амьдарч чадах вэ гэдэг юм. Үүнд хариулбал хост, контейнер эсвэл VM-ийн сонголт ихэвчлэн өөрөө тогтоно.

LXC зочин хост цөмийн дотор ажилладаг

Контейнер дотор wireguard-tools суулгах нь хяналтын програмыг өгдөг, хувийн цөм биш. Таны үүсгэсэн wg0 интерфэйс хостийн сүлжээний стект бүртгэгдэж, хостийн модулийн жагсаалтад гарч ирнэ. Тиймээс контейнер бүх багц шалгалтыг давж, хост цөмд модуль байхгүй үед эхний wg тушаалд бүтэлгүйтэж болно. Мөн Proxmox контейнерын лавлагаа тэр хуваалцсан цөмийн загварыг, мөн таны ажиллаж буй нэрийн орон зай, эрхийн хязгаарыг баримтжуулдаг.

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

Хост цөм нь бас хуваалцсан хамаарал юм. Proxmox цөмийн шинэчлэл нь контейнер бүрийн доорх WireGuard-ийн хэрэгжүүлэлтийг нэгэн зэрэг өөрчилдөг бөгөөд энэ нь шинэчлэл болон контейнерын хүлээлт зөрчих хүртэл тохиромжтой.

Хост, контейнер, VM: байрлал бүр үнэхээр юуг эзэмшдэг

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

Контейнер үйлчилгээг багцлагдсан, дахин эхлүүлэх боломжтой байлгаж, зэрэг хост цөмийг зээлдэг. Энэ нь санаатайгаар хуваалцсан цөмтэй үйлчилгээнд тохирсон бөгөөд дахин бүтээх жижиг нэгж өгдөг. Бие даасан цөм өгдөггүй тул тодорхой модулийн бүтээц шаарддаг зүйл энэ хувилбараас хол заана.

PlacementKernel ownerTypical failure mode
Proxmox hostHypervisorA routing change breaks host management access
LXC containerHost kernel, container namespaceMissing capability or missing module at wg0 creation
Virtual machineGuest kernelExtra maintenance and a second patch cycle

VM нь илүү их санах ой, өөр нэг нөхөөс хийх системд өртдөг бөгөөд хариуд нь туннель өөрийн цөм, өөрийн маршрутлалтын хүснэгт, snapshot-ийн хязгаарыг авдаг. Муу өөрчлөлтийн дараа буцааж татдаг зүйл нь VPN бол тэр snapshot нь нэмэлт зардлыг үнэлнэ.

Таны оронд сонгодог гурван нөхцөл

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

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

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

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

Трафикийг дамжуулахаас өмнө байршлаа нотол

Суулгасны дараа аль цөм интерфэйсийг үнэхээр үйлчилж байгаа, контейнерт түүнийг барих хангалттай эрх өгсөн эсэхийг баталгаажуул:

$ pct config 101 | grep -E 'unprivileged|features'
unprivileged: 1
$ pct exec 101 -- wg show
interface: wg0
  listening port: 51820
$ pct exec 101 -- ip -4 addr show wg0
inet 10.60.0.2/24 scope global wg0

Дараа нь хост талаас дамжуулалтын талыг шалга, учир нь зөвхөн гар барилт нь туннель боссныг л нотолдог. Клиент хаягт ip route get ашиглаж, дараагийн алхам болон интерфэйс загвартай тохирч байгаа, алс талд буцах зам байгаа эсэхийг баталгаажуул.

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

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