Менде алыскы сайттан туннель кабыл алып, ошол эле учурда жеткирүүчүнүн тармагына чалган лабораториялык машина бар болчу. Чыгуучу профиль жумалар бою иштеген. Кирүүчү сервер кошулгандан кийин, чыгуучу туташып, анан бир нече секунданын ичинде трафикти өткөрүүнү токтотту, же дарек колдонулуп жатат деген ката менен башталуудан баш тартты. Конфигурация файлдары өзгөргөн жок; хост жөн гана порттор жана маршруттар боюнча өз пикири бар экинчи OpenVPN процессин алды.

Жаңылыштык кокустан эмес жана бул аутентификация маселеси эмес. Бир машинадагы эки демон бир жергиликтүү сокет жана бир маршруттоо таблицасы үчүн атаандашат, ал эми акыркы болуп башталган же кайра туташкан жеңет. Ушул эки кагылышуунун кайсынысы сизде экенин билүү адегенде кайда кароо керектигин аныктайт.

Симптомду тескери окуңуз

Туннель качан өлөт деп баштаңыз. Баштоодо bind катасы угуучу тарапка көрсөтөт: бир нерсе бул портту мурунтан ээлеп турат, жана OpenVPN аны бөлүшүүнүн ордуна башталуудан баш тартат. Көтөрүлүп, анан үнсүз калган туннель маршруттоого көрсөтөт, анткени экинчи нуска орноткон маршрут тышкы байланыштын пакеттерин өз жолунан тартып кетиши мүмкүн.

Эки учур тең бирдей колдонуучунун нааразычылыгын жаратат, ошондуктан кайталоо циклдери жана күзөт скрипттери эч нерсени оңдобойт. Алар кардарды ошол эле жаңжалга кайра туташтырат. Биринчи пайдалуу суроо — трафик токтогондо процесс дагы эле иштеп жатабы.

Ар бир нуска үчүн бир сокет жана бир түзмөк

Угуучу сервер өз портун байланыштырат; чыгуучу кардарга да инкапсуляцияланган трафиги үчүн жергиликтүү порт керек. Экөө тең бир хостто жашаганда, кардардын демейки жүрүм-туруму сервердин порту менен кагылышы мүмкүн. Кардардын жергиликтүү портун бекитүүгө болот, ал эми өнөктөшкө туруктуу булак порту керек болбогон жерде байланыштырууну өткөрүп жиберүүгө болот:

lport 1195
nobind
dev tun1

Бул сандар мисалдар, талап эмес. Маанилүүсү — кардар сервердин порту үчүн атаандашууну токтотуп, ар бир нуска өзүнчө туннель түзмөгүн алышы. tun0 түзмөгүн бөлүшкөн эки демон, порттору ар башка болсо да, бири-биринин түзмөк абалын кайра жазышат, ошондуктан ар бир туннелге бир түзмөк милдеттүү.

nobind кардар тарабына таандык. Сервер дагы эле байланыштырып, угуусу керек, ошондуктан сапты сервер конфигурациясына көчүрбөңүз жана өнөктөшү туруктуу булак порту боюнча чыпкалаган кардарда байланыштырууну өчүрбөңүз.

Демейки маршрут үчүн бир ээсин тандаңыз

Демейки маршрутту бир гана байланыш орното алат. Эгер эки профиль тең бардык трафикти багыттаса, экинчи байланыш биринчисин үнсүз алмаштырат, ал эми биринчиси бузулгандай көрүнөт. Же чыгуучу туннелди бөлүнгөн абалда кармап, жеткирүүчүнүн префикстерин гана жибериңиз, же ага өзүнчө маршруттоо таблицасын бериңиз.

ip rule add from 10.9.0.2 table 120
ip route add default dev tun1 table 120
ip route get 10.9.0.2

Жогорудагы даректер жана таблица номери толтургучтар. Эрежени кошкондон кийин дароо VPN серверинин өз дареги дагы эле кадимки таблица аркылуу чечилерин ырастаңыз; тышкы ташууну кармаган таблица аны коргошу керек болгон туннелди бузат, ал эми андан кийинки кайра туташуу цикли ишенимсиз провайдерге окшошот.

Кайра туташууларга жана кайра жүктөөлөргө туруштук бериши керек конфигурация үчүн тармактык аттар мейкиндиги бекем чек болуп саналат. Экинчи кардар өз аттар мейкиндигинде өз интерфейстери жана маршруттары менен иштейт, жана чектен өтүшү керек кызматтар гана ачылат. Хост бир демейки маршрутту сактайт, ал эми аттар мейкиндигинин кайра туташуусу аны кайра жаза албайт.

Статус сабы менен эмес, таблица менен текшериңиз

Туташкандыгын билдирген кардар өзүнүн башкаруу каналын гана далилдейт. Ар бир туташуунун алдында жана кийин маршруттоо абалын жазып алыңыз, анан ядродон чыныгы багыт кайсы түзмөктү колдонорун сураңыз:

ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194

Эгер экинчи туннель башталганда жеткирүүчүнүн дареги үчүн тандалган түзмөк өзгөрсө, сизде маршрут кагылышуусу бар. Эгер эки процесс тең бир жергиликтүү портто көрүнсө, сизде сокет кагылышуусу бар. Экинчисинсиз биринчисин оңдоо жаңылыштыкты кийинки кайра туташууга гана жылдырат.

Портторду, түзмөктөрдү, таблицаларды жана маршрут ээсин хосттун runbook'уна жазыңыз. Болбосо үчүнчү туннелди кошкон кийинки адам ошол эле кагылышууну кайра ачат, ал эми жалгыз көрүнүүчү далил башка бирөөнүн демону кайра жүктөлмөйүнчө иштеген байланыш болот.

Тектеш макалалар