Бір хостта 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 директивасы арқылы жазылады, қосылған клиенттер тізімін және екі бағыттағы байт санағыштарын қамтиды.
Бұл санағыштарды бір-біріне қарсы оқыңыз. Шығып, ешқашан қайтпайтын трафик — бұл қол алысу мәселесі емес, маршруттау жауабы.