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

Гурван өөр холболт, гурван өөр нөлөө

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

Сүлжээний нэрийн зай гурав дахь тохиолдол. Өөрийн интерфэйс, өөрийн маршрутын хүснэгттэй тул доторх апп хостны өгөгдмөлөөс огт хамаарахгүй. Гурвыг нэг зүйл гэж үзэх нь эхний шалгалтад тэсвэрлэхгүй итгэлтэй тайлбар үүсгэдэг.

Апп яг юу тохируулж байгааг тодорхойлоорой

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

Linux дээр SO_BINDTODEVICE зэрэг socket-ийн сонголтууд баримтжуулсан хүрээ, зөвшөөрлийн шаардлагатай бөгөөд эрхгүй процесс тэдгээрийг огт тохируулж чадахгүй байж болно. Энэ хязгаарлалт нь ашигтай сэжүүр: сонголтыг хэрэглэх боломжгүй бол ялгааны эх сурвалж апп биш байх магадлалтай.

Бодлогын маршрутлалт эхийг уншдаг

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

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

Хуваасан туннель ба туслах процессууд

Апп тус бүрийн хуваасан туннель дахин нэг давхарга нэмнэ. Клиент аппын багц эсвэл процессыг тааруулж болох бөгөөд өөрийн socket нээдэг туслах нь тусдаа субъект. Эхлүүлэгч ба түүний арын үйлчилгээ нэг харагдах нэрийн дор өөр өөр холболт үүсгэж болно.

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

Аппын өөрийн замыг шалгаарай

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

Linux socket-ийн лавлагаа SO_BINDTODEVICE болон түүний шаардлагыг баримтжуулдаг. Эхлээд аппын өөрийн тохиргоог уншиж, ижил нөхцөлд хайлтыг давтаж, дараа нь л зам эсвэл холболтыг өөрчлөх шаардлагатай эсэхийг шийдээрэй.

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