Хто валодае адрасам, маршрутам, DNS і файрволам у Linux VPN?
Linux VPN патрабуе адной адказнай інстанцыі на кожны аб’ект: прылада, адрас, маршруты, DNS, файрвол. Запішыце гэтую карту, а затым вызначце, што аднаўляюць загрузка, перападлучэнне і сыход.
Два скрыпты, якія змагаюцца за адзін і той жа маршрут, — звычайная форма праблемы Linux VPN, якую рэгіструюць як памылку маршрутызацыі. Адзін кампанент стварае тунэльную прыладу, другі дадае маршрут па змаўчанні, трэці перапісвае канфігурацыю рэзолвера, а чацвёрты перазагружае правілы файрвола. Любы з іх можа адмяніць працу іншага, і пераможцам становіцца проста той, хто запусціўся апошнім. Пытанне, на якое варта адказаць, не ў тым, які пакет устанавіць, а ў тым, які кампанент з’яўляецца аўтарытэтным для кожнай часткі стану.
Запішыце гэтую карту аднойчы, і большасць збояў перападлучэння перастане быць загадкавай. Маюць значэнне чатыры аб’екты: прылада і яе адрасы, маршруты і правілы палітыкі, канфігурацыя DNS і файрвол.
Прылада і яе адрасы
Тунэльная прылада ствараецца альбо мэнэджарам, які ведае профіль, альбо дэманам, які хтосьці запусціў уручную. Абедзве схемы працуюць самі па сабе; змешваць іх — не. Калі профіль належыць NetworkManager, няхай ён валодае і прыладай, і не запускайце некіраваны OpenVPN-працэс супраць таго ж імя тунэля.
Запішыце, хто выдаляе прыладу, калі сеанс сканчаецца. Прылада, якая перажывае свой сеанс, — найчасцейшая крыніца састарэлых адрасоў і блытаніны, якая за імі ідзе.
Маршруты і правілы палітыкі
Менавіта на маршрутах канфлікты ўладання робяць бачныя страты. Мэнэджар злучэння ўсталёўвае маршрут па змаўчанні для тунэля плюс больш канкрэтны маршрут для далёкай сеткі; уручную напісаны скрыпт затым дадае свой уласны маршрут па змаўчанні з іншай метрыкай і ціха перамагае або прайграе ў залежнасці ад часу. Вызначце, якія запісы прывязаны да злучэння, якія з’яўляюцца пастаяннай палітыкай і які кампанент абнаўляе іх пасля перападлучэння. Затым трымайце іншыя кампаненты па-за гэтай табліцай.
Правілы палітыкі заслугоўваюць такой жа яснасці, бо правіла, якое паказвае на табліцу, якую ніхто не запаўняе, стварае чорную дзірку, якая выглядае дакладна як мёртвы тунэль. Калі правіла існуе, каб прымусіць трафік кудысьці, табліца, якую яно выбірае, павінна абслугоўвацца тым жа ўладальнікам.
DNS заўсёды асобны ўладальнік
Дэман рэзолвера працуе як уласны працэс пад уласнай ідэнтычнасцю, таму ён не наследуе рашэнні маршрутызацыі тунэля выпадкова. Калі VPN перадае DNS-серверы, нешта павінна ператварыць гэта ў канфігурацыю для кожнага канала, якую рэзолвер паважае, і нешта павінна прыбраць яе потым.
Міф тут у тым, што запіс імя сервера ў профіль змяняе, куды ідуць запыты. Ён змяняе тое, што паведамляецца рэзолверу, а не тое, які сокет рэзолвер выкарыстоўвае зверху. Праверце запытам плюс пошукам маршруту замест даверу да файла.
Стан файрвола і хто яго аднаўляе
Правілы файрвола — аб’ект, які найчасцей перазапісваюць на VPN-хосце. Мэнэджар можа дадаваць правілы NAT або перасылкі для кожнага злучэння, пакуль служба файрвола пры загрузцы перазагружае захаваны набор правіл і сцірае іх. Выберыце адну ўладу для палітыкі і зрабіце іншую яе спажыўцом, або прызнайце, што перазагрузка ціха змяняе паводзіны. Выключэнні, прывязаныя да злучэння, належаць у файл, які загружае той жа ўладальнік, а не ў каманду iptables, набраную падчас пошуку няспраўнасці.
Калі правілы павінны перажыць перападлучэнне, скажыце гэта яўна. Калі не павінны, скажыце і гэта, бо наступны інжынер будзе меркаваць больш зручны адказ.
Жыццёвы цыкл: загрузка, перападлучэнне, сыход
Дайце кожнаму з гэтых трох момантаў уладальніка. Пры загрузцы вырашыце, што гатуе перадумовы і ў якім парадку. Пры мяккім перазапуску памятайце, што прылада можа перажыць, а стан сеансу — не, таму павінен працаваць правяральнік, а не стваральнік. Пры сыходзе выдаляйце толькі тое, што стварыла гэтае злучэнне, бо скід усіх маршрутаў або ачыстка ўсяго файрвола — не тое ж самае, што вывад аднаго тунэля з эксплуатацыі.
Для назірання ip monitor link address route паказвае змены ядра па меры іх узнікнення, але ён паведамляе пра падзеі, а не пра намер: выдалены маршрут нічога не кажа пра тое, які працэс яго выдаліў. Спалучыце яго з картай уладання, і загадкавае завяршэнне стане кароткім спісам кандыдатаў.
Выключэнні таксама маюць кошт. Пазначэнне цэлага класа прылад як некіраванага, каб пазбегнуць канфлікту, перадае гэты стан нікому, а гэта рашэнне, а не выпраўленне.