Два кліенты OpenVPN на адным хосце Linux: каму належыць маршрут?
Два кліенты могуць дзяліць адзін хост, калі ў кожнага прэфікса ёсць гаспадар. Прайдзіце прызначэнне, пулы, назвы асобнікаў і тэст прыпынку для кожнага тунеля — менавіта ў гэтым парадку.
Абодва профілі паведамляюць пра злучэнне, і адзін з іх ціха пераносіць трафік, прызначаны другому. Два кліенты на адным хосце — гэта падтрымліваемая схема; два кліенты без гаспадара для кожнага прэфікса — не. Праца тут менш пра падняцце другога тунеля і больш пра тое, які працэс мае права прэтэндаваць на які маршрут. Прайдзіце ў парадку ніжэй, і канфігурацыя вынікае з адказаў.
Пачніце з пытання, для чаго патрэбны другі тунель
Тры сітуацыі выглядаюць аднолькава ў радку стану і патрабуюць розных рашэнняў. Падзел па пунктах прызначэння накіроўвае адзін прэфікс праз офісны профіль, а другі — праз лабараторны, прычым ні адзін не прэтэндуе на маршрут па змаўчанні. Падзел па праграмах звычайна захоўвае адзін поўны тунель і накіроўвае пэўны трафік правіламі палітыкі. Рэзервовае пераключэнне трымае ўключаным роўна адзін тунель за раз, а значыць, другі не павінен запускацца аўтаматычна.
Запішыце выпадак, перш чым адкрываць любы файл канфігурацыі, бо гэты адказ вызначае ўсё наступнае.
Найчасцейшая зламаная схема — два поўныя тунелі, якія абодва праштурхнулі маршрут па змаўчанні: перамагае той, хто падключыўся апошнім, а першы працягвае прыкідвацца. Такі стан выглядае наўмысным з радка стану і марнуе дзень з табліцы маршрутызацыі. Калі назваць выпадак адразу, ён становіцца немагчымым, а не проста малаверагодным.
Паглядзіце на пулы раней за маршруты
Два серверы лёгка выдаюць адрасы з аднаго прыватнага дыяпазону, і тады кліент атрымлівае два інтэрфейсы ўнутры аднаго прэфікса. Ніводнае прызначэнне ўжо нельга аднесці да інтэрфейса па адрасе, бо абодва выглядаюць аднолькава правільнымі. Перанумаруйце адзін пул, замест таго каб выдумляць правіла для разрыву нічыі.
Праверце і лакальную сетку, бо хатняя або офісная LAN, якая перакрывае дыяпазон тунеля, стварае тую ж неадназначнасць з іншага боку. Параўнайце адрасы на хосце з абедзвюма канфігурацыямі сервераў, перш чым вінаваціць кліент. Змена пула на лабараторным серверы — пяціхвіліннае выпраўленне, а абыход праз палітыку маршрутызацыі для перакрытага прэфікса — пастаянны падатак для ўсіх, хто чытае канфігурацыю пазней. Вырашыце, чаго з гэтага вы хочаце, перш чым выбіраць, дзе ўмешвацца.
Дзве сям'і адрасоў — два раўнды гэтай праверкі. Пулы IPv6 сутыкаюцца так жа ціха, як і пулы IPv4.
Дайце кожнаму профілю гаспадара
Адзін асобнік на профіль, адзін файл канфігурацыі на асобнік і адно імя, якое вызначае пару. У пакетаванні ў стылі Debian імя пасля знака @ выбірае файл, таму два профілі з аднолькавым імем асобніка ніколі не будуць працаваць разам. Пацвердзіце адпаведнасць па ўсталяваным юніце, а не па інструкцыі.
systemctl cat [email protected]
ip -4 addr showЗатым вырашыце, хто ўсталёўвае маршруты, — гэта пытанне палітыкі, а не сінтаксісу.
Калі два серверы праштурхоўваюць несумяшчальныя наборы, то альбо дадайце route-nopull і пералічыце толькі прэфіксы, патрэбныя кожнаму профілю, альбо дазвольце аднаму захаваць свой маршрут па змаўчанні і накіруйце астатняе правілам палітыкі. Два працэсы, якія абодва ўсталёўваюць маршрут па змаўчанні, заканчваюцца адным пераможцам, і ніхто не можа сказаць чаму. Як толькі два тунелі вязуць трафік розных крыніц, адказ можа выйсці не праз той тунель, і ўстойлівы ўзор — гэта пазнака злучэння, якая аднаўляецца на адказах і накіроўваецца ў сваю табліцу. Абмяжуйце пазнакі так, каб уласныя зашыфраваныя пакеты тунеляў ніколі ім не адпавядалі.
Праверце кожны тунель, затым спыніце адзін
Калі абодва ўзнятыя, зніміце тры паказчыкі: адрас на кожнай прыладзе тунеля, маршрут да хоста, які жыве за кожным з іх, і шлях, які выбрала б прызначэнне па-за абодвума. Звычайны спіс маршрутаў перастае апісваць канчатковы пошук, як толькі ў справу ўступаюць правілы, таму спытайце ядро, што яно насамрэч выбера. Затым спыніце адзін асобнік і паглядзіце, што знікне. Калі спыненне першага парушае другі, нешта ўсё яшчэ агульнае паміж імі: маршрут, імя прылады або правіла брандмаўэра, якое ніхто не падзяліў.
ip rule show
ip route get 203.0.113.9Вярніце спынены профіль і паўтарыце тыя ж праверкі, бо тунель, які працуе адзін раз пасля перазагрузкі і больш ніколі, — гэта памылка жыццёвага цыкла ў касцюме маршрутызацыі.
Запішыце ў нататках пра разгортванне, які профіль валодае якім прэфіксам, побач з дыяпазонамі пулаў. Два тунелі — гэта наўмысная дамоўленасць, і наступнаму чытачу патрэбна бачная мяжа, перш чым кранаць любы профіль. Без гэтай нататкі мяжу зноў адкрывае той, хто будзе чарговым, калі агульны прэфікс урэшце зламаецца.