Подзакрыть OpenVPN
Dec. 23rd, 2025 08:12 pmУ нас на работе случилось обновление конфига OpenVPN. И я выбрался, наконец, улучшить свои. Запустил
Заодно заменил
X-Post в ЖЖ.
openvpn под пользователем openvpn. Для этого пришлось настроить sudo — разрешить пользователю openvpn выполнять скрипты настройки файервола и resolvconf от рута.Заодно заменил
tls-auth на tls-crypt в надежде, что DPI от РКЦ не опознает трафик и будет меньше блокировать.X-Post в ЖЖ.
no subject
Date: 2025-12-23 06:43 pm (UTC)Ну в общем, по-моему, черт его оразберет повысил ты этим безопасность или познизел. Код openvpn все же достаточно вылизан, чтобы можно было разрешить ему выполнятьтся от рута. А так придется в гораздо менее вылизанные скрипты выносить оператции с роутингом.
Практика (моя) показывает что по крайней мере мобильные операторы прекрасно tls-crypt ловят и блокируют.
У меня летом оно даже по tcp 443 ходить не хотело. Но это там весь датацентр был в зоне особого внимания. А внутри страны вроде и без tls-crypt работает.
no subject
Date: 2025-12-23 07:36 pm (UTC)nftиresolveconf, в этой части ничего не поменялось.no subject
Date: 2025-12-24 04:10 am (UTC)Поменялось. Раньше у тебя скрипты вызывались непосредственно execve, потому что openvpn это так делает, теперь там довольно развесистая прослойка sudo.
Может лучше того, от resolvconf отказаться?
И использовать какой-нибудь dnsmasq, который тоже работает не от рута, и переконфигурировать уже его на лету?
И еще объясни, а зачем шееелить конфигурацию nft при появлении/исчезновении vpn-интерфейса.
no subject
Date: 2025-12-24 10:28 am (UTC)1. Зачем? Это мне ничего не даёт —
nftвсё равно будет вызываться от рута.2. В Debian к связке
openvpn+resolvconfприлагается отличный скрипт, который получает отopenvpnконфигурацию DNS и передаёт её вresolvconf. Полный автомат, ничего самому не надо писать.>
dnsmasqя использую. Но как его переконфигурировать на лету автоматически? Кто передаст ему DNS отopenvpn?resolvconfпроdnsmasqзнает.> .
У меня firewall устроен так: по умолчанию input и forward запрещены, output разрешён. Для каждого появляющегося интерфейса input и forward надо разрешить со стандартным списком портов (на каждом хосте свой, хотя в целом списки похожи), плюс включить SNAT между интерфейсами.