OpenWRT a výchozí brána přes OpenVPN

OpenWRT a výchozí brána přes OpenVPN
« kdy: 23. 11. 2020, 17:37:49 »
Dobrý den,
rád bych Vás požádal o navedení jak nastavit síť. Jde mi o nastavení lan aby veškerý provoz ven šel přes VPN (OpenVPN) a nikoliv přes WAN. Když se rozpojí připojení s OpenVPN serverem jde provoz přes WAN (Přes IP od ISP).

Pokud by vypadlo spojení mezi routerem kde je OpenWRT a VPS, kde je OpenVPN server tak aby nešlo připojení.

Nynější nastavení

/etc/config/firewall
Kód: [Vybrat]
config defaults
option syn_flood '1'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'REJECT'

config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'lan'

config zone
option name 'wan'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
option network 'wan wan6'

config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'

config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option src_ip 'fc00::/6'
option dest_ip 'fc00::/6'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-IPSec-ESP'
option src 'wan'
option dest 'lan'
option proto 'esp'
option target 'ACCEPT'

config rule
option name 'Allow-ISAKMP'
option src 'wan'
option dest 'lan'
option dest_port '500'
option proto 'udp'
option target 'ACCEPT'

config include
option path '/etc/firewall.user'

config redirect
option dest_port '80'
option src 'wan'
option name 'Admin'
option src_dport '80'
option target 'DNAT'
option dest 'lan'
option dest_ip '172.16.32.1'

config redirect
option dest_port '22'
option src 'wan'
option name 'SSH'
option src_dport '22'
option target 'DNAT'
option dest 'lan'
option dest_ip '172.16.32.1'

config include 'nodogsplash'
option type 'script'
option path '/usr/lib/nodogsplash/restart.sh'

config zone
option network 'vpn'
option input 'ACCEPT'
option name 'VPN'
option output 'ACCEPT'
option forward 'ACCEPT'
option masq '1'
option mtu_fix '1'

config forwarding
option dest 'VPN'
option src 'lan'
/etc/config/network
Kód: [Vybrat]
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config globals 'globals'
option ula_prefix 'fd65:7afa:1bd2::/48'

config interface 'lan'
option type 'bridge'
option ifname 'eth0.1'
option proto 'static'
option ipaddr '172.16.32.1'
option netmask '255.255.255.0'
option ip6assign '60'

config device 'lan_eth0_1_dev'
option name 'eth0.1'
option macaddr '98:da:c4:48:da:78'

config interface 'wan'
option ifname 'eth0.2'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.0.10'
option gateway '192.168.0.1'
list dns '10.8.0.1'

config device 'wan_eth0_2_dev'
option name 'eth0.2'
option macaddr '98:da:c4:48:da:79'

config interface 'wan6'
option ifname 'eth0.2'
option proto 'dhcpv6'

config switch
option name 'switch0'
option reset '1'
option enable_vlan '1'

config switch_vlan
option device 'switch0'
option vlan '1'
option ports '1 2 3 4 6t'

config switch_vlan
option device 'switch0'
option vlan '2'
option ports '0 6t'

config interface 'vpn'
option proto 'none'
option ifname 'tun0'
/etc/config/openvpn
Kód: [Vybrat]
config openvpn 'vpn'
option config '/etc/openvpn/vpn.ovpn'
option enabled '1'

V případě potřeby doplním potřebné informace.

Předem děkuji za navedení správným směrem.
« Poslední změna: 23. 11. 2020, 19:11:30 od Petr Krčmář »


Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #1 kdy: 23. 11. 2020, 19:18:14 »
Chybí tu to podstatné: soubor /etc/openvpn/vpn.ovpn. V něm je totiž nastaveno routování a podle něj se pak VPN chová. Nemáte na klientovi zapnutou volbu redirect-gateway def1?

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #2 kdy: 23. 11. 2020, 19:42:15 »
Chybí tu to podstatné: soubor /etc/openvpn/vpn.ovpn. V něm je totiž nastaveno routování a podle něj se pak VPN chová. Nemáte na klientovi zapnutou volbu redirect-gateway def1?

Dobrý den,
děkuji doplním

/etc/openvpn/vpn.ovpn
Kód: [Vybrat]
client
proto udp
explicit-exit-notify
remote vpn.cz.svetnanetu.cz 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_nYv8ar7BSzhYxjpk name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
...

stav nyní je když se odpojí (rozpadne spojení a již se nepřipojí) tak připojení zařízení jedou pak pod IP od ISP což není žádoucí a nechci to. Když by VPN tunel nebyl spojený tak ať klienti ztratí připojení do internetu.

Děkuji

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #3 kdy: 23. 11. 2020, 19:46:38 »
Problému rozumím. Ten konfigurák ale není celý a není jasné, jak je řešeno routování.

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #4 kdy: 23. 11. 2020, 19:52:28 »
Problému rozumím. Ten konfigurák ale není celý a není jasné, jak je řešeno routování.
celý ovpn soubor


