OpenVPN-ээр нийтийн префикс: буцах замыг засах
Чиглүүлсэн нийтийн префикс OpenVPN-ийн TUN холбоосоор дамжиж болох ч хариултууд ижил замаар буцах ёстой. Префиксыг делегацлаж, нийтийн эх сурвалжийн хаягийг хэвээр хадгална уу.
Туннель босч, клиент нөгөө тал руу ping хийхийг хар, дараа нь VPN-ийн ард байх ёстой нийтийн хаяг өөр газраас хариулж байна, эсвэл огт хариулахгүй байна. Энэ шинж тэмдэг нь ихэвчлэн шифр эсвэл сертификаттай ямар ч холбоогүй. Үйлчилгээ үзүүлэгчийн чиглүүлсэн префикс нь IP маршрут хэлбэрээр хүргэгддэг бөгөөд үүнийг OpenVPN-ээр дамжуулах нь тэр маршрутыг хоёр түвшинд дахин бүтээх, буцах замд эх хаягийг хадгалах гэсэн үг. WAN-ыг гүүрлэх шаардлагагүй, хаягийг интерфейст нэмэх нь дээд маршрутыг үүсгэхгүй.
Префикс эхлээд таны зүг чиглэгдэх ёстой
Үйлчилгээ үзүүлэгчээс блокыг хэрхэн хүргэдэг талаар асуу. Серверийн таны үндсэн хаяг руу чиглүүлсэн префикс нь үйлчилгээ үзүүлэгч WAN сегмент дээр шууд хүрэхийг хүлээж буй хаягуудаас өөр зүйл юм. Энд тайлбарласан загвар зөвхөн эхний модельтай ажиллана.
Үйлчилгээ үзүүлэгч 198.51.100.64/28-ыг таны орох сервер рүү чиглүүлбэл, тэр хүрээний пакетууд серверт ирж, та тэдгээрийг дамжуулахгүй бол тэнд зогсоно. Үйлчилгээ үзүүлэгч үүний оронд хүрээг таны uplink руу гүүрлэвэл сервер түүнд ARP хариулт өгөх ёстой бөгөөд энэ нь өөр асуудал юм.
OpenVPN-д хүрэхээс өмнө хүргэлтийн загварыг туршаад үз: гаднаас блок дахь хаяг руу ping хийж, аль интерфейс хүлээн авахыг хар. Юу ч ирэхгүй бол ямар ч туннелийн тохиргоо тус болохгүй. Хаяг WAN дээр шууд хариулж байвал үйлчилгээ үзүүлэгч чиглүүлэхийн оронд гүүрлэж байна, доорх загвар хамаарахгүй.
Чиглүүлэлтийн хоёр түвшин: цөмийн маршрут ба iroute
OpenVPN-д префикс хоёр газарт хэрэгтэй. Цөм нь префикс туннелийн төхөөрөмжид хамаарахыг мэдэх ёстой, ингэснээр дамжуулагдсан пакетууд анхдагч маршрутын оронд OpenVPN-д орно. OpenVPN мөн аль баталгаажсан клиент префиксыг эзэмшиж байгааг мэдэх ёстой бөгөөд энэ нь клиентэд тусгай зориулалтын хавтас дахь iroute бичлэг юм.
Серверийн талын маршрут иймэрхүү харагдана, префикс ба маск хуваарилалтад тохирох ёстой:
ip route add 198.51.100.64/28 dev tun0
Клиентэд тусгай зориулалтын тохиргоо эзэмшлийг тогтоодог. Үүнийг клиент сертификатын нийтлэг нэрээр нэрлэсэн CCD файлд хийж, сервер яг тэр хавтсыг үнэхээр уншдаг эсэхийг баталгаажуул:
iroute 198.51.100.64 255.255.255.240
OpenVPN-ийн чиглүүлсэн сүлжээний баримт бичиг хоёр түвшин болон тэдгээр яагаад тусдаа байгааг тайлбарладаг. irouteгүй цөмийн маршрут пакетуудыг эзэнгүйгээр туннель руу илгээдэг бөгөөд OpenVPN тэдгээрийг хаядаг. Цөмийн маршрутгүй iroute пакетуудыг серверийн анхдагч замд үлдээдэг. Хоёр алдаа хоёулаа клиентийн талаас эвдэрсэн туннель мэт харагдана.
Үйлчилгээний хаяг хаана байдаг
Делегацлагдсан префикс нь туннелийн өөрийн хаягуудтай ижил зүйл биш. Хэрэв хүсвэл холбоосыг хувийн орон зайгаас дугаарлаж, нийтийн үйлчилгээний хаягийг үйлчилгээ үнэхээр ажиллаж буй газарт байрлуул.
Үйлчилгээг локалаар дуусгадаг Linux клиент дээр нэг хост хаяг хангалттай:
ip address add 198.51.100.70/32 dev lo
Префикс цааш VM хост эсвэл өөр LAN руу чиглэгдвэл оронд нь тэр доош урсгалын зам ба түүний буцах маршрутыг тохируул. Блок дахь бүх хаягийг VPN клиентэд хуваарилах шаардлагагүй бөгөөд дараа нь зөрчил үүсгэдэг.
Буцах замд нийтийн эх сурвалжийг хадгал
Делегацлагдсан префиксээс хариулт туннелээр гарч, үйлчилгээ үзүүлэгчийн маршрутад хүрэх ёстой. Хэрэв алсын хост үүнийг өөрийн ISP-ээр илгээвэл эх хаяг хуурамч мэт харагдаж, үйлчилгээ үзүүлэгч эсвэл очих газар түүнийг хаядаг. Шийдэл нь эх сурвалжид суурилсан дүрэм эсвэл тусгай чиглүүлэлтийн хүснэгт бөгөөд илүү өргөн NAT биш. Үүнгүйгээр үйлчилгээ туннелийн хамтрагчаас ажиллаж, бусад бүх газраас бүтэлгүйтдэг.
Орох сервер дээр өргөн masquerade дүрэм бол ердийн буруутан. Энэ нь нийтийн эх сурвалжийг серверийн үндсэн хаяг руу дахин бичиж, клиент жинхэнийг хэзээ ч хардаггүй:
iptables -t nat -S POSTROUTING
NAT-ыг түүнд хэрэгтэй хувийн VPN клиентүүдээр хязгаарлаж, делегацлагдсан префиксыг орчуулалгүй орхи. Дараа нь сервер префиксыг огт дамжуулж байгаа эсэхийг баталгаажуул, учир нь анхдагчаар хориглодог дамжуулалтын гинжин хэлхээ үүнийг чимээгүй хаядаг.
Итгэхээс өмнө хоёр чиглэлийг шалга
Шалгалт нь нэг биш, дөрвөн ажиглалт юм. Үйлчилгээ үзүүлэгчийн маршрут ирж байгаа, цөм префиксыг туннель руу илгээж байгаа, OpenVPN үүнийг зөв клиентэд хамааруулж байгаа, хариулт нийтийн эх сурвалжтайгаа бүрэн буцаж байгааг баталгаажуул. Ажиглалт бүр өөрийн командтай тул алдаа нь бүхэл загварыг биш, нэг давхаргыг заана. Тохиргоо өөрчлөгдсөн бүрд тэдгээрийг энэ дарааллаар гүйцэтгэ.
Цөмөөс делегацлагдсан хаяг ямар зам сонгохыг асууж, хүсэлт ажиллаж байх үед туннелийг ажигла:
ip route get 198.51.100.70
sudo tcpdump -ni tun0 host 198.51.100.70
Урвуу замын шүүлт зөв маршрутыг хүчингүй болгож чадна. Туннель ба uplink дээрх үр дүнтэй тохиргоог шалгаж, хатуу горим нь эх сурвалж нь ирсэн интерфейстэй тохирохгүй урсгалыг татгалздагийг сана:
sysctl net.ipv4.conf.tun0.rp_filter net.ipv4.conf.eth0.rp_filter
Эцэст нь бүтэлгүйтлийн тохиолдлыг туршаад үз. Туннелийг зогсоож, нийтийн префикс ердийн uplink-ээр гоожихгүй байгааг баталгаажуул. VPN-ийг сэргээхэд хост нээдэг портуудыг өргөжүүлэхгүйгээр үйлчилгээ буцаж ирэх ёстой.