OpenVPN и DD-WRT

OpenVPN и DD-WRT

Я пытаюсь настроить новый маршрутизатор dd-wrt для работы с OpenVpn. Однако OpenVpn, который мне нужен, имеет автоматически сгенерированный файл конфигурации. Это выглядит так:

# Automatically generated OpenVPN client config file
# Generated on Wed Sep 11 17:15:39 2013 by ip-10-164-12-159
# Note: this config file contains inline private keys
#       and therefore should be kept confidential!
# Note: this configuration is user-locked to the username below
# OVPN_ACCESS_SERVER_USERNAME=openvpn
# Define the profile name of this particular configuration file
# OVPN_ACCESS_SERVER_PROFILE=-redacted-
# OVPN_ACCESS_SERVER_CLI_PREF_ALLOW_WEB_IMPORT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_CONNECT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_XD_PROXY=True
# OVPN_ACCESS_SERVER_WSHOST=-redacted-
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_START
# -----BEGIN CERTIFICATE-----
# -redacted-
# -----END CERTIFICATE-----
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_STOP
# OVPN_ACCESS_SERVER_IS_OPENVPN_WEB_CA=0
# OVPN_ACCESS_SERVER_ORGANIZATION=OpenVPN Technologies, Inc.
setenv FORWARD_COMPATIBLE 1
client
proto udp
nobind
remote -redacted-
port 443
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
auth-user-pass
# NOTE: LZO commands are pushed by the Access Server at connect time.
# NOTE: The below line doesn't disable LZO.
comp-lzo no
verb 3
setenv PUSH_PEER_INFO

<ca>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
-redacted-
-----END PRIVATE KEY-----
</key>

key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key (Server Agent)
#
-----BEGIN OpenVPN Static key V1-----
-redacted-
-----END OpenVPN Static key V1-----
</tls-auth>

Если SSH в моем маршрутизаторе (это означает, что я включил sshd), я могу использовать эту конфигурацию для подключения к серверу OpenVpn. Если я посмотрю на страницу управления доступом к серверу VPN, то там будет видно, что я успешно подключился. Однако я считаю, что таблица маршрутизации dd-wrt не отправляет трафик с устройства wifi на VPN.

Я совсем новичок в маршрутизации и не смог поработать ни с одним из руководств по dd-wrt (все они предполагают, что вы используете другой тип конфигурации, который я не могу использовать). Поэтому мой вопрос состоит из двух частей:

  1. Может ли кто-нибудь помочь мне настроить iptables (или что-то еще, отправляющее трафик с сетевого устройства Wi-Fi) в скриптовой форме, чтобы я мог запустить скрипт iptables, а затем запустить OpenVPN на маршрутизаторе.

  2. Как мне изменить это так, чтобы оно работало только на VAP (виртуальной точке доступа) или только с определенными IP-адресами (чтобы только устройство с IP-адресом xxxx, подключенное к точке доступа, проходило через VPN)?

Примечание: Обычно я храню эти скрипты на своем компьютере, а затем подключаю их по SSH к любому маршрутизатору DD-WRT, который есть поблизости, а затем запускаю их, чтобы открыть VPN-соединение.

Поиск в Google и на этом сайте пока не сильно помог мне.

решение1

Я в основном говорю, основываясь на своих планах перенести свою домашнюю настройку OpenVPN на OpenWRT. В настоящее время она реализована на Fedora18, но я хотел бы использовать тестовую машину для других целей. Я бы предположил, что DD-WRT будет похожа, но могут быть некоторые неточности из-за трудностей реализации. Надеюсь, кто-то с большим опытом работы с DD-WRT сможет меня поддержать и сгладить любые неровности.

Директива dev tunозначает, что вы используете отдельную подсеть, обычно устанавливаемую с помощью директивы server(я предполагаю, что эта часть обрабатывается на странице управления VPN). Например, server 10.0.0.0 255.255.255.0, будет означать, что вашим клиентам будет предоставлен адрес на виртуальном адаптере их клиента в этом диапазоне.