Kód: [Vybrat]
client
proto udp
explicit-exit-notify
remote vpn.cz.svetnanetu.cz 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_nYv8ar7BSzhYxjpk name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIB1zCCAX2gAwIBAgIUOfUD4SxoSHX2U7Do+ud158UlGlYwCgYIKoZIzj0EAwIw
HjEcMBoGA1UEAwwTY25fazBLWjgxalhjOVA3dHlvbTAeFw0yMDA2MjAwOTA3Mzda
Fw0zMDA2MTgwOTA3MzdaMB4xHDAaBgNVBAMME2NuX2swS1o4MWpYYzlQN3R5b20w
WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARpabLM6casu71wOVLd02m9rcvlGIZU
p4MU7r8wndQZjX7g9KgcWKJ43c2jTWT9h+PdtSQ88mJpHdFTGZSNBIkSo4GYMIGV
MB0GA1UdDgQWBBStoegt3TKYRmG5Y8U0If3qSmh2OzBZBgNVHSMEUjBQgBStoegt
3TKYRmG5Y8U0If3qSmh2O6EipCAwHjEcMBoGA1UEAwwTY25fazBLWjgxalhjOVA3
dHlvbYIUOfUD4SxoSHX2U7Do+ud158UlGlYwDAYDVR0TBAUwAwEB/zALBgNVHQ8E
BAMCAQYwCgYIKoZIzj0EAwIDSAAwRQIgKJzBrn3XbSw6J20KE2Lei/HxDupC8zkW
VwU8YpU6eVECIQC0+dfZSmoxmSUcTHWw7NRGuknz+fnepKxjaPGQtMMHJg==
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIB5DCCAYmgAwIBAgIRANTX/ARIEW+NbGL7HyAqE/gwCgYIKoZIzj0EAwIwHjEc
MBoGA1UEAwwTY25fazBLWjgxalhjOVA3dHlvbTAeFw0yMDEwMDUxMzQ2MzJaFw0y
MzAxMDgxMzQ2MzJaMBsxGTAXBgNVBAMMEHN2ZXRuYW5ldHVjejIwMjAwWTATBgcq
hkjOPQIBBggqhkjOPQMBBwNCAASYxUG5oebDhcv3ukz/7yh29fPyKt/7v2iU+iCQ
mWykWBO7HubjOnjQmlT8R+XRRFTvCx7r7Xj0PqwqrN7ACqLIo4GqMIGnMAkGA1Ud
EwQCMAAwHQYDVR0OBBYEFFCFZcUAkYHXmkkP4hHdvnjLwmTUMFkGA1UdIwRSMFCA
FK2h6C3dMphGYbljxTQh/epKaHY7oSKkIDAeMRwwGgYDVQQDDBNjbl9rMEtaODFq
WGM5UDd0eW9tghQ59QPhLGhIdfZTsOj653XnxSUaVjATBgNVHSUEDDAKBggrBgEF
BQcDAjALBgNVHQ8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhAPIY4n6blAe7Xza3
TRBy1HY3girIWB3T/KpIhERGVcZ1AiEA5+6ik4OlMAZVSp9WWCUEJHgaFWahU1wq
1AEHYa0KZh0=
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgY4QhVeouu9Env2X/
gvunorsNgYtj2mxZXLIUuZi7C/ChRANCAASYxUG5oebDhcv3ukz/7yh29fPyKt/7
v2iU+iCQmWykWBO7HubjOnjQmlT8R+XRRFTvCx7r7Xj0PqwqrN7ACqLI
-----END PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
ae323a0c2aedd33565a6a8eea9434155
8e2eb2a7cccf955ea9369d602e8e7c36
839a44acf0cb0752309e9ff0bb3b1517
1ffd7e1eab2fdce1e86da11eb002ac62
bd8d6158d97eecacd39c6ceddc55f126
949b2f8992529b3ed36683f4d79bc28a
7e1026d2cabc1d208a7c29c0ab049776
48e3d09f0c06d9455e612f111be4d119
68169c3bfc1c056fcc780fadfdea039d
fc02bb2faad7b73341fdc423bb0e06ab
20ea928feba4e6062f9d1175b898448f
4b0ce8ad69615768bc8d93baf933c02b
d59f3d09e0f654ed3621d363065552e0
ee800cf6c56b39a1506ac0f79834a569
34db919ba76b9ddd6e7393d0baf20e20
ee2796b7182cbddec013ccbfbdd5e05e
-----END OpenVPN Static key V1-----
</tls-crypt>


Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #5 kdy: 23. 11. 2020, 19:59:57 »
Certifikáty a klíče jsme zrovna nepotřebovali vidět, ale to se holt přegeneruje. V tom případě chybí ještě zřejmě informace z druhé strany, protože se bude pushovat nastavení sítě ze serveru. Je třeba vidět, jak je tam nastavené routování a to v klientu evidentně není. V konfiguraci to může mít přímo klient nebo to může pushnout server, což bude tento případ.

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #6 kdy: 23. 11. 2020, 20:08:37 »
Certifikáty a klíče jsme zrovna nepotřebovali vidět, ale to se holt přegeneruje. V tom případě chybí ještě zřejmě informace z druhé strany, protože se bude pushovat nastavení sítě ze serveru. Je třeba vidět, jak je tam nastavené routování a to v klientu evidentně není. V konfiguraci to může mít přímo klient nebo to může pushnout server, což bude tento případ.

