Вопрос или проблема
У меня роутер OpenWRT с WAN(eth1) и LAN(eth0) интерфейсом.
Я хотел установить сервер openVPN на этом роутере, чтобы получить доступ с WAN стороны к LAN стороне.
Мой LAN(eth0) имеет настроенный DHCP сервер и статический IP адрес 172.20.51.61/24. Когда я подключаю любой ПК к LAN(eth0), он получает IP адрес в диапазоне от 172.20.51.100/24 до 172.20.51.150/24.
Я установил openvpn easy rsa и другие необходимые утилиты, а также сгенерировал ключи для клиента и сервера. Я скопировал эти ключи и на клиент.
Что бы я хотел, так это очень базовые шаги и конфигурацию, чтобы приобрести уверенность и установить соединение от клиента к серверу.
Блоги на основе сети упоминают так много лишней информации… новичкам в сетевых технологиях становится трудно следовать.
Редактировать: файл /etc/easy-rsa/vars имеет следующее содержание.
export EASY_RSA="/etc/easy-rsa"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`/usr/sbin/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
et PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="IN"
export KEY_PROVINCE="MH"
export KEY_CITY="Pune"
export KEY_ORG="My Org"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"
# PKCS11 Умная Карта
# export PKCS11_MODULE_PATH="/usr/lib/changeme.so"
# export PKCS11_PIN=1234
# Если вы хотите подписать все ключи с одинаковым Общим Именем,
# раскомментируйте экспорт KEY_CN ниже
# Вам также нужно убедиться, что ваша конфигурация OpenVPN
# содержит параметр duplicate-cn
# export KEY_CN="CommonName"
Редактировать 2: Я назначил WAN статический IP 192.168.18.100/24
, к которому клиент VPN с IP 192.168.18.101/24
будет пытаться получить доступ.
Конфигурация сервера:
package openvpn
config 'openvpn' 'samplevpnconfig'
option 'enable' '1'
option 'port' '1194'
option 'proto' 'udp'
option 'dev' 'tun0'
option 'client_to_client' '1'
option 'keepalive' '10 120'
option 'comp_lzo' '1'
option 'persist_key' '1'
option 'persist_tun' '1'
option 'verb' '3'
option 'mute' '20'
option 'ifconfig_pool_persist' '/tmp/ipp.txt'
option 'status' '/tmp/openvpn-status.log'
option 'ca' '/etc/openvpn/ca.crt'
option 'cert' '/etc/openvpn/server.crt'
option 'key' '/etc/openvpn/server.key'
option 'dh' '/etc/openvpn/dh1024.pem'
#это должно быть в совершенно другой подсети, чем ваш LAN
option 'server' '192.168.18.100 255.255.255.0'
list 'push' 'route 172.20.51.61 255.255.255.0' #это должно СОВПАДАТЬ с вашей текущей информацией о LAN
list 'push' 'dhcp-option DNS 172.20.51.1' #это должно СОВПАДАТЬ с вашей текущей информацией о LAN
list 'push' 'dhcp-option DOMAIN 172.20.51.1' #это должно СОВПАДАТЬ с вашей текущей информацией о LAN
Где 172.20.51.61 – это статический IP адрес LAN (eth0). Честно говоря, у меня нет представления, что означают эти неочевидные параметры.
Конфигурация клиента на клиентской машине /etc/openvpn/client.conf
client
proto udp
dev tun0
remote 192.168.18.100 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
comp-lzo
ca /etc/openvpn/ca.crt
cert /etc/openvpn/myclient.crt
key /etc/openvpn/myclient.key
Когда я пытаюсь выполнить следующую команду: #openvpn client.conf
Я получаю ошибку TLS: (проверьте своё сетевое соединение)
и tcpdump на сервере показывает:
13:57:19.026056 IP 192.168.18.101.34212 > 192.168.18.100.openvpn: UDP, длина 14
13:57:19.026147 IP 192.168.18.100 > 192.168.18.101: ICMP 192.168.18.100 udp port openvpn недоступен, len0
Но соединение выглядит корректным (ping, tcpdump показывает поступающие пакеты)
Во-первых, я никогда не рекомендую хранить закрытый ключ SSL CA на устройстве, напрямую подключенном к WAN. Это небезопасно.
В OpenWRT конфигурация для OpenVPN находится в /etc/config/openvpn – имена опций почти идентичны оригинальной конфигурации OpenVPN, за исключением того, что в OpenWRT дефисы (-) должны быть заменены на нижние подчеркивания (_).
Следуйте этому руководству. Удалите ifconfig_pool_persist, если вам не нужны статические адреса, или используйте опцию ccd для этого (более надежно) с /etc/openvpn/ccd. Замените IP подсеть и маршруты на свои собственные. Добавьте цифру в конец имени интерфейса, чтобы избежать проблем с конфигурацией брандмауэра. Я также рекомендую использовать интерфейс tap (более гибкий), а не tun, но это на ваш выбор. Добавьте tls_auth для лучшей защиты от атак DoS, в руководстве OpenVPN есть пример, как сгенерировать ключ (ищите –genkey).
Чтобы включить автозапуск службы, используйте /etc/init.d/openvpn enable
.
Когда у вас будет работающий OpenVPN, настройте брандмауэр.
Ответ или решение
Настройка OpenVPN-сервера и клиента на OpenWRT
Настройка OpenVPN на маршрутизаторе OpenWRT — это отличное решение для безопасного удаленного доступа к вашему локальному сетевому окружению. В этом руководстве мы шаг за шагом пройдем процесс установки и конфигурации OpenVPN, основываясь на предоставленных вами параметрах.
Шаг 1: Установка OpenVPN
Если вы еще не установили OpenVPN на устройстве OpenWRT, выполните следующие команды:
opkg update
opkg install openvpn-openssl openvpn-easy-rsa
Шаг 2: Настройка Easy-RSA
Поскольку вы уже сгенерировали ключи, убедитесь, что ваша структура каталогов выглядит следующим образом:
/etc/easy-rsa/keys/
– содержит все ваши сгенерированные сертификаты.- Убедитесь, что файл
/etc/easy-rsa/vars
правильно настроен, как вы указали в вопросе.
Шаг 3: Конфигурация сервера OpenVPN
Ваша конфигурация сервера OpenVPN выглядит почти правильно, но я внесу некоторые рекомендации для улучшения. Откройте файл конфигурации:
vi /etc/config/openvpn
Добавьте или измените следующую конфигурацию:
config openvpn 'samplevpnconfig'
option 'enable' '1'
option 'port' '1194'
option 'proto' 'udp'
option 'dev' 'tun0'
option 'client_to_client' '1'
option 'keepalive' '10 120'
option 'comp_lzo' '1'
option 'persist_key' '1'
option 'persist_tun' '1'
option 'verb' '3'
option 'mute' '20'
option 'ca' '/etc/openvpn/ca.crt'
option 'cert' '/etc/openvpn/server.crt'
option 'key' '/etc/openvpn/server.key'
option 'dh' '/etc/openvpn/dh1024.pem'
# Используйте подсеть, отличный от вашей локальной сети
option 'server' '192.168.18.0 255.255.255.0'
list 'push' 'route 172.20.51.0 255.255.255.0' # Убедитесь, что это соответствует вашей локальной сети
list 'push' 'dhcp-option DNS 172.20.51.1' # ДНС вашего маршрутизатора
list 'push' 'dhcp-option DOMAIN local' # Локальный домен
Шаг 4: Настройка клиента OpenVPN
На стороне клиента проверьте ваш файл конфигурации:
client
proto udp
dev tun0
remote 192.168.18.100 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
comp-lzo
ca /etc/openvpn/ca.crt
cert /etc/openvpn/myclient.crt
key /etc/openvpn/myclient.key
Убедитесь, что пути к сертификатам правильно указаны и соответствуют тому, что вы скопировали на клиентскую машину.
Шаг 5: Настройка брандмауэра OpenWRT
Настройка брандмауэра — критически важный шаг, чтобы ваш OpenVPN сервер мог обрабатывать подключения. Используйте команду для редактирования конфигурации брандмауэра:
vi /etc/config/firewall
Добавьте следующие правила:
config rule
option src 'wan'
option dest 'lan'
option name 'Allow-OpenVPN-Inbound'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'
Шаг 6: Включение OpenVPN
Для автоматического запуска OpenVPN сервера при загрузке маршрутизатора, выполните команду:
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
Шаг 7: Проверка соединения
Попробуйте подключиться к OpenVPN с клиента с помощью команды:
openvpn --config /etc/openvpn/client.conf
Если вы получаете ошибку TLS или другие проблемы с доступом, убедитесь, что:
- Порты проброшены через ваш интернет-провайдер.
- На стороне сервера OpenVPN работает корректно, и в этой же локальной сети можно пинговать IP-адрес вашего OpenWRT.
Проверив указанные шаги и убедившись, что все параметры правильно настроены, вы сможете успешно настроить соединение между вашим OpenVPN сервером и клиентом.
Заключение
Настройка OpenVPN на OpenWRT может требовать внимательности к деталям, но, следуя шагам, описанным выше, вы сможете обеспечить безопасный доступ к вашему локальному сетевому окружению через интернет. Убедитесь, что вы регулярно обновляете свои сертификаты и соблюдаете правила безопасности.