OpenVPN client/ru

From DD-WRT Wiki

Jump to: navigation, search

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] Настройка

  1. Включаем переключатель Start OpenVPN Daemon
  2. Переключатель "Start Type" не трогаем либо переключаем в "WAN Up" - делаем с ним то, что кажется лучшим.
  3. Поля ""Certificate Revoke List"", ""DH PEM"", ""OpenVPN TLS Auth"" оставляем пустым.
  4. В поле ""CA Cert"" вставляем сертификат удостоверяющего центра в формате PEM. При загрузке маршрутизатора он будет записан в файл /tmp/openvpn/ca.crt.
  5. В поле ""Public Client Cert"" вставляем свой сертификат клиента. При загрузке маршрутизатора он будет записан в файл /tmp/openvpn/cert.pem.
  6. В поле ""Private Client Key"" вставляем свой секретный ключ. При загрузке маршрутизатора он будет записан в файл /tmp/openvpn/key.pem.
  7. В поле ""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-----