LAN чиглүүлэгч ба VPN клиент: хоёр төхөөрөмж, хоёр чиглүүлэлтийн хүснэгт
Чиглүүлэгчийн дараагийн үсрэлт нь пакетийг зөвхөн клиент хүртэл хүргэдэг. Клиентийн туннелийн чиглэл, дамжуулалт, буцах замыг нэмээд LAN хостноос туршина уу.
Хоёр төхөөрөмж пакетийг дамжуулж, тус бүр өөрийн хүснэгтийг хөтөлдөг. LAN чиглүүлэгч алслагдсан префикс VPN клиентэд хамаарахыг мэддэг, VPN клиент нь тухайн префиксэд өөрийн туннелээр хэрхэн хүрэхийг мэддэг. Зөвхөн эхний хүснэгтийг тохируулбал пакет тохирох чиглэлгүй машин дээр ирж, дахин анхдагч чиглэлээр гарна. Энэ бол бүх гэмтэл бөгөөд LAN-ын талаас энэ нь чиглүүлэлтийн гогцоо мэт харагддаг, учир нь бараг тэгж байгаа юм.
Чиглэлд хүрэхээс өмнө хоёр үсрэлтийг зур
Жишээ байрлалыг авч үзье: LAN хост 192.168.50.0/24, ердийн чиглүүлэгч 192.168.50.1, тусгай клиент 192.168.50.15, алслагдсан LAN 10.60.0.0/24 дээр бөгөөд зөвхөн тэр клиентийн барьж буй туннелээр хүрч болно. Хоёр хувийн мужаас аль нь ч нөгөөтэйгээ давхцахгүй, туннель нь өөрийн хаягийн төлөвлөгөөтэй.
Хоёр хувийн муж хоёулаа чухал, учир нь аль төхөөрөмж хариулахыг тэд тодорхойлдог. Алслагдсан тал пакетыг клиентийн туннелийн хаягаас ирж буйг харна, хариу нь 192.168.50.0/24 руу буцах зам олох ёстой. Зөвхөн гарах чиглэлийг тохируулбал хүсэлт ажиллаж болох ч хариу алга болно.
1-р алхам: чиглүүлэгчийг туннель рүү биш, клиент рүү чиглүүл
LAN чиглүүлэгч дээр дараагийн үсрэлт нь клиентийн LAN хаяг байх очих чиглэл нэмнэ үү:
ip route add 10.60.0.0/24 via 192.168.50.15
ip route get 10.60.0.55
Тэр бичлэг «үүнийг туннель хийж чадах машин руу хүргэ» гэж хэлдэг. Туннель хэрхэн бүтдэг талаар юу ч хэлэхгүй, клиентийн өөрийн чиглэлийг орлохгүй. Удирдлагатай чиглүүлэгч дээр эквивалент нь төхөөрөмжийн статик чиглэлийн хуудсанд амьдардаг; Linux чиглүүлэгч дээр LAN-ыг эзэмшдэг интерфэйсийн тохиргоонд хамаарах бөгөөд таны хаах shell-д биш.
Хоёр дахь командын хариуг шалга. Хэрэв клиентийг gateway, LAN интерфэйсийг device гэж мэдээлбэл эхний үсрэлт зөв бөгөөд үлдсэн ажил нөгөө машин дээр байна.
2-р алхам: клиентэд туннелийн талд өөрийн чиглэлийг өг
Клиент одоо 10.60.0.0/24 руу пакет хүлээн авч өөрийн хүснэгтээ харна. Хэрэв түүний туннелийн тохиргоо тухайн префиксэд чиглэл суулгасан бол пакет шифрлэгдсэн хэвээр үргэлжилнэ. Хэрэв суулгаагүй бол пакет энгийн анхдагчтай таарч 192.168.50.1 руу буцаж, тэр нь дахин клиент рүү илгээнэ.
Ямар нэгэн зүйл нэмэхийн өмнө хар:
ip route show table all | grep -E "10\.60\.0\.0/24|default"
sysctl net.ipv4.ip_forward
Бүх хүснэгтэд префиксийн чиглэл байхгүй байх нь таны хайж буй олдвор. Үүнийг туннелийн өөрийн тохиргоогоор нэмж, дараагийн дахин холболт үүнийг дахин суулгана; гарын ip route add сессээр алга болж, гэмтлийг хамгийн тохиромжгүй үед буцаана. Дараагийн үсрэлт нь туннелийн интерфэйс эсвэл VPN-ийн хамтрагч болгон олгох хаяг бөгөөд клиентээс хамаарна, хамтрагчийн хаяг нь хуучин тэмдэглэлээс биш одоогийн профайлаас ирэх ёстой.
Гогцоо үүсэх үед практик дээр хязгааргүй биш: TTL дамжуулалт бүрд буурч, пакет хугацаа хэтэрсэн мессежтэй үхнэ. Тиймээс давтагдсан traceroute цикл санал болгож болох ч дамжуулахгүй клиент мөн тэр пакетыг чимээгүй унагадаг.
3-р алхам: дамжуулалтыг зөвшөөрч, буцах замыг сонго
Хүлээн авах ба дамжуулах нь өөр зөвшөөрөл юм. Клиент дээрх net.ipv4.ip_forward=1 цөмийн түвшинд дамжуулалтыг зөвшөөрдөг, галт ханын дүрэм LAN интерфэйс ба туннелийн хооронд үүнийг зөвшөөрөх ёстой хэвээр. Клиентийн өөрийн удирдлагын хуудас руу нэвтрэхийг зөвшөөрсөн дүрэм алслагдсан LAN руу дамжуулалтыг зөвшөөрөхгүй, мөн ижил хост локал ping-д хариулах үед энэ ялгааг анзаарахгүй байхад амархан.
Алслагдсан талд толин тусгалын асуудал бий. 192.168.50.0/24 нь энэ баталгаажсан клиентээр хүрэх боломжтойг түүнд мэдэх хэрэгтэй. OpenVPN ашиглах үед энэ нь ихэвчлэн серверийн тохиргооноос түлхэгддэг клиент тус бүрийн чиглэл, эсвэл сервер дээр клиентийн ард байгаа LAN-ыг зарладаг клиентэд зориулсан файлыг хэлнэ. Үүнгүйгээр алслагдсан LAN хариуг унагах эсвэл өөрийн анхдагч гарц руу, өөрөөр хэлбэл интернэт рүү илгээнэ.
LAN префикс зарлах боломжгүй үед эх сурвалжийн хөрвүүлэлт нь хувилбар юм. Клиент дээрх хязгаарлагдмал masquerade дүрэм эх сурвалжийг туннелийн хаяг руу дахин бичиж, хариунууд дараа нь байгалийн байдлаар буцна. Энэ нь аль LAN хост хүсэлт гаргасныг нуух бөгөөд өөрөө алслагдсан талд дотогш холболт эхлүүлэхийг зөвшөөрөхгүй. Бүх нийтийн masquerade нэмж, дараа нь гаж нөлөөг олж мэдэхийн оронд энэ зохицуулалтыг санаатайгаар сонго.
4-р алхам: хоёр шийдвэрийг байнгын болгож, дараа нь бодит замыг турш
Чиглэл бүр эзэнтэй бөгөөд эзэн нь ачаалах эсвэл дахин холбогдох үед дахин үүсдэг тохиргоо юм. Чиглүүлэгч дээр энэ нь статик чиглэлийн бичлэг байж болно; клиент дээр энэ нь VPN профайл, NetworkManager эсвэл systemd-networkd байж болно. Туннелийг дахин холбож, клиентийг дахин ачаалж шалгаад, засварыг итгэхийн оронд хүснэгтийг дахин унш.
Туннелийн гадаад холболтыг зөөдөг анхдагч чиглэлийг хөндөхгүй үлдээ. Тохиргоог «хялбарчлах» үүднээс түүнийг солих нь ямар ч дотоод трафик ашиглахаас өмнө шифрлэгдсэн замыг эвдэж, шинж тэмдэг нь өөрчлөлтийн дараа хэзээ ч дахин тогтоогдохгүй туннель юм.
Энгийн LAN хостноос турш, клиентээс биш, учир нь клиент дээр үүссэн хүсэлт чиглүүлэгчийн эхний үсрэлтийг хэзээ ч ашигладаггүй. Зөвхөн алслагдсан LAN дээр байдаг үйлчилгээг авчирч хариуны үндсэн хэсгийг баталгаажуул, дараа нь дамжуулалт болж буйг харахын тулд клиентийн тоолуур эсвэл логыг хар. Хувийн үсрэлтүүдийг харуулсан дотоод traceroute нь дамжуулалтыг баталдаг, шифрлэлтийг биш: гадаад зам нь тусдаа ажиглалт бөгөөд зөвхөн туннелийн өөрийн интерфэйсийн тоолуур түүгээр юу гарсныг харуулна.