В повседневной работе я пользуюсь десятками включённых VPN клиентов. Эти клиенты соединяются с разными серверами, а серверы имеют разные настройки. Так например у меня возникала ситуация когда нужный мне роут пробрасывался через TUN интерфейс который PUSH-ился с сервера. Если бы сервер использовал только я стоило бы перенастроить только сервер чтобы это исправить. Однако сервером пользуются и другие люди и там этот PUSH необходим. Сначала я руками переписывал роут и забывал до следующего переподключения. Но последнее время часто приходилось переподключаться и вечное переписывание роута стало раздражать. В документации к OpenVPN написано что в настройках с недавнего времени появился ключ который поможет клиенту отвергнуть то что ему предлагает сервер.
Continue reading OpenVPN как не принять предложение сервера о настройке интерфейсов
Tag: OpenVPN
OpenVPN: — PUSH тебе твой собственный ROUTE
К бессонной ночи привёло “молчание логов” OpenVPN сервера при невозможности прочесть файл.
Имеется OpenVPN сервер, к которому подключены VPN клиенты. За некоторыми клиентами находятся сети которые необходимо анонсировать другим клиентам OpenVPN и обеспечить маршрутизацию.
Для этого в OpenVPN предусмотрены четыре параметра находящиеся в двух разных файлах которые позволяют настроить роутинг в сети VPN клиента.
Файл /etc/openvpn/*.conf
push "route 192.168.33.0 255.255.255.0" route 192.168.33.0 255.255.255.0 client-config-dir ccd-vpn03
client-config-dir определяет каталог в котором будут находиться файлы в которых будут объявлены сети клиентов. Имена файлов должны совпадать с CommonName сертификата клиента за которым находятся сети объявленные в файле. Например если за клиентом с сертификатом у которого CN равен “vpn03.gw01.common-client2” находится сеть 192.168.33.0 255.255.255.0 то файл /etc/openvpn/ccd-vpn03/vpn03.gw01.common-client2
iroute 192.168.33.0 255.255.255.0
Continue reading OpenVPN: — PUSH тебе твой собственный ROUTE
Проверка GnuPG подписи OpenVPN
Как скачивать OpenVPN чтобы минимизировать риски получить поддельный инсталяционный пакет.
Нужно выполнить несколько шагов.
Проверить что открывшийся URL зашифрован TLS1.1 и выше и подписан правильной подписью.
Для этого нужно посмотреть сертификат. На момент публикации статьи сертификат для домена *.openvpn.net подписан Go Daddy Secure Certificate Authority – G2 действительным до 03/05/2016. Отпечаток SHA1:BD:4B:30:9E:65:DC:3F:7B:59:52:46:4A:1C:19:D6:BE:E4:98:5B:5A
$ echo | openssl s_client -tls1_2 -showcerts -connect openvpn.net:443 2>/dev/null | openssl x509 -fingerprint | grep 'BD:4B:30:9E:65:DC:3F:7B:59:52:46:4A:1C:19:D6:BE:E4:98:5B:5A'
Настройка OpenVPN на Windows
В этом описании будет рассмотрена настройка OpenVPN, как серверной части так и клиентской. Для OpenVPN роль клиента или сервера задаётся только конфигурационным файлом. Исполняемый модуль для обеих ролей один и тот же.
Загрузка и установка OpenVPN
Загрузите инсталятор с сайта openvpn.net (выбирайте свежую версию, сейчас это OpenVPN 2.3.5 — выпущенная 2014.10.28) и запустите его на компьютере который будет выступать сервером и произведите установку. Более ранние версии ставить не рекомендуется по причине наличия серьёзной уязвимости в пакете OpenSSL.
Произведите такю же установку на всех комьпютерах которые будут выступать в роли клиентов.
OpenVPN TLS key negotiation failed to occur within 60 seconds. TLS handshake failed
Сегодня клиент обратился с проблемой которая заключалась в том, что один из удалённых пользователей не может соединиться с OpenVPN сервером.
В журнале сервера с данного IP были такие ошибки:
Tue Nov 11 09:58:49 2014 xxx.xxx.xxx.xxx:49611 TLS: Initial packet from 176.108.233.33:49611, sid=aea2a5e5 bc9d76f6 Tue Nov 11 09:59:49 2014 xxx.xxx.xxx.xxx:49611 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) Tue Nov 11 09:59:49 2014 xxx.xxx.xxx.xxx:49611 TLS Error: TLS handshake failed
Документация по OpenVPN указывает на проблему соединения.
Это казалось абсурдным так как эта запись была в журнале сервера. И конечно пинги на сервер проходили. В журнале статуса openvpn-status.log (у вас может быть другой, смотрите конфиг опцию status) была запись в состоянии UNDEF
UNDEF,xxx.xxx.xxx.xxx:49611,84,108,Tue Nov 11 09:26:20 2014
После попытки перейти с UDP на TCP стало ясно, что проблема не в протоколе. Включение более детальных логов опцией verb 6 также не раскрыло глаза. И тут в tcpdump бросилось в глаза то что от клиента приходит всего один пакет, а сервер в ответ отвечает от 5-ю до 20-ю, а может и более пакетами. Чтобы проверить проходимость больших пакетов с клиента ping-анули сервер пакетами размером 16 килобайт. В ответ небыло получено ни одного ответа. Проблема была явно в связи о чём и говорила запись в логе. Клиенту осталось разобраться с провайдером.
Установка openvpn на Linux mint
Прежде всего уясните себе что машина с easy-rsa это машина которая только подписывает ключи. И по логике безопасности должна быть отдельной машиной. Не стоит хранить генератор ключей и в особенности приватный CA на самом VPN сервере.
1) ставим openvpn на VPN сервере
# apt-get install openvpn
2) ставим easy-rsa на станции подписей
# apt-get install easy-rsa
3) создаём каталог куда скопируем easy-rsa и там будем изменять настройки, создавать и подписывать сертификаты
# mkdir -p /root/sign-host/easy-rsa # cd /root/sign-host/easy-rsa # cp /usr/share/easy-rsa/* ./
Генерация RSA ключей для OpenVPN
Генерация RSA ключей для OpenVPN выполняется в несколько простых шагов.
Но прежде чем перейти к генерации ключей нам потребуется определиться с некоторыми моментами.
Нам нужны?
- название CA ключа
- название ключа сервера
- название ключей клиентов
- название организации (опционально)
- e-mail (опционально)
При генерации клиентских ключей важно понять, что ключ клиента может быть либо “персональным” либо “совместным” одним на нескольких клиентов и даже одним на всех клиентов.
Continue reading Генерация RSA ключей для OpenVPN