Пакет для 10.77.20.0/24 прымае на серверы OpenVPN два асобныя рашэнні: аперацыйная сістэма павінна перадаць яго VPN-інтэрфейсу, а OpenVPN павінен ведаць, які падключаны кліент валодае гэтым прэфіксам. Адсутны маршрут ядра скідае яго да тунэля, адсутны маршрут суседа скідае яго пасля. Абедзве памылкі выглядаюць аднолькава з далёкай LAN, і каб вызначыць, якая ў вас, патрэбна адна каманда з кожнага боку.

У класічным шляху даных у прасторы карыстальніка маршрут ядра дастаўляе пакет у працэс тунэля, а iroute паведамляе гэтаму працэсу, які сусед павінен яго атрымаць. Ні адзін не замяняе другі, і канфігурацыя з адным з іх будзе выглядаць разумнай аж да першага ping.

Два рашэнні, а не адзін маршрут

Уявіце сувязь паміж пляцоўкамі, дзе 10.77.20.0/24 знаходзіцца за адным кліентам. Маршрут ядра на серверы, напрыклад ip route add 10.77.20.0/24 dev tun0, адпраўляе адпаведныя пакеты на прыладу тунэля. Затым OpenVPN звяртаецца да ўласнай унутранай табліцы, пабудаванай з запісаў iroute у каталогу канфігурацыі кліента, каб вырашыць, якое злучэнне суседа іх атрымае. Без маршруту ядра пакет ніколі не дасягае працэсу, а без маршруту суседа ён дасягае працэсу і нікуды не ідзе.

Гэты падзел лёгка забыць, бо адзін радок маршруту ў профілі кліента можа выглядаць так, быццам выконвае абедзве задачы. Гэта не так: штурханне маршруту кажа кліентам, што адпраўляць праз тунэль, а iroute кажа серверу, каму належыць дыяпазон адрасоў за кліентам. Яны жывуць у розных файлах, чытаюцца рознымі бакамі і адмаўляюць у процілеглых кірунках.

Дзе месца iroute і што ён кажа

Запіс ідзе ў файл для асобнага кліента, названы па common_name кліента, у client-config-dir, у выглядзе iroute 10.77.20.0/24. Супадзенне імені файла не касметычнае: OpenVPN шукае аўтэнтыфікаваную асобу і чытае файл менавіта з такой назвай, таму файл site-a дзейнічае толькі для кліента, чыё агульнае імя site-a. Дадайце ccd-exclusive, калі кліентаў без такога файла трэба адмаўляць цалкам; гэта правільны параметр, калі кожны кліент — шлюз пляцоўкі. Трымайце адзін файл на шлюз і называйце яго па суб’екце сертыфіката, які вы сапраўды выдаяце.

Праверце запіс з сервера, перш чым вінаваціць далёкую LAN. Файл стану пералічвае падключаныя кліенты з іх агульнымі імёнамі, а сервер з --verb 4 запісвае ўсталяванне iroute у момант падключэння суседа. Калі пры падключэнні нічога не з’яўляецца, файл ляжыць у няправільным каталогу або называе няправільную асобу.

Пастка: файл ёсць, асоба няправільная

Правільна выглядаючы iroute, прымацаваны да няправільнага суседа, марнуе больш часу, чым адсутны файл, бо ўсё на дыску выглядае слушна. Перайменаванне сертыфікатаў, дублі агульных імёнаў і username-as-common-name, які змяняе эфектыўную асобу, — усё гэта дае такі вынік. Праверце, якую асобу сервер аўтэнтыфікаваў, а не якую вы чакалі: вывад стану — аўтарытэтны, а імя файла — толькі ключ пошуку.

Маршрут можа перажыць свайго ўладальніка. Статычныя маршруты і запісы iroute апісваюць прэфікс, а не гарантыю даступнасці, таму трафік можа працягваць накіроўвацца да суседа, які зараз адключаны.

Давядзіце шлях за межы суседа

Уладанне суседам — гэта сярэдзіна шляху, а не канец. Кліент павінен перасылаць пакеты з тунэля ў сваю LAN, а значыць, на тым хасце ўключана перасылка IP і правіла міжсеткавага экрана дазваляе праход. Хасты ў далёкай LAN патрабуюць зваротнага шляху для адраса тунэля: або маршрут, накіраваны назад да шлюза, або свядомая схема NAT на баку кліента. Пацвердзіце наладу перасылкі на кліенце праз sysctl net.ipv4.ip_forward, а не здагадвайцеся пра значэнне па змаўчанні дыстрыбутыва.

Калі іншыя кліенты VPN павінны дасягаць гэтай падсеткі, схема зноў павялічваецца: серверу патрэбен client-to-client, а гэтым кліентам — маршрут прэфікса праз тунэль. Нішто з гэтага не вынікае з уласнай табліцы маршрутаў сервера.

Праверце адзін пункт прызначэння з рэальнай крыніцы, а не з самога сервера. Ping з незвязанага хаста LAN да хаста за кліентам практыкуе зваротны шлях, правіла перасылкі і ўладанне суседам адным рухам, тады як паспяховы handshake даказвае толькі асобу. Затым адключыце суседа-ўладальніка і запішыце, што робіць маршрут, бо гэты адказ і ёсць ваш рэжым адмовы.

Падобныя артыкулы