Peer-ийн AllowedIPs дотор 0.0.0.0/0, ::/0 гэж бичих нь бүгдийн санаж байдаг алхам бөгөөд энэ нь peer ямар трафик зөөхийг л шийднэ. Эдгээр угтвар нь ямар ч маршрут үүсгэхгүй, нөгөө талд юу ч дамжуулахгүй, програм бүрийн resolver-ийг байсан газарт нь үлдээнэ. Бүрэн туннель үнэхээр бүрэн байхын тулд дөрвөн тусдаа зүйл нэгэн зэрэг биелэх ёстой бөгөөд тэдгээрийг доорх дарааллаар шалгах нь дээр, учир нь хожуу шалгалт эрт шалгалтыг аварч чадахгүй. Доорх шалгалт бүр нь машинаас уншиж болох баримт бөгөөд хэрэгжсэн гэж найдаж буй тохиргоо биш юм.

Peer-ийн угтвар юу сонгож, юу сонгохгүй вэ

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

Тиймээс тохиргоо бүрэн харагдаж, хуваагдсан туннель мэт ажиллаж болно. Угтвар нь peer бүгнийг хүлээж авах гэж хэлнэ; хост-ийн маршрутын хүснэгт тэнд юу үнэхээр хүрэхийг шийдэж, гарц нь ямар нэгэн зүйл гарч байгаа эсэхийг шийднэ. Эдгээр гурван шийдвэрийн аль нь ч peer-ийн хэсэгт амьдардаггүй.

Клиентийг чиглүүлэх, зөвхөн peer-ийн жагсаалт биш

Жишээ нь wg-quick зэрэг менежерүүд хост-ийн маршрутын хүснэгтийг таны оронд программчилдаг тул ижил хоёр тохиргооны файл интерфейс хэрхэн боссоноос хамааран өөр ажилладаг. Хамгийн бага профайл нэг амьсгаагаар уншихад хангалттай богино:

[Interface]
Address = 10.8.0.2/32
DNS = 10.8.0.1

[Peer]
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = vpn.example.net:51820

Ажлыг хоёр дэлгэрэнгүй зүйл даадаг. Address талбар нь клиент өөрийн гэж боддог subnet биш, нэг хост-ийн угтвар юм, мөн менежер нь өгөгдмөл AllowedIPs-ийг бодит өгөгдмөл маршрут болгон хувиргадаг. Ижил файлыг ip link ба wg setconf ашиглан босгоход ямар ч маршрут харагдахгүй бөгөөд энэ нь эвдэрсэн туннель мэт харагдавч үнэндээ маршрутын алхмыг алгассан эрүүл туннель юм. wg-quick гарын авлага маршрутлалт болон Table зан төлөвийг баримтжуулсан бөгөөд үүнийг тэдгээр менежерүүд нэмдэг.

Файлыг биш, үр дүнг унш: ip route get 1.1.1.1 туннелийн интерфейсийг нэрлэх ёстой бөгөөд wg show хөдөлж буй дамжуулалтын тоолууртай саяхны гар барилтыг мэдээлэх ёстой. Маршрутгүй гар барилт нь менежер хэзээ ч ажиллаагүй гэсэн үг бөгөөд профайлыг дахин засварлаад засагдахгүй. Интерфейсийг хэрэглэгч хэрхэн эхлүүлэхээр эхлүүл, эс бөгөөс туршилт байршуулалтын оронд таны shell-ийг хэмжинэ.

Төгсгөлийн цэгийг туннелиас гадуур барих

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

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

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

Гарц дээрх дамжуулалт ба буцах зам

Гарц дээр зөөж буй гэр бүлдээ дамжуулалтыг асаа, орчуулахдаа forward хэлхээг хоёр чиглэлд зөвшөөр, мөн эх үүсвэрт хамаарах хайлтаар буцах замыг батал. Эдгээрийн аль нь ч амжилттай гар барилтаас гарахгүй, учир нь гар барилт нь хоёр peer UDP солилцож чадна гэдгийг л баталдаг. Дараа нь капсулаас гаргасан пакетэд юу болох талаар юу ч хэлдэггүй.

sysctl net.ipv4.ip_forward net.ipv6.conf.all.forwarding
ip route get 1.1.1.1 from 10.8.0.2

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

DNS ба алдааны төлөв, тусдаа туршсан

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

Хаягийн гэр бүлүүд нь тусдаа хариулттай тусдаа туршилт юм. v4-ийн өгөгдмөл маршрут апп-ийн v6 холболт юу хийхийг юу ч хэлдэггүй бөгөөд хоёр дахь гэр бүлийг чимээгүйгээр гоожуулдаг туннель чанга дуугаар бүтэлгүйтдэг туннелээс дор юм. Гэр бүл бүрээр нэр асууж, хүсэлт бүрийн ашигласан интерфейсийг уншиж, орчуулгын тоолуурыг өмнө ба дараа шалга, учир нь юутай ч тохирохгүй дүрэм байхгүй дүрэмтэй яг адилхан харагдана.

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

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