Нэг харилцагчийн сүлжээнд хүрэхийн тулд хоёр дахь VPN клиент суулгах нь энэ асуудал эхлэх ердийн арга бөгөөд хоёр клиент хоёулаа амжилттай гэж мэдээлж байтал эхний туннель харанхуй болдог. Клиент бүр өгөгдмөл маршрут суулгасан, хоёр дахь нь илүү тодорхой байв, одоо цөм үүнийг эхний туннелийн өөрийн гадаад холболтоос бусад бүх зүйлд дагаж байна. Юу ч унасангүй, ямар ч профайл буруу биш. Нэг маршрут нөгөөг орлуулсан бөгөөд шийдэл нь аль туннель өгөгдмөлийг эзэмших ёстойг шийдэх явдал юм.

Шинж тэмдэг: хоёр дахь клиент чимээгүйхэн ялдаг

OpenVPN: redirect-gateway def1 сонголт 0.0.0.0/0-ийг дарж бичихгүй. Энэ нь 0.0.0.0/1 болон 128.0.0.0/1-ыг нэмдэг: хоёулаа хамтдаа бүх IPv4 хаягийг хамарч, префикс бүр уртаараа энгийн өгөгдмөлийг ялдаг. Анхны өгөгдмөл хүснэгтэд үлдэж, энгийн урсгалд ашиглагдахаа болих бөгөөд VPN сервер рүү хост маршрут нь туннелийг өөрийн гадаад пакетуудыг барихаас сэргийлдэг. Хоёр клиент хоёулаа ингэдэг, хоёр дахь нь зүгээр л хосоо дараа нь суулгадаг.

Тиймээс эхний туннель тасарсан биш, үхсэн мэт харагддаг. Интерфейс нь өргөгдсөн, хяналтын суваг нь амьд, ямар ч програмын урсгал түүнд хүрэхгүй болсон. Эсрэг гомдол мөн адил дутагдаж буй push-аас үүдэлтэй: холбогддог ч юу ч илгээдэггүй утас нь ихэвчлэн redirect-gateway-г хэзээ ч зарлаагүй сервертэй ярьдаг тул төхөөрөмж өөрийн өгөгдмөлийг хадгалж, зөвхөн усан санд хүрдэг.

Хоёр дахь клиент холбогдохын өмнө болон дараа нь маршрутын зураг авна уу. Хүснэгтэд гарч буй хоёр хагас маршрут нь бүх өөрчлөлт бөгөөд тэд хоёр гомдлыг хоёуланг нь тайлбарладаг. Шинж тэмдэг илрэхийн тулд хүснэгтийн өөр юу ч хөдлөх шаардлагагүй. Тиймээс хоёр дахь клиентийг хасахад эхнийх нь шууд сэргэдэг.

Аль туннель үнэхээр ялдагийг уншаарай

Ялагчийг клиентүүд эхэлсэн дараалал эсвэл системийн тавиурын дүрсээс бүү дүгнэ. Хоёр хувийн сүлжээний гаднах чиглэлд цөм аль маршрутыг ашиглахыг асууж, буцаж ирсэн интерфейсийг уншаарай.

ip route show
ip route get 198.51.100.24
route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.24

Эхний хоёр нь Linux-ийн хариулт, сүүлийн хоёр нь Windows-ийн эквивалент. Хоёр туннель өргөгдсөн үед тэдгээрийг ажиллуул, дараа нь нэгийг нь салгаж дахин ажиллуул. Хоёр гаралтын ялгаа нь шийдэл сонгохоос өмнө хэрэгтэй баримт бөгөөд аль ч клиентийн лог уншихаас бага хугацаа шаарддаг.

Үр дүнг бичиж тэмдэглэ, үүнд интерфейсийн нэр болон тохирсон префиксийг оруулна. Хоёр дахь VPN эхнийхийг эвдсэн гэсэн тасалбар нь шинж тэмдгийн тодорхойлолт бөгөөд хэн ч арга хэмжээ авч болох маршрутын мэдэгдэл биш. Хайлт нь үүнийг дараагийн инженер нэг командаар давтаж болох баримт болгоно.

Windows: нэг профайлыг өгөгдмөлийг эзэмшихээс сэргийлэх

Windows хадгалсан профайлуудыг хадгалдаг бөгөөд суулгасан клиент нэгийг нөгөөгөөс хамааралтай болгохыг зөвшөөрдөг тул хоёр дахь нь залгахад эхнийх нь автоматаар өргөгддөг. Хамгийн сүүлд холбогдсон профайл өгөгдмөлийг хадгалах хандлагатай тул практик эзэмшигч нь эхнийх биш, сүүлийн залгалт юм. Профайл бүрт өөрийн push маршрутыг өгч, өгөгдмөлийг эзэмших ёсгүй профайлд split tunneling-ийг асаана уу.

Set-VpnConnection -Name "Contoso" -SplitTunneling $true
rasdial Contoso