Server:
/etc/openvpn/server.conf

Kód: [Vybrat]
port 1194
proto udp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
#push "dhcp-option DNS 1.0.0.1"
#push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 10.8.0.1"
push "redirect-gateway def1"
push "redirect-gateway def1 bypass-dhcp"
duplicate-cn
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key 0
crl-verify crl.pem
ca ca.crt
cert server_nYv8ar7BSzhYxjpk.crt
key server_nYv8ar7BSzhYxjpk.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3
management 127.0.0.1 5555

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #7 kdy: 23. 11. 2020, 20:49:01 »
Tu ho máme, jak jsem čekal. Může za to řádek:

Kód: [Vybrat]
push "redirect-gateway def1"
Mimochodem je tam dvakrát za sebou, jeden z nich je možné smazat. Ve zkratce: def1 způsobí to, že se neodstraní výchozí brána a místo toho se přidají dvě specifičtější routy (0.0.0.0/1 a 128.0.0.0/1). Při výpadku se pak použije původní výchozí brána a spojení běží dál. Má to taky své nevýhody (zacyklení při výpadku fyzického rozhraní), ale je to obvykle to, co uživatel chce.

Vy ale tohle nechcete, chcete smazat výchozí bránu a vše hrnout za všech okolností do VPN. Když VPN není, tak není kam co posílat a spojení neexistuje. Řešení tedy spočívá v odstranění parametru def1 a znovunačtení konfigurace.

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #8 kdy: 24. 11. 2020, 16:09:11 »
Tu ho máme, jak jsem čekal. Může za to řádek:

Kód: [Vybrat]
push "redirect-gateway def1"
Mimochodem je tam dvakrát za sebou, jeden z nich je možné smazat. Ve zkratce: def1 způsobí to, že se neodstraní výchozí brána a místo toho se přidají dvě specifičtější routy (0.0.0.0/1 a 128.0.0.0/1). Při výpadku se pak použije původní výchozí brána a spojení běží dál. Má to taky své nevýhody (zacyklení při výpadku fyzického rozhraní), ale je to obvykle to, co uživatel chce.

Vy ale tohle nechcete, chcete smazat výchozí bránu a vše hrnout za všech okolností do VPN. Když VPN není, tak není kam co posílat a spojení neexistuje. Řešení tedy spočívá v odstranění parametru def1 a znovunačtení konfigurace.

Ovlivní ale všechny ostatní klienty. Rád bych to řešil konkrétně pouze na routeru, případně zde je takový návod jak hnát veškerý provoz přes tor (
Kód: [Vybrat]
https://doc.turris.cz/doc/cs/howto/tor).

Myslel jsem že bude možnost udělat mezi LAN a tun udělat tunel takže by topologie byla takováto.

lan <-> vpn <-> wan
nikoliv
lan <-> vpn/wan.

Děkuji případně za navedení

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #9 kdy: 24. 11. 2020, 17:41:53 »
To samozřejmě ovlivní celou síť za tím routerem, protože právě ten router zajišťuje routování do VPN.

Není mi ale jasné, čeho přesně se snažíte dosáhnout. Zkuste to celé popsat od začátku: jak se to má chovat?

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #10 kdy: 24. 11. 2020, 17:49:51 »
To samozřejmě ovlivní celou síť za tím routerem, protože právě ten router zajišťuje routování do VPN.

Není mi ale jasné, čeho přesně se snažíte dosáhnout. Zkuste to celé popsat od začátku: jak se to má chovat?

Router druhý - OpenWRT (LAN: 172.16.32.1, WAN: 192.168.0.10 (pevná)) , je připojený do prvního routeru (192.168.0.1), který zajištuje konektivitu (WAN - Anténa od Wi-Fi providera).

Na druhém routeru je WiFi pro hosty. Jak jsem již psal mám server s OpenVPN (veřejný vpn.cz.svetnanetu.cz), na který chci přesměrovat veškerý provoz z druhého routeru pro hosty, chci docílit toho že pokud se rozpojí spojení v VPN (Router OpenWRT - VPN) nechci aby pak jel přes ISP IP (Mám veřejnou IP a nechci na nějaký blocklist) Proto se snažím docílit toho že pokud nebude VPN spojení nepůjde internet na routeru pro hosty.

tedy
Router (OpenWRT) - VPN - Funkční internet
Router (OpenWRT) - Výpadek VPN - Nefunkční internet

Snad jsem to nějak popsal

Re:OpenWRT a výchozí brána přes OpenVPN
« Odpověď #11 kdy: 24. 11. 2020, 19:49:15 »
Tak si tu VPN sestavte až z toho routeru pro hosty. Pokud to není možné (protože to router neumí), tak si nastavte směrování na tom hlavním routeru tak, aby jen provoz z hostovského subnetu cpal do VPN. Ostatní sítě tím pak ovlivněny nebudou.