OpenVPN
Установка OpenVPN пакетов
opkg install openvpn-easy-rsa openvpn-openssl
Опционально, для поддержки настройки OpenVPN в web интерфейсе роутера нужно установить дополнительный пакет
opkg install luci-app-openvpn
Разворачивание CA, создание ключей/сертификатов
Действия аналогичны пункту по настройке CA и созданию сертификатов для CentOS, за исключением того что положение CA жестко задано в скриптах как /etc/easy-rsa/.
Там находится файл конфигурации openssl - openssl-1.0.0.cnf и файл с содержащий параметры по конфигурации CA - vars.
Определяем параметры по умолчанию в файле vars:
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Kamchatka Krai"
export KEY_CITY="Svetlyy"
export KEY_ORG="Granit"
export KEY_EMAIL="Direhtor@RogaKopita.net""
export KEY_OU="Left kopito"
Загружаем переменные определенные из vars в окружение:
source ./vars
Создаем удостоверяющий центр CA:
./build-ca
Создание ключей для сервера и клиентов
Сервер
Генерируем и подписываем ключ сервера:
./build-key-server VPN_SRV_KEY
При этом отвечаем утвердительно на вопрос о подписи ключа и добавления его в базу.
Создаем ключ Диффи-Хеллмана:
./build-dh
Эта операция потребует некоторого времени.
openvpn --genkey --secret keys/ta.key
Клиенты
Генерируем и подписываем ключ(и) клиента(ов):
source ./vars
./build-key CLIENT_NAME
При этом отвечаем утвердительно на вопрос о подписи ключа и добавления его в базу.
Настройка сетевого интерфейса на OpenWrt
Создаем сетевой интерфейс для OpenVPN (vpn0):
uci set network.vpn0=interface
uci set network.vpn0.ifname=tun0
uci set network.vpn0.proto=none
uci set network.vpn0.auto=1
Разрешаем входящие соединения на порт 1194 который будет слушать сервис OpenVPN:
uci set firewall.Allow_OpenVPN_Inbound=rule
uci set firewall.Allow_OpenVPN_Inbound.target=ACCEPT
uci set firewall.Allow_OpenVPN_Inbound.src=*
uci set firewall.Allow_OpenVPN_Inbound.proto=udp
uci set firewall.Allow_OpenVPN_Inbound.dest_port=1194
Создаем в файерволе роутера зону VPN. В ней разрешаем входящие и исходящие соединения , но доступ к сегментам LAN и WAN все еще запрещен. Разрешена только комуникация VPN клиентов с сервисами на роутере, а также между собой:
uci set firewall.vpn=zone
uci set firewall.vpn.name=vpn
uci set firewall.vpn.network=vpn0
uci set firewall.vpn.input=ACCEPT
uci set firewall.vpn.forward=REJECT
uci set firewall.vpn.output=ACCEPT
uci set firewall.vpn.masq=1
(Опционально) Если VPN клиентам необходимо подключаться к компьютерам локальной сети LAN, то нужно разрешит перенаправление из зоны VPN в зону LAN:
uci set firewall.vpn_forwarding_lan_in=forwarding
uci set firewall.vpn_forwarding_lan_in.src=vpn
uci set firewall.vpn_forwarding_lan_in.dest=lan
Если же компьютерам локальной сети необходимо подключатся к килентам VPN, то создаем симметричное правило.
uci set firewall.vpn_forwarding_lan_out=forwarding
uci set firewall.vpn_forwarding_lan_out.src=lan
uci set firewall.vpn_forwarding_lan_out.dest=vpn
(Опционально) Если VPN клиентам необходимо подключаться к компьютерам сети WAN (internet), то нужно разрешит перенаправление из зоны VPN в зону WAN:
uci set firewall.vpn_forwarding_wan=forwarding
uci set firewall.vpn_forwarding_wan.src=vpn
uci set firewall.vpn_forwarding_wan.dest=wan
Сохраняем изменения:
uci commit network
/etc/init.d/network reload
uci commit firewall
/etc/init.d/firewall reload
Настройка OpenVPN сервиса
Копируем ключи в директорию OpenVPN:
mkdir /etc/openvpn/keys
cd /etc/easy-rsa/keys
cp VPN_SRV_KEY.* ca.crt dh2048.pem ta.key /etc/openvpn/keys/
Содаем конфигурацию для OpenVPN сервиса
echo > /etc/config/openvpn # clear the openvpn uci config
uci set openvpn.myvpn=openvpn
uci set openvpn.myvpn.enabled=1
uci set openvpn.myvpn.verb=3
uci set openvpn.myvpn.port=1194
uci set openvpn.myvpn.proto=udp
uci set openvpn.myvpn.dev=tun
uci set openvpn.myvpn.server='10.8.0.0 255.255.255.0'
uci set openvpn.myvpn.keepalive='10 120'
uci set openvpn.myvpn.ca=/etc/openvpn/keys/ca.crt
uci set openvpn.myvpn.cert=/etc/openvpn/keys/my-server.crt
uci set openvpn.myvpn.key=/etc/openvpn/keys/my-server.key
uci set openvpn.myvpn.dh=/etc/openvpn/keys/dh2048.pem
uci set openvpn.myvpn.ifconfig_pool_persist /etc/openvpn/ipp.txt
uci set openvpn.myvpn.tls_auth='/etc/openvpn/keys/ta.key 0'
uci set openvpn.myvpn.client_to_client=1
uci set openvpn.myvpn.cipher=AES-256-CBC
uci set openvpn.myvpn.compress=lz4-v2
uci add_list openvpn.myvpn.push='compress lz4-v2'
Сообщаем OpenVPN клиентам что мы можем быть шлюзом
uci add_list openvpn.myvpn.push='redirect-gateway def1 bypass-dhcp'
Указываем DNS сервера
uci add_list openvpn.myvpn.push='dhcp-option DNS 8.8.8.8'
Комитим изменения uci commit openvpn
Активируем и запускаем сервис /etc/init.d/openvpn enable /etc/init.d/openvpn start