Если это устройство — ваш интернет-маршрутизатор, то оно используется как шлюз по умолчанию для вашей сети. Если на вашем беспроводном устройстве не установлен статический маршрут для заданной сети, оно запрашивает шлюз по умолчанию. Я подозреваю, что дело в том, что ваши правила iptables не настроены на поиск и прием трафика из вашей VPN-подсети на основе входного интерфейса

Вы можете просмотреть конфигурацию iptables с помощью iptables -nvL --line-numbers. Люди, желающие использовать ваше устройство в качестве маршрутизатора, столкнутся с чем-то вроде следующего.

  1. Принимать установленные соединения.
  2. Принимайте подключения к локальным адресам из Интернета в соответствии с любыми установленными вами правилами переадресации портов.
  3. Принимать трафик из локальной подсети.
  4. Отклонить/сбросить все оставшиеся попытки, пересекающие цепочку правил.

Если ваша подсеть OpenVPN не упомянута на этапе №3, то она перейдет на этап №4 и будет отключена.

Эти процедуры аккуратно организованы в цепочки правил на основе задач. Я планирую определить цепочку для моих подсетей OpenVPN в начале "zone_lan_forward", цепочки правил, которая обрабатывает локальные соединения. Это выглядит примерно так:

iptables -N zone_lan_vpn

iptables -I zone_lan_forward -i tun+ -j zone_lan_vpn

Что вы будете делать дальше, зависит от того, какие ограничения вы хотите применить к этим клиентам. У меня есть три разных экземпляра OpenVPN (один административный и два уровня гостевого доступа), поэтому я разделил это немного дальше.

Пользователям административной подсети VPN предоставлен доступ почти ко всему, поэтому я реализовал настройку DENY->ALLOW, которая запрещает только определенные адреса, которые не включены в меню, прежде чем разрешить все остальное. Гостям разрешен доступ только к определенным ресурсам, поэтому они находятся в настройке ALLOW->DENY.

Часть, в которой я не уверен в DD-WRT, это как настроить это так, чтобы это происходило автоматически при загрузке. В OpenWRT правила брандмауэра генерируются на основе скриптов (в которые не следует вмешиваться) в /lib/firewall. Файл конфигурации, /etc/config/firewall, содержит следующие строки:

config 'include'

option 'path' '/etc/firewall.user'

Файл /etc/firewall.user, определенный выше, считывается как скрипт BASH всякий раз, когда правила брандмауэра перезагружаются, чтобы разрешить пользовательские настройки. Я не знаком конкретно с DD-WRT, поэтому не уверен, используется ли тот же метод настройки брандмауэра.

Если ваши правила брандмауэра установлены по умолчанию для DD-WRT, не могли бы вы опубликовать вывод на iptables -nvL --line-numberspastebin или аналогичном ресурсе с отредактированным публичным адресом? Это помогло бы мне лучше понять конкретную схему DD-WRT. Можете ли вы подтвердить IP-адрес в подсети OpenVPN, который получает удаленный клиент? Не могли бы вы также опубликовать таблицу маршрутизации вашего маршрутизатора, как показано в результатах route -n? (Убедитесь, что сервер OpenVPN работает, пока вы это делаете). Если вы отредактируете сетевые адреса из этого, пожалуйста, укажите, какова была цель диапазона (например, локальная подсеть, подсеть VPN, публичная).

Конечно, все это может быть спорным, если есть возможность определить этот доступ в веб-интерфейсе. Есть ли возможность в веб-консоли вашего маршрутизатора фильтровать пользователей в подсети OpenVPN?

Боюсь, я не совсем понял вторую часть вашего вопроса. Вы хотите, чтобы только определенные IP-адреса могли подключаться к устройству через OpenVPN? Вы хотите, чтобы эта служба в будущем находилась на сервере, отличном от вашего маршрутизатора DD-WRT?

Связанный контент