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

Эвдэрсэн нь туннель биш

Хоёр төгсгөл хоёулаа хувийн мужид сууж байна, энэ бол хэвийн тохиолдол бөгөөд буруу тохиргоо биш. 10.8.0.6 шиг хаяг туннелийн дотор бодит бөгөөд өөр хаана ч байхгүй, тиймээс LAN-д тийш ямар нэгэн зүйл илгээх шалтгаан байхгүй. Маршрутлалтад хүрэхээс өмнө үйлчилгээ туннелийн дотор ерөнхийдөө хүрэх боломжтой эсэхийг баталгаажуулна уу: клиент дээр ss -ltn нь сонсогч 127.0.0.1, LAN интерфэйс эсвэл туннелийн хаягтай холбогдсон эсэхийг харуулна. Зөвхөн loopback-д холбогдсон демон өөрөөсөө өөр хэнд ч хариу өгөхгүй бөгөөд үүнийг ямар ч маршрут, DNAT эсвэл порт дамжуулалт өөрчлөхгүй.

80 эсвэл 443 порт дээрх прокси нь өөр харагдах байдалтай өөр хэрэгсэл юм. Энэ нь пакет биш, хүсэлтүүдийг зөөдөг тул түүхий мэдээллийн сангийн холболтод буруу түвшин бөгөөд түүн рүү тэмүүлэх нь энэ асуудлыг хэн нэгэн ямар нэгэн зүйл хэмжихээс өмнө гурван хэрэгслийн гүнд хүргэх зам юм.

Маршрутын хэлбэр: LAN-д сан хаана байгааг хэлээрэй

LAN гарцын статик маршрут нь LAN ба туннелийн сан давхцахгүй үед хамгийн цэвэр хариулт юм. Саныг туннелийг дуусгадаг машин руу чиглүүл:

ip route add 10.8.0.0/24 via 192.168.1.12
route add -p 10.8.0.0 mask 255.255.255.0 192.168.1.12   # Windows, persistent

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

push "route 192.168.1.0 255.255.255.0"

Серверийн ард биш, нэг клиентийн ард байгаа дэд сүлжээний хувьд серверт системийн маршрут ба тэр клиентийн файл дахь iroute бичлэг (client-config-dir-ийн дор байгаа) хоёулаа хэрэгтэй. iroute-гүйгээр OpenVPN угтвар байгааг мэддэг бөгөөд аль клиент түүнийг эзэмшиж байгааг мэдэхгүй: пакетууд ирдэг ч демонд тэдгээрийг тааруулах юу ч байхгүй.

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

NAT-ын хэлбэр: дотогш DNAT, ба бүгдийн алгасдаг SNAT мөр

LAN гарцад хүрч чадахгүй эсвэл яг нэг порт нийтлэхийг хүсвэл, VPN хост дээрх орчуулга LAN дээр ямар ч маршрутгүйгээр ажилладаг. Портыг нийтэлж, дамжуулж, туннель рүү орох замд эх сурвалжийг орчуул:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.8.0.6:3000
iptables -A FORWARD -i eth0 -o tun0 -p tcp -d 10.8.0.6 --dport 3000 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -d 10.8.0.6 -p tcp --dport 3000 -j SNAT --to-source 10.8.0.1

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

Хэрэглэгчийн firmware өөрийн гинжин нэрсийг ашигладаг бөгөөд тэр орчуулгыг танд үүсгэж өгдөггүй. Tomato дээр орж ирэх дүрэм WANPREROUTING руу, дараа нь wanin шиг шүүлтүүрийн гинжин рүү унадаг бөгөөд бүрэн харагдах дүрмийн багцанд гарын POSTROUTING мөр хэрэгтэй хэвээр байдаг. Энэ нь firmware-ийн алдаа биш; энэ нь зөвхөн орж ирэх трафикт зориулж бичсэн дүрмийн багц юм.

Яагаад зөв харагдах дүрэм пакетыг орхигдуулдаг вэ

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

  • Гинжийн дараалал. iptables -I дээр талд оруулж, -A төгсгөлд нэмдэг тул өмнөх зөвшөөрөх эсвэл блоклох дүрэм эхлээд шийднэ.
  • Буруу гинжин. Роутер рүү өөрт нь хаягласан трафик INPUT-ээр дамждаг бөгөөд дамжуулагдсан трафик түүнд хэзээ ч хүрдэггүй. Нэг үйлчилгээг нийтлэхэд хоёуланд нь дүрэм хэрэгтэй байж болно.
  • Чиглэлийн туг. -i tun0 клиентүүдээс ирж буй трафиктай тохирч, -o tun0 тэдний зүг явж буй трафиктай тохирно. Буруу тугтай REJECT нь таны санаанд ороогүй зүйлийг блоклодог.
  • Эх сурвалжийн хязгаарлалт. Нэг клиентийн хаягийг хүлээн авдаг дамжуулалт тэр клиентээс ажиллаж, бусад бүх эх сурвалжийг үг хэлэлгүй орхигдуулдаг.

Пакетын тоолуур тэгтэй дүрэм замд огт байхгүй бөгөөд тоолуурыг унших нь буруу гинжийн асуудлыг буруу дүрмийн асуудлаас ялгах хамгийн хурдан арга юм.

Орон нутгийн дамжуулалт, LAN дээр юу ч өөрчлөх боломжгүй үед

SSH орон нутгийн дамжуулалт бүх асуултыг тойрч гардаг. Түүнд LAN дээр маршрут, клиентийн галт ханын хамтын ажиллагаа, хаана ч нийтлэгдсэн порт хэрэггүй:

ssh -N -f -L 3000:10.8.0.6:3000 user@vpn-host

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

Өөр дүрэм нэмэхээсээ өмнө хоёр чиглэлийг шалгаарай

Орчуулга ул мөр үлдээдэг бөгөөд тэдгээрийг унших нь таамаглахаас дээр. VPN хост дээр conntrack -L орчуулга ерөнхийдөө болсон эсэхийг, iptables -t nat -L -n -v тоолуурууд хөдөлсөн эсэхийг, tcpdump -ni any port 3000 аль эх хаяг үнэхээр ирснийг харуулна. Клиент дээр ss -ltn сонсогч туннель хүрч чадах хаяг дээр байгааг батална.

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

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