Устанавливаем:
PHP код:
opkg update
opkg install openvpn openvpn-easy-rsa
Переходим в папку /etc/easy-rsa для создания ключей:
PHP код:
cd /etc/easy-rsa
Очищаем:
Создаём сертификат, на все вопросы отвечайте нажатием Enter:
Файл Диффи-Хеллмана:
Ключи для сервера, надо будет несколько раз нажать
Enter и два раза
y:
PHP код:
build-key-server server
Ключи для клиента:
PHP код:
build-key client1
Для каждого клиента надо создавать свои ключи. Поэтому в зависимости от количества планируемых клиентов создайте необходимое число ключей.
Для второго клиента:
PHP код:
build-key client2
И так далее… Если в дальнейшем появятся ещё клиенты, то просто выполните эту команду.
Если что-то нажали не так, то сделайте clean-all и создайте ключи заново.
TLS-ключ:
PHP код:
openvpn --genkey --secret /etc/openvpn/ta.key
PHP код:
cd /etc/easy-rsa/keys
И копируем ключи для сервера в папку
/etc/openvpn/
PHP код:
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn/
Сохраняем дефолтный конфиг openvpn:
PHP код:
mv /etc/config/openvpn /etc/config/openvpn.bak
Создаём свой:
PHP код:
nano /etc/config/openvpn
PHP код:
package openvpn
config openvpn custom_config
# Set to 1 to enable this instance:
option enable 1
# Include OpenVPN configuration
option config /etc/openvpn/server.conf
Переходим в папку
/etc/openvpn
Конфиг сервера
server.conf
PHP код:
nano /etc/openvpn/server.conf
Вставляем:
PHP код:
port 1194
proto udp
dev tun
topology subnet
server 10.25.0.0 255.255.255.0
keepalive 10 30
comp-lzo
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
tls-auth /etc/openvpn/ta.key 0
log-append /var/log/openvpn.log
#status /var/log/openvpn.status
#client-to-client
verb 3
Сервер OpenVPN получит адрес 10.25.0.1, а клиенты будут получать адреса 10.25.0.2 и т.д.
Команды и параметры.
Конфиг файрвола:
PHP код:
nano /etc/config/firewall
после опции:
PHP код:
config include
option path /etc/firewall.user
Добавим правило:
PHP код:
config 'rule'
option 'target' 'ACCEPT'
option 'name' 'VPN'
option 'src' 'wan'
option 'proto' 'udp'
option 'dest_port' '1194'
Получится вот так:
PHP код:
...
# include a file with users custom iptables rules
config include
option path /etc/firewall.user
config 'rule'
option 'target' 'ACCEPT'
option 'name' 'VPN'
option 'src' 'wan'
option 'proto' 'udp'
option 'dest_port' '1194'
...
Сохраняем.
Открываем файл /etc/firewall.user
PHP код:
nano /etc/firewall.user
Заполняем:
PHP код:
iptables -t nat -A prerouting_wan -p udp --dport 1194 -j ACCEPT
iptables -A input_wan -p udp --dport 1194 -j ACCEPT
iptables -I INPUT -i tun+ -j ACCEPT
iptables -I FORWARD -i tun+ -j ACCEPT
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.25.0.0/24 -o br-lan -j MASQUERADE
Где br-lan — интерфей смотрящий в интернет. Проверить можно командой ifconfig
Запустим сервер:
PHP код:
/etc/init.d/openvpn restart
Ничего не должно отображаться.
Смотрим лог:
PHP код:
tail -f /var/log/openvpn.log
В автозагрузку:
PHP код:
/etc/init.d/openvpn enable
Настройка клиентов для различных ОС описана здесь.