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

Механизм нь хоёр хагастай: зөвхөн туннелийн урсгал ашиглах ёстой чиглүүлэх хүснэгт, мөн тохирох эхийг тийш нь илгээх дүрэм.

Холболт эх хаягийг тогтоодог, өөр юу ч биш

Linux гарах интерфэйсийг чиглүүлэх хүснэгтээс очих газрыг хайж сонгодог бөгөөд энэ нь бодлогын дүрмүүд тэр хайлтыг өөр тийш чиглүүлэх боломж олгосны дараа болдог. Дүрмүүд эх хаяг, галт хананы тэмдэг, орж ирэх интерфэйс, UID эсвэл бүр портоор сонгож болно; тус бүр нь бүх урсгал биш, энэ урсгал гэж хэлэх өөр арга юм. VPN клиентийн тохиргоо туннелийн маршрут бүхий хүснэгтийг сонгодог; дүрэм аль урсгалд түүнээс зөвлөгөө авахыг зөвшөөрөхийг сонгодог. Зөвхөн холболт нь хоёуланг нь өгдөггүй.

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

Туннельд өөрийн хүснэгтийг өг

wg-quick маршрутуудыг профайл заасан газарт суулгадаг. [Interface]-ийн доор Table = 40 нэмэхэд тэдгээр нь үндсэн хүснэгтийн оронд 40-р хүснэгтэд шилждэг. Интерфэйсийг өргөж, тэдний ирснийг баталгаажуул: ip -4 route ls table 40 нь туннелийн маршрутуудыг үзүүлэх ёстой, ip -4 route get 10.66.127.142 нь цөм яг одоо тэдгээрийн алийг нь хэрхэн шийдэж байгааг харуулна. Маршрутууд өөрийн хүснэгтэд байхад үндсэн хүснэгт бусад бүх зүйлд үргэлжлүүлэн ажиллана.

Өргөн префикс тааруулахын оронд IPv6-д мөн адил хий. ip -6 rule add from fd00::2/128 lookup 40 нэг хаягийг бэхлэнэ; fc00::/8 хостын бусад интерфэйстэй мөргөлдөж, зорьсноос илүү тохирох дүрэм үүсгэж болно.

Эх хаягийн дүрмийг нэмж, тоолуурыг хар

Дараа нь хоёр хагасыг холбо: ip -4 rule add from 10.66.127.142/32 lookup 40, мөн тэр хаягийг WireGuard интерфэйст хавсаргасан хэвээр. Хоёр дүрмийг PostUp дотор хий, дахин холбогдоход тэдгээр сэргээгдэнэ. Тохиргоогоор биш, бодит хүсэлтээр шалга: ip route get 1.1.1.1 from 10.66.127.142 туннелийн төхөөрөмжийг нэрлэх ёстой, curl --interface wg0 ifconfig.me гэрийн хаягийн оронд туннелийн хаягийг мэдээлэх ёстой.

Дараа нь ч бүтэхгүй бол ip -s rule-ыг унш. Байгаа боловч хэзээ ч тохироогүй дүрэм тэг тоолуур харуулдаг бөгөөд энэ нь буруу дүрмийг дүрэм огт байхгүйгээс ялгадаг. Тэр нэг команд нь апп өөрийн интерфэйсийн тохиргоог үл тоомсорлосон эсэх тухай олон таамаглалыг хэмнэдэг.

Эсрэг тохиолдол: SSH-г туннелиас гадуур байлга

Эсрэг асуудал ч мөн адил түгээмэл: wg-quick анхдагч маршрутыг эзэмшдэг ба сервер рүү SSH сесс дундаа тасардаг. Түүний дүрмүүд бага зэрэглэлийн дугаар дээр суудаг тул үл хамаарах зүйлийг тэднээс өмнө үнэлэх ёстой. ip rule add dport 22 ipproto tcp table main priority 123 үүнийг шинэ iproute2 дээр хийдэг; сонгогч боломжгүй газар nftables дээр урсгалыг тэмдэглэж, оронд нь тэмдгийг тааруул.

Хариу ирэх замыг ч шалга. Байгуулагдаад дараа нь дуугүй болдог SSH сессэд ихэвчлэн тэгш бус чиглүүлэлт байдаг: нэг чиглэл туннелээр, нөгөө нь физик интерфэйсээр гардаг. Серверийн хаягийн хувьд ip route get хариу аль тийш явахыг хэлнэ.

Хүснэгтийн дугаар, эх хаягийн дүрэм, үл хамаарах зүйлийг профайл дотор нь бич. Гурвуулаа нэг загварт хамаарах бөгөөд хамт засагдана.

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