Настройка сервера и клиента OpenVPN для OpenWrt

Вопрос или проблема

У меня роутер 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 или другие проблемы с доступом, убедитесь, что:

  1. Порты проброшены через ваш интернет-провайдер.
  2. На стороне сервера OpenVPN работает корректно, и в этой же локальной сети можно пинговать IP-адрес вашего OpenWRT.

Проверив указанные шаги и убедившись, что все параметры правильно настроены, вы сможете успешно настроить соединение между вашим OpenVPN сервером и клиентом.

Заключение

Настройка OpenVPN на OpenWRT может требовать внимательности к деталям, но, следуя шагам, описанным выше, вы сможете обеспечить безопасный доступ к вашему локальному сетевому окружению через интернет. Убедитесь, что вы регулярно обновляете свои сертификаты и соблюдаете правила безопасности.

Оцените материал
Добавить комментарий

Капча загружается...