Нэг LAN дэд сүлжээг OpenVPN-ээр дамжуулж, өгөгдмөл маршрутыг хадгал
Нэг дэд сүлжээ туннелээр дамжих үед LAN-ийн өгөгдмөл маршрутыг хадгал. Бодлогын хүснэгтийг үндсэн хүснэгтийн засвартай харьцуулж, дараа нь NAT эсвэл серверийн талын маршрутыг сонго.
LAN-д маршрутлалт хийж, зэрэг VPN-д холбогддог төхөөрөмжүүд өөрсдөөтэйгөө ижил маргаантай болдог: туннель нь өгөгдмөл маршрутыг эзэмшихйг хүсдэг, LAN-д эргүүлэн хэрэгтэй байдаг. OpenVPN холбогдоход туннелээр өгөгдмөл маршрут эсвэл хос хагас-өгөгдмөл суулгаж болох бөгөөд энэ нь зөөврийн компьютерт зөв, хөршүүд нь түүний LAN хаягаас хариу хүлээдэг гарцын хувьд буруу. Хариулт нь VPN-ийг алгасах биш. Хариулт нь хоёр шийдвэрт өөр өөр хүснэгт өгөх юм.
Нэг өгөгдмөл маршрут, хоёр эзэмшигч
Дамжуулсан трафик болон локал үүссэн трафик нэг замаар явах шаардлагагүй. LAN клиентүүдэд туннель зөвхөн таны сонгосон очих газруудад хэрэгтэй, харин хост өөрийн удирдлагын сесс болон тэдгээр клиентүүдэд өгөх хариултад LAN-ийн өгөгдмөл маршрут хэрэгтэй. Хоёуланг нь үндсэн хүснэгтэд холих нь хоёр өөр асуултад нэг хариултыг тулгадаг.
OpenVPN-д яг үүний тулд унтраалга байдаг. route-noexec клиентийг үндсэн хүснэгтэд огт хүрэхээс сэргийлж, ашиглах байсан утгууд нь route-up скриптэд route_vpn_gateway, dev болон интерфэйсийн хаяг хэлбэрээр экспортлогдоно. Дараа нь аль хүснэгт аль маршрутыг авахыг та шийднэ, дараа уншиж болох код дотор.
Бодлогын хүснэгт эсвэл үндсэн хүснэгтийг дахин бичих
| Approach | What it buys | What it costs |
|---|---|---|
| Separate table plus source rule | LAN traffic and host traffic keep independent defaults | Every lookup now depends on rule order |
| Editing the main table only | Fewer moving parts on a single-purpose host | One mistake takes the gateway offline entirely |
| Two half-default routes | Works for a full-tunnel client | Ambiguous on a host that must answer on its LAN address |
Тусдаа хүснэгт нь нэг дэд сүлжээнээс цааш масштаблагдах цорын ганц сонголт. Нэг удаа нэр өгөөд, дараа нь нэрээр нь дурдаарай, ингэснээр хэн ч тоо санаж байх шаардлагагүй:
echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpnЭнд байгаа хаягууд нь орлуулагч юм. Ямар нэг зүйл ажиллуулахын өмнө LAN угтвар, туннелийн гарц, төхөөрөмжийн нэрийг өөрийн байршуулалтаас соль.
Дүрэм хостой ч тохирох ёстой
Зөвхөн LAN угтвартай тохирох дүрэм дамжуулсан пакетуудыг хамарна. Энэ нь гарц өөрөө үүсгэсэн трафикийг хамахгүй, мөн LAN клиентүүдэд буцааж илгээсэн, эх сурвалж болгон гарцын LAN хаягийг агуулсан хариултыг хамахгүй. Тэдгээр хайлт main руу унаж, туннелээр гарч болно.
Гарцын өөрийн LAN хаягт хоёр дахь дүрэм нэмэх, эсвэл эхний дүрмийг хоёуланг нь хамарсан олонлог болгон өргөжүүл. Дараалал чухал: илүү тодорхой дүрмийг эхэнд тавьж, эх сурвалжийг тодорхой нэрлэсэн хайлтаар үр дүнг шалга.
ip route get 203.0.113.9 from 192.168.50.1Хэрэв энэ нь локал үлдэх ёстой очих газарт туннелийн төхөөрөмжийг мэдээлж байвал, хүснэгтэд юу байх нь хамаагүй, дүрмийн олонлог буруу.
NAT эсвэл цаанаа маршрут
VPN сервер нь туннелийн дэд сүлжээг мэднэ, өөр юу ч мэдэхгүй. LAN эх хаягтай ирсэн пакетуудад хэн нэгэн буцах зам олгохгүй бол буцах зам байхгүй, мөн үүнийг олгох яг хоёр арга бий. Сервер дээр LAN угтварт маршрут нэмэх нь анхны эх сурвалжийг эцсээс эцэс хүртэл харагдахуйц байлгадаг, аудит хийсэн загвар ихэвчлэн үүнийг хүсдэг. Гарц дээр маскировка хийх нь эх сурвалжийг туннелийн хаяг руу дахин бичдэг бөгөөд серверийн хамтын ажиллагаа шаардлагагүй.
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADEСерверийг хянахгүй, тэнд маршрут нэмж чадахгүй бол NAT-г сонго. Бүртгэл, нэвтрэх хяналт эсвэл буцах замын тэгш хэм чухал бол серверийн талын маршрутыг сонго, учир нь маскировка нь цаанаах тал бүртгэдэг бүхнээс анхны хаягийг устгадаг.
Аль ч тохиолдолд дамжуулалт идэвхтэй байх ёстой бөгөөд хатуу урвуу замын шүүлтүүр нь main тухайн эх сурвалжид туннелийг сонгохгүй байсан бол хариуг хаяж болно. Туннелийг буруутгахын өмнө үр дүнтэй утгыг шалга.
Хуваалт дахин холболтыг даван туулах болтугай
Гараар нэмсэн дүрэм, маршрутууд интерфэйс дахин үүсэхэд алга болдог, хуучирсан хүснэгтийн бичлэг нь түүнийг зөвтгөсөн сессээс удаан амьдарч болно. Хүснэгтийн дүрэм, туннелийн маршрут, маскировка бичлэгийг клиентийн route-up скрипт дотор тавьж, скриптийн эхэнд хүснэгтийг цэвэрлэ, ингэснээр хуучин гарц шинэ сесс рүү амьдарч чадахгүй.
Хоёр төгсгөлөөс шалга: гарц дээр LAN эх сурвалжтай хайлт, LAN клиентээс туннелээр гарах ёстой очих газар руу бодит хүсэлт. Байгаа боловч хэзээ ч сонгогддоггүй маршрут нь тоолуурыг унших хүртэл маршрут огт байхгүйтэй яг адил ажилладаг.