OpenVPN-ийн бүрэн туннель таны SSH сессийг таслана: буцах замыг засна
Өгөгдмөл маршрут SSH хариултуудыг туннель рүү илгээдэг. Пирээ тогтоож, redirect-gateway-г шүүх эсвэл машинаа алдахаас өмнө эх сурвалжаар маршрутлаарай.
SSH-ээр хандаж буй машин дээр бүрэн туннель бүхий OpenVPN клиентийг асаахад сессийг нэг секундын дотор тасалж болох бөгөөд машин ямар ч буруугүй байна. Туннель нь пакетууд серверт хэрхэн хүрэхийг өөрчлөхгүй; хариултууд хэрхэн гарч байгааг өөрчилдөг. Өгөгдмөл маршрут tun0 руу заасан даруйд таны SSH клиент рүү чиглэсэн хариулт нийлүүлэгчийн сүлжээнд орж, тэр сүлжээнд таны хаяг руу буцах зам байхгүй. Холболт унж, дараагийн оролдлого хугацаа хэтэрч, демон бүх хугацаанд 22 порт дээр сонсож байна.
VPN-ийн логыг уншихаас өмнө маршрутын хүснэгтийг уншина уу. Лог туннель боссон гэж хэлэх бөгөөд энэ нь зөв. Асуудал нь хариулт бүр ямар интерфейсэд шилжихэд байгаа бөгөөд энэ нь туннелийн дөнгөж дахин бичсэн хүснэгт рүү пакет бүрээр хийх хайлт юм.
Хариулт яагаад буруу хаалгаар гардаг вэ
Орж буй пакетууд физик интерфейс дээр ирсээр байна, учир нь VPN клиент интернэт таны серверийн нийтийн хаяг руу хэрхэн хүрэхийг өөрчилж чадахгүй. Хариултууд нь тусдаа шийдвэр: пакет бүрд цөм очих газрыг хайж, --redirect-gateway-ийн дараа өгөгдмөл бичлэг туннель гэж хэлдэг. Нийлүүлэгчийн гарал нь өөрөө үйлчлэхгүй очих газрыг харж пакетыг хаядаг.
OpenVPN-ийн өөрийн хамгаалалт яг нэг очих газрыг хамардаг. 2.6 гарын авлага --redirect-gateway-г дараалал гэж тайлбарладаг: туннель босохоос өмнө хэрэглэж байсан гарцаар VPN пирт хост маршрут нэмж, шифрлэгдсэн урсгал өөр рүүгээ эргэж орохгүй болгож, дараа нь өгөгдмөл маршрутыг сольдог. Тэр хост маршрут зөвхөн пирд зориулагдсан. Таны SSH клиент бол зүгээр л өөр нэг интернэт хаяг бөгөөд ямар ч онцгой тохиолдол авахгүй.
Нэг префикс алдааг эрт хасах нь зүйтэй. Уртгүй ip route add -net 0.0.0.0 gw 10.8.0.1 dev tun0 нь ганц 0.0.0.0 хаягтай тохирдог, интернэттэй биш; энэ нь 0.0.0.0/0 байх ёстой. Хэрэв өгөгдмөлийг авах нь туннелийн өөрийн тээврийг эвдвэл, төгсгөлийн цэгийг физик интерфейсээр хост маршрут болгон нэмнэ үү, нийлүүлэгчийн бодит хаягыг ашиглан.
Нэн даруй засахын тулд SSH клиентийнхээ хаягыг тогтоо
Хамгийн хурдан засвар бол туннель байхын өмнө серверийн хэрэглэж байсан гарцаар таны клиентийн хаяг руу хост маршрут юм. Өөрийн талаас серверийн харах хаягыг олж, дараа нь хуучин гарцыг мэдэхийн тулд серверийн хүснэгтийг уншина уу:
curl -s https://ifconfig.co
ip route
Сервер дээр клиент эхлэхээс өмнө онцгой тохиолдлыг нэмнэ үү. Энд байгаа хаягууд нь орлуулагч; хэлбэр нь чухал:
sudo ip route add 80.128.240.55 via 192.168.178.1
Энэ бол мэдээлсэн тохиолдолд хэрэглэсэн засвар бөгөөд тэр даруй ажилладаг. Мөн урьдчилан таамаглах хоёр байдлаар эмзэг: дахин ачаалахад маршрут алга болж, ISP танд өөр хаяг өгсөн агшинд буруу болдог. Үүнийг яаралтай арга хэмжээ гэж үзэж, санаатайгаар тогтвортой болго, сүлжээний нэгж эсвэл dispatcher дэгээгээр, эсвэл түр зуурын гэдгийг хүлээн зөвшөөрч сэргээх замыг бичиж үлдээ.
Клиентийг өгөгдмөл маршрутыг авахаас сэргийл
Илүү цэвэр сонголт бол туннелийг өгөгдмөл маршрутыг огт солихгүй байлгах юм. route-nopull, --client эсвэл --pull-тэй хамт хэрэглэхэд маршрут, block-outside-dns болон DNS сервер зэрэг DHCP маягийн сонголтуудаас бусад түлхэгдсэн сонголтыг хүлээн авдаг тул зөвхөн хэрэгтэй префиксүүдийг нэмнэ. Илүү нарийн хэрэгсэл бол татах шүүлтүүр бөгөөд нэг асуудалтай зааврыг хаяж, бусад хэсгийг үлдээдэг:
route-nopull
pull-filter ignore "redirect-gateway"
Нэгийг нь эсвэл нөгөөг нь хэрэглэ, хоёуланг нь биш, юу өөрчлөгдөхийг тодорхой мэд. Туннелээр дамжих өгөгдмөл маршрут байхгүй бол сервер нийлүүлэгчээр интернэтийг үзэхээ болино; зөвхөн таны тодорхой маршрутласан зүйлд хүрнэ. Хэрэв бүрэн туннель бүхэл зорилго байсан бол энэ нь буруу товчлуур бөгөөд дээрх хост маршрут зөв юм.
Буцах замыг эх сурвалж эсвэл холболтоор хуваа
Орж буй хаяг тогтвортой бол эх сурвалжийн дүрэм туннелийн өөрийн маршрутад хүрэлгүйгээр хариултуудыг локал барина. Физик интерфейсийн хаягт LAN префикс болон физик өгөгдмөл бүхий өөрийн хүснэгт өгч, дараа нь түүнээс ирэх урсгалд тэр хүснэгтийг сонго:
ip rule add from 192.168.1.11 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1
Энэ нь ажилладаг, учир нь орж буй SSH холболтын хариултууд клиентийн холбогдсон хаягаас гардаг. Орж буй бүх үйлчилгээ үргэлжлүүлэн ажиллах ёстой байсан мэдээлсэн тохиолдол яг энэ хэлбэрийг хэрэглэсэн. Орж буй хаяг хөвж байгаа эсвэл зам динамик бол оронд нь холболтыг тэмдэглэ: физик интерфейсээс ирж буй эхний пакетэд conntrack тэмдэг тавь, OUTPUT дахь хариу пакетууд руу түүнийг хуул, тэмдэглэсэн пакетуудыг физик гарц руу заасан хүснэгтээр маршрутла.
iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
ip route add default via 192.168.1.1 dev eth0 table 3412
ip rule add fwmark 4321 table 3412
Турших үед холболтын тэмдэг, галын хананы тэмдэг, хүснэгтийн дугаарыг тусад нь барина уу. Нэг дугаарыг хоёр үүрэгт дахин ашиглах нь зөв харагдах боловч буруу пакетуудад тохирох дүрэм үүсгэдэг. Хүснэгтийн өгөгдмөл бичлэгт энгийн Ethernet холбоос дээр LAN гарцтайгаа via бас хэрэгтэй; нүцгэн dev eth0 нь интерфейс цэг-цэг байх эсвэл дараагийн харайлт өөр аргаар шийдэгдэх үед л ажиллана. Мэдээлсэн Jessie хост нүцгэн хэлбэр ажилласан холбоос дээр санамсаргүй байсан бөгөөд энэ нь хуулбарлах ёстой түгээлтийн дүрэм биш.
Өөрийгөө түгжихгүйгээр шалга
Салгаж туршиж болохгүй. Эхний сессийг нээлттэй үлдээж, туннелийг өргөж, өөрийн хаяг ямар замаар явахыг цөмөөс асуу:
ip route get 80.128.240.55
Хариулт нь туннель биш, физик интерфейс болон хуучин гарцыг нэрлэх ёстой. Дараа нь хоёр дахь SSH холболт нээ; энэ бол жинхэнэ шалгалт, учир нь хуучин сессийг шинэ холболт дахин үүсгэж чадахгүй төлөв дээр амьд үлдэж болно. Хоёр дахь нь унжиж, эхнийх нь хариулсаар байвал дүрэм чухал урсгалд хэзээ ч тохироогүй бөгөөд тэмдэг эсвэл эх сурвалжийн хаяг руу харах хэрэгтэй.
Бүх дасгалын турш зурвасаас гадуурх консолыг бэлэн байлга. Ганц хандах зам нь таны дөнгөж эвдсэн туннель болсон серверийг тэр туннелээр засах боломжгүй бөгөөд нэмсэн хүснэгтийн дугаар, префиксүүдээ бичиж үлдээвэл буцаах нь ч хялбар.