Я пытаюсь настроить новый маршрутизатор 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 не отправляет трафик с устройства Wi-Fi в VPN.
Я очень новичок в маршрутизации и не мог работать ни с одним из руководств по dd-wrt (все они предполагают, что вы используете другой тип конфигурации, который я не могу использовать). Поэтому мои вопросы состоят из двух частей:
Может ли кто-нибудь помочь мне в настройке iptables (или того, что отправляет трафик с сетевого устройства Wi-Fi) в режиме сценариев, чтобы я мог запустить сценарий iptables, а затем запустить OpenVPN на маршрутизаторе.
Как мне изменить это, чтобы он работал только с VAP (виртуальной точкой доступа) или только с определенными IP-адресами (чтобы только устройство с IP-адресом x.x.x.x, подключенное к AP, проходило через VPN).
Примечание. Обычно мне нравится иметь эти сценарии на моем компьютере, а затем я загружаю их по ssh на любой маршрутизатор dd-wrt, а затем запускаю их, чтобы открыть VPN-соединение.
Пройдя через Google и этот сайт, я пока что не очень помог.
Я в основном говорю, основываясь на своих планах перенести мою домашнюю установку 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
. Люди, желающие использовать ваше устройство в качестве маршрутизатора, столкнутся с чем-то вроде следующего.
Если ваша подсеть 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 предоставляется доступ почти ко всему, поэтому я реализовал настройку ОТКАЗАТЬ-> РАЗРЕШИТЬ, которая блокирует только определенные адреса, которые не указаны в меню, прежде чем принимать все остальное. Гостям разрешен доступ только к определенным ресурсам, поэтому они находятся в настройке РАЗРЕШИТЬ-> ОТКАЗАТЬ.
Часть, в которой я не уверен в 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-numbers
на pastebin или подобном, с удаленным публичным адресом? Это помогло бы мне лучше понять конкретную компоновку DD-WRT. Можете ли вы подтвердить IP-адрес в подсети OpenVPN, который получает удаленный клиент? Не могли бы вы также опубликовать таблицу маршрутизации вашего маршрутизатора, как показано по результатам route -n
? (Убедитесь, что сервер OpenVPN запущен, пока вы это делаете). Если вы удалите из него сетевые адреса, укажите, какова была цель диапазона (например, локальная подсеть, подсеть VPN, общедоступная).
Конечно, все это может быть спорным, если есть возможность определить этот доступ в веб-интерфейсе. Есть ли в веб-консоли вашего маршрутизатора возможность фильтрации пользователей в подсети OpenVPN?
Боюсь, я не совсем понимаю вторую часть вашего вопроса. Вы хотите, чтобы только определенные IP-адреса могли подключаться к устройству через OpenVPN? Вы хотите, чтобы эта служба в будущем была на сервере, отличном от вашего маршрутизатора DD-WRT?