Split tunneling үүнийг өөрчилдөг: хүснэгтэд зөвхөн серверийн push хийсэн префиксүүд ордог бөгөөд энэ нь өгөгдмөлийг эхний туннель дээр үлдээдэг. Хоёр сервер хоёулаа өгөгдмөл маршрут push хийвэл загвар нь бүтэлгүйтсээр байна, учир нь тэгвэл сүүлийн холболт ялж, клиент талын ямар ч тохиргоо үүнийг өөрчлөхгүй. Серверийн талын push-ыг зас эсвэл нэг эзэмшигчийг хүлээн зөвшөөр.

Программаар ажилладаг профайлууд нь өөр функц бөгөөд мэдэх нь зүйтэй: Windows профайл нь заасан гүйцэтгэх файл ажиллах үед эхэлж болох бөгөөд траффикийн шүүлтүүр юу зөөхийг шийддэг. Энэ нь firewall дүрэм биш, профайлын тохиргоо бөгөөд өгөгдмөл маршрутын зөрчлөөс өөр асуудлыг шийддэг.

Linux: хоёр дахь туннелийг үндсэн хүснэгтээс гадуур байлга

Нэг машин дээр openvpn --config-ийн хоёр хувилбар ажиллуулбал хоёр клиент нэг хүснэгтэд орж, гурван сонголт тэдгээрийг өсөн нэмэгдэх тусгаарлалтаар хуваадаг. Хамгийн хөнгөн нь хоёр дахь клиентийг хүснэгтийг огт засахгүй байлгах: тодорхой маршруттай route-nopull, эсвэл зөвхөн зорьсон зүйлээ суулгадаг route-up скрипт. Тэгвэл хоёр дахь туннель зөвхөн таны нэрлэсэн префиксүүдийг зөөж, өөр юу ч зөөхгүй. Тэгвэл аль префикс хаашаа явахыг дараа нь илрүүлэхийн оронд өөрөө шийднэ.

Бодлогын маршрутлалт нь дунд сонголт. Дүрэм нэг эх хаяг эсвэл firewall тэмдэгт тусдаа хүснэгт сонгож, тэр хүснэгт хоёр дахь туннелийн маршрутуудыг зөөдөг. Эсрэг замын шүүлтүүр энд урхи болдог, учир нь хүснэгтийн сонгох интерфейсээс өөр интерфейс дээр ирсэн хариулт хаягдана, тиймээс туннель эвдэрсэн гэж дүгнэхээс өмнө rp_filter тохиргоог шалгаарай.

ip rule add from 10.44.7.0/24 table 100
ip route add default dev tun1 table 100
sysctl net.ipv4.conf.all.rp_filter

Сүлжээний нэрийн орон зай нь хамгийн хүнд бөгөөд хамгийн цэвэр сонголт. Хоёр дахь клиентийг ip netns дотор эхлүүлж, veth хосыг өгч, ашиглахын тулд тэр нэрийн орон зайд ор. Хөндлөнгийн оролцоо арилна, учир нь нэрийн орон зай бүр нэг хүснэгтийг хуваалцахын оронд өөрийн хүснэгттэй байдаг; хоёр туннель долоо хоногоор дээшээ байх шаардлагатай үед энэ нэмэлт тохиргоо үнэ цэнэтэй.

Программ тус бүрээр, мөн гинжилт нь тусдаа асуудал

Заримдаа зөвхөн нэг программ хоёр дахь туннелийг ашиглах ёстой. Linux-д хэрэглэгч, cgroup эсвэл портоор бодлогын маршрутлалт тэр үр дүнд хүрдэг бөгөөд нэг чиглэлийг өгөгдмөлд огт хүрэлгүйгээр интерфейст бэхлэх боломжтой. Сокетоо нэг интерфейст бэхэлсэн программ маршрутын хүснэгтэд огт хандахгүй тул эхлүүлэгч өөрийн тохиргоонд хаяг сонгогдох хүртэл физик адаптерийг ашигласаар байж болно.

Гинжилт нь хоёр туннелийг зэрэгцүүлэн ажиллуулахаас өөр үйлдэл юм. A-г B-ийн дээгүүр гинжлэх гэдэг нь дотоод серверийн хаяг гадаад туннелийн дотроос хүрч болохуйц байх ёстой гэсэн үг. Гадаад клиент мөн дотоод клиентийн шифрлэгдсэн пакетуудыг алдагдал гэж ойлгож болохгүй. Виртуал машин доторх нэг клиент нь бүдүүлэг боловч найдвартай хувилбар; хоёулаа нэг хост дээр байх бол дээрх маршрутлалтын ажил дээр дотоод сервер рүү хэзээ ч дотоод туннельд орохгүй гадаад зам хэрэгтэй.

Өгөгдмөлийн эзэмшигч, туннель бүрийн зөөдөг префиксүүдийн жагсаалт болон DNS замыг бичиж тэмдэглэ. Тэдгээр гурван баримт дараагийн тохиолдлыг мөрдөн шалгалтын оронд хайлт болгоно.

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