Нэг хост дээр OpenVPN сервер ба клиент: клиентүүд яагаад тасардаг вэ
OpenVPN үйлчилгээ үзүүлж, өөрөө ч ашигладаг хост туннелээ дээгүүр байлгаж чадах боловч локал клиентүүд хариултаа алддаг. Үүнийг хоёр зүйл тайлбарлана: хуваалцсан пул ба шинэ анхдагч маршрут.
VPN сервер аль хэдийн ажиллаж байгаа машин дээр клиентийн профайл нэмэхэд эхний хохирол нь анхны үйлчилгээ болно. Шинэ туннель огт үүсэхгүй байж болно, эсвэл серверийн одоогийн клиентүүд чимээгүйхэн хариулт авахаа болих үед тэр өргөгдөж болно. Хоёр мөргөлдөөн хоёр үр дүнг гаргадаг: аль хэдийн ашиглагдаж буй туннелийн пул, болон шинэ клиентийн талаас суулгасан, бүх хүснэгтийг хамарсан анхдагч маршрут. Аль нь ч OpenVPN алдааны мэдэгдэл гаргахгүй, иймд энэ гэмтлийг серверийн асуудал гэж уншдаг.
Нэг машин, хоёр үүрэг, хариултууд хаашаа явах ёстой тухай хоёр нийцэхгүй хариулт.
Нэг пул, хоёр сервер: хэн ялдаг вэ
Серверийн хуулбар бүрд өөрийн туннелийн дэд сүлжээ хэрэгтэй. server 10.8.0.0 255.255.255.0 мэтийн мөрийг хоёр дахь тохиргоонд хуулах нь хоёр хуулбарт ижил угтвар өгдөг, үр дүн нь эсвэл ажиллахаас татгалзах, эсвэл нэг серверийн клиентүүд нөгөө нь ч өөрийн гэж үздэг хаягуудыг авдаг чимээгүй өрсөлдөөн болно. Өөр UDP порт, өөр төхөөрөмжийн нэр тус болохгүй, учир нь аль нь ч хаягийн орон зайд хүрэхгүй. Хоёр дахь пулыг өөрчил, мөн маршрутууд түүнийг дурдсан хаа сайгүй өөрчил.
Засварын өмнө юу ажиллаж байгааг жагсаа: ip -4 addr show туннелийн төхөөрөмжүүдийг жагсаана, ss -lunp сонсогчдыг жагсаана, systemctl list-units нэгжүүдийн нэрийг гаргана. Туннелийн хаягууд руу нэг харвал пулууд мөргөлдөж байгаа эсэхийг шийднэ.
Клиентийн профайл хүснэгтэд юу нэмдэг вэ
Клиентийн тал холбогдсон даруйд маршрутуудыг бичдэг. redirect-gateway def1 анхдагч маршрутыг 0.0.0.0/1 дээр нэмэх 128.0.0.0/1 болгон хувааж, хоёуланг нь шинэ төхөөрөмжөөр маршрутлана, мөн алсын сервер рүү чиглэсэн, санаатайгаар физик интерфейст бэхэлсэн хост маршрутыг хамт хийнэ. Энэ бэхэлгээ нь туннель өөрийн тээвэрт зам хадгалахын тулд бий. Бусад бүх зүйл, локал сервер өөрийн клиентүүдэд өгөх ёстой хариултуудыг оролцуулан, одоо шинэ анхдагчийг дагаж алсын холбоосоор гардаг.
Тиймээс хоёр дахь мөргөлдөөн нь эвдэрсэн туннель биш. Энэ бол хүснэгтийн буруу газарт байгаа ажиллаж буй туннель.
Үүргүүдийг тусгаарлах гурван арга
Хамгийн бага хөндлөнгөөс оролцох засвар нь анхдагч маршрутыг клиентийн профайлаас гаргадаг: алсын угтваруудад route-nopull дээр нэмэх тодорхой route мөрүүд, ингэснээр локал хүснэгт зөвхөн таны хүссэн газарт өөрчлөгдөнө. Дараагийн алхам нь локал туннелийн дэд сүлжээг чөлөйлөх бодлогын дүрэм бөгөөд анхдагч маршрут байсан ч локал клиентүүдэд хариу нь ирсэн интерфейсээр гарч болно. Хамгийн нарийн шийдэл нь клиентийн үүрэгт зориулсан тусдаа сүлжээний нэрийн орон зай бөгөөд хуваалцсан хүснэгтийг бүрмөсөн арилгаж, засвар үйлчилгээ хийх хоёр дахь маршрутын орчныг шаарддаг.
Ямар ч зам сонгосон, үл хамаарах зүйл нь LAN биш, локал туннелийн дэд сүлжээг нэрлэх ёстой. Локал серверийн илгээдэг хариултын очих газар нь туннелийн хаяг, тиймээс LAN хэлбэрийн үл хамаарах зүйл түүнд хэзээ ч тохирохгүй.
Хоёр хуулбарын аль нь буруутай вэ
Клиентийн хуулбарыг зогсоож, анхны клиентүүдийг дахин шалга. Шууд сэргэвэл энэ нь маршрутлалт, сервер биш. Клиентийг буцааж асаагаад ip route get-оор нэг хариултыг мөрд, түүнд эх ба очих хаяг хоёуланг нь өгсөн бөгөөд цөм ямар зам сонгохыг харуулна, дараа нь tcpdump -ni any port 1194-оор пакетууд бодитоор ямар интерфейс ашиглаж байгааг ажигла. Серверийн төлөв файл, хэдхэн секунд тутамд status зааварчилгаагаар бичигддэг, холбогдсон клиентүүдийн жагсаалт ба хоёр чиглэлийн байтын тоолуурыг агуулна.
Тэдгээр тоолуурыг бие биенийх нь эсрэг унш. Гарч, хэзээ ч буцаж ирдэггүй трафик бол гар барилтын асуудал биш, маршрутлалтын хариулт юм.