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

Дүрмүүд хүснэгтийг сонгоно, дараа нь хүснэгт маршрутыг сонгоно

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

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

Дүрэм мөн префиксийг санаатайгаар хар нүх эсвэл хүрэхгүй болгож болно. Зарим клиентүүд ийм дүрмийг аюулгүйн унтраалга болгон нэмдэг бөгөөд тэгвэл уналт тохируулсан туннель биш, эвдэрсэн туннель мэт харагдана.

Дүрмийн багцыг жагсаалт биш, дараалал хэлбэрээр уншина уу

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

ip rule show
ip route show table all | sed -n '1,60p'
ip route get 198.51.100.20 from 10.8.0.2
ip route get 198.51.100.20 from 10.8.0.2 mark 0x1

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

Тэмдэг ба сокет: клиентүүд трафикийг хуваах хоёр арга

Зарим клиентүүд галт ханын дотор пакетуудыг тэмдэглэж, тэмдэгт тохирох дүрэм нэмдэг. Бусад нь сокетийн түвшний маршрутлал ашиглаж, холбогдохоос өмнө сокет дээр маршрут тавьдаг. Эхнийх нь ip rule гаралтад харагдана; хоёр дахь нь харагдахгүй бөгөөд ерөнхий хайлтад илрэхгүй.

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

Өөр нэг дүрэм нэмэхийн өмнө эзэмшлийг мөрдөнө үү

Дүрмүүдийг ямар нэг зүйл суулгадаг. VPN клиент, сүлжээний менежер, гараар бичсэн скрипт тус бүр эхлэх үед дүрэм нэмж болох бөгөөд дахин холбогдох логик өмнөх багцыг үлдээж болно. Өмнөх профайлын хоёр хуучирсан дүрэм профайл устсаны дараа ч трафикийг чиглүүлсээр байх болно.

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

Хамрах хүрээг нэг биш, хоёр урсгалаар батал

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

ip route get 198.51.100.20 from 192.0.2.44
ip route get 198.51.100.21 from 192.0.2.44
tcpdump -ni any host 198.51.100.21 and port 443

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

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

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