OpenVPN client/ru
From DD-WRT Wiki
Contents |
[edit] Введение
В DD-WRT в сборках с суффиксом -vpn включен демон openvpn. В GUI его настройки располагаются на странице "services" - "VPN", есть два раздела: "OpenVPN daemon" и "OpenVPN Client". В nvram им соответствую параметры, начинающиеся с "openvpn_" и "openvpncl_" соответственно.
Почему-то разработчики dd-wrt сделали так, что openvpn в режиме клиента создаёт маршрут по умолчанию через туннель: именно команды изменения маршрута помимо команд, разрешающих трафик через VPN, содержат скрипты route-down.sh и route-up.sh, указанные в командной строке запуска openvpn:
openvpn --config /tmp/openvpncl/openvpn.conf --route-up /tmp/openvpncl/route-up.sh --down /tmp/openvpncl/route-down.sh --daemon
Из-за этого, когда нужно просто связать две локальные сети или подключить дистанционного клиента к локальной сети, приходится мудрить. Причём типовые рекомендации заключаются в создании собственного "пользовательского" скрипта, который должен сформировать конфигурацию и запустить openvpn.
В этой статье описан способ сделать клиентское подключение средствами GUI-конфигуратора без дополнительных скриптов.
[edit] Условия
- Для организации клиентского подключения openvpn используются настройки "openvpn daemon"
- Чтобы на страничке статуса openvpn ("Status"-"OpenVPN") была информация, а также для управления демоном, используется локальный порт 5001/TCP (см. файлы /etc/openvpnlog.sh, /etc/openvpnstate.sh и /etc/openvpnstatus.sh в файловой системе маршрутизатора).
- Используется особенность dd-wrt, что в режиме openvpn-сервера конфиг openvpn не генерируется, как в случае с openvpn-клиентом, а в явном виде хранится в nvram.
- Подключаемся, используя сертификаты (сертификат CA, свой сертификат клиента и свой секретный ключ, все в формате PEM)
- Настраиваем синхронизацию часов маршрутизатора с мировым временем (часовой пояс не важен, хотя и удобен при анализе протокола работы).
[edit] Настройка
- Включаем переключатель Start OpenVPN Daemon
- Переключатель "Start Type" не трогаем либо переключаем в "WAN Up" - делаем с ним то, что кажется лучшим.
- Поля ""Certificate Revoke List"", ""DH PEM"", ""OpenVPN TLS Auth"" оставляем пустым.
- В поле ""CA Cert"" вставляем сертификат удостоверяющего центра в формате PEM. При загрузке маршрутизатора он будет записан в файл /tmp/openvpn/ca.crt.
- В поле ""Public Client Cert"" вставляем свой сертификат клиента. При загрузке маршрутизатора он будет записан в файл /tmp/openvpn/cert.pem.
- В поле ""Private Client Key"" вставляем свой секретный ключ. При загрузке маршрутизатора он будет записан в файл /tmp/openvpn/key.pem.
- В поле ""OpenVPN Config"" вставляем свой конфиг, в котором указаны упомянутые файлы и порт управления, например:
client dev tun proto udp remote domain.tld 65432 resolv-retry infinite nobind persist-key persist-tun tun-mtu 1500 tun-mtu-extra 32 mssfix 1450 ca /tmp/openvpn/ca.crt cert /tmp/openvpn/cert.pem key /tmp/openvpn/key.pem ns-cert-type server comp-lzo ping 10 ping-restart 34 tls-client tls-remote /C=RU/ST=Ural/L=Yekaterinburg/O=Vash Admin/CN=domain.tld/emailAddress=security@vashadmin.su pull status /tmp/openvpn/status.txt management 127.0.0.1 5001
Теперь нужно не забыть нажать ""Save"" и затем ""Apply Changes"". Если у маршрутизатора маленькая флешка, после перезапуска обязательно нужно проверить, что записалось всё нужное. Если нет - скорее всего не хватило места в nvram, его можно попробовать почистить , соединившись с маршрутизатором по SSH. Описывать процесс чистки не буду: если самостоятельно разобраться знаний не хватает, лучше не соваться :).
Если всё сделано правильно, на странице статуса будет видно, что соединение OpenVPN установилось.
--Grumbler 21:43, 10 March 2014 (CET)
[edit] P.S. Параметры openvpn_* в nvram.
""Для справки: параметры openvpn_* в nvram.""
openvpn_lzo=0 openvpn_mtu=1500 openvpn_dh= openvpn_client=-----BEGIN CERTIFICATE----- openvpn_proto=udp openvpn_enable=1 openvpn_config=client openvpn_crl= openvpn_mssfix=1450 openvpn_certtype=0 openvpn_tlsauth= openvpn_onwan=0 openvpn_key=-----BEGIN RSA PRIVATE KEY----- openvpn_extramtu=32 openvpn_remoteip=0.0.0.0 openvpn_ca=-----BEGIN CERTIFICATE-----