Files
obsidian/OpenVPN OpenWRT.md
T
2026-09-24 13:22:58 +05:00

127 lines
4.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
`apk update`
`apk add luci-app-openvpn openvpn-easy-rsa openvpn-openssl`
**Создание сертификатов.**
`easyrsa init-pki`
`easyrsa build-ca nopass`
`easyrsa build-server-full ovpn_server nopass`
`easyrsa build-client-full ovpn_client_1 nopass`
`easyrsa gen-dh`
В моем случае при выполнении команд сертификаты и ключи сохранились по указанным ниже путям:
build-ca - /root/pki/ca.crt, /root/pki/private/ca.key
build-server-full - /root/pki/issued/ovpn_server.crt, /root/pki/private/ovpn_server.key
build-client-full - /root/pki/issued/ovpn_client_1.crt, /root/pki/private/ovpn_client_1.key
gen-dh - /root/pki/dh.pem
**Подготовка конфигурации сервера.**
`nano /etc/config/openvpn`
```
config openvpn 'ovpn_home'
option proto 'udp'
option cipher 'AES-256-GCM'
option client_to_client '1'
option comp_lzo 'no'
option dev 'tun_ovpn'
option duplicate_cn '1'
option enabled '1'
option keepalive '10 120'
option mode 'server'
option mssfix '1450'
option persist_key '1'
option persist_tun '1'
option port '7500'
option remote_cert_tls 'client'
option reneg_sec '0'
option server '10.100.0.0 255.255.255.0'
option topology 'subnet'
option verb '3'
option ca '/root/pki/ca.crt'
option cert '/root/pki/issued/ovpn_server.crt'
option dh '/root/pki/dh.pem'
option key '/root/pki/private/ovpn_server.key'
list push 'comp-lzo no'
list push 'redirect-gateway def1'
list push 'route 192.168.1.0 255.255.255.0'
option log_append '/etc/openvpn/logs/openvpn.log'
```
Добавляем новый интерфейс tun_ovpn как неуправляемый
Запустить vpn сервер.
**Настройки клиента.**
```
client
dev tunrw
remote "ваш внешний ip" 7500
auth-nocache
cipher AES-256-GCM
comp-lzo no
connect-retry 5 60
keepalive 10 120
mssfix 1450
nobind
persist-key
persist-tun
proto udp
pull
remote-cert-tls server
reneg-sec 0
verb 3
# Uncomment below to force Internet traffic over VPN, instead of just accessing devices.
redirect-gateway def1
<ca></ca>
<cert></cert>
<key></key>
```
Добавляем в разделы содержимое файлов:
```
<ca></ca>
`cat /root/pki/ca.crt`
<cert></cert>
`cat /root/pki/issued/ovpn_client_1.crt`
<key></key>
`cat /root/pki/private/ovpn_client_1.key`
```
Создать зону межсетевого экрана (с именем vpn) для новой vpn0 сети. Это разрешит входящие и исходящие соединения, необходимые для VPN туннеля. Измените значение по умолчанию в соответствии с требованиями. Это (пока) не разрешит получить доступ к LAN или WAN сетям, но разрешит клиентам взаимодействовать с сервисами на маршрутизаторе и может разрешить соединения VPN клиентам, если это позволяет конфигурация вашего OpenVPN сервера:
```
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 зонами межсетевого экрана:
```
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
```
Вероятно, понадобится разрешить 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) через туннель, вы должны разрешить перенаправление трафика межу 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
```