2 instance OpenVPN na Turris 1.x

Zdravím. Mohl by mi prosím někdo poskytnout stručný návod, jak rozchodit dvě OpenVPN instance na jednou? Potřeboval bych jednu na UDP a druhou na TCP. Nějak jsem nenašel, jak rozlišit konfigurační soubory.

Vytvorit dve a vice vpn lze pres LUCI a nebo pres prikazovou radku. V ramci Forisu lze de facto resit jen jednu vpnku.

V “/etc/config/openvpn” je asi to co hledas. V podstate zkopirujes stavajici blok a das ho na konec (zmenis mu jmeno a zmenis hodnoty pro polozky protokol a device. Ulozis. A pak v Luci by si mel videt dva zaznamy. Se kterejma uz v luci muzes dal pracovat jak je libo. Ve forisu tento druhy config nejspis neuvidis

Jelikoz pri vytvoreni vpnky pres Foris se dela jeste par veci na pozadi (pre-post/routing atp) nevim jestli to bude fungovat samo a nebo bude potreba upravit jeste sekci “traffic rules” (kde by si mel videt par pravidel vazajici se k te vpnce/udp a melo by stacit udelat kopii a zmenit na tcp).

https://doc.turris.cz/doc/cs/howto/openvpn

To je přesně, co jsem potřeboval vědět. Tu VPN, co mám jsem rozchodil přes příkazový řádek a WinSCP. Takže už jen upravit config. Jen v LuCi jsem si nějak nevšiml, kde by se dala nastavovat VPN, asi myslíte rozhraní? A předpokládám, že je ještě třeba spustit při startu 2x openvpn službu?

Nedoslo mi ze, v zakladu v Luci neni videt openvpn menu, to se da doinstalovat pres Luci>Software. (balicek luci-app-openvpn). Kde se da sluzba(y) zakazat a start/stopnout.

Tak teď už jsem z toho úplně jelen…
Původní konfigurace byla jen jeden VPN (UDP, veškerý traffic přes VPN) to fungovalo skvěle. Jenomže nevím, jak budou fungovat provideři např. v Japonsku, proto jsem chtěl rozběhnout dva VPN.
VPN - rozhraní tun0 UDP
VPN1 - rozhraní tun1 TCP

Obě VPN jsou ve stejné zóně, jako LAN. Forwarding do WAN povolen.

Nicméně nyní se sice připojí klient s konfigurací UDP i TCP, ale při UDP variantě se nikam nedostanu, ani subnet na turrise ani do WAN.

Určitě mám chybu v configu, mohli by jste se prosím na to podívat?

openvpn:

config openvpn ‘turris_server_udp’
option enabled ‘1’
option dev ‘tun0’
option proto ‘udp’
option port ‘1194’
option keepalive ‘10 1200’
option ca ‘/etc/easy-rsa/keys/ca.crt’
option cert ‘/etc/easy-rsa/keys/server.crt’
option key ‘/etc/easy-rsa/keys/server.key’
option dh ‘/etc/openvpn/dh2048.pem’
option server ‘192.168.100.0 255.255.255.0’
’ option remote-cert-tls ‘server’
list push ‘redirect-gateway def1’
list push ‘dhcp-option DNS 8.8.8.8’
’ option comp-lzo ‘yes’
option verb ‘3’
option topology ‘subnet’
option ifconfig_pool_persist ‘/tmp/ipp.txt’
option persist_key ‘1’
option persist_tun ‘1’
option status ‘/tmp/openvpn-status.log’

config openvpn ‘turris_server_tcp’
option enabled ‘1’
option dev ‘tun1’
option proto ‘tcp’
option port ‘1194’
option keepalive ‘10 1200’
option ca ‘/etc/easy-rsa/keys/ca.crt’
option cert ‘/etc/easy-rsa/keys/server.crt’
option key ‘/etc/easy-rsa/keys/server.key’
option dh ‘/etc/openvpn/dh2048.pem’
option server ‘192.168.100.0 255.255.255.0’
’ option remote-cert-tls ‘server’
list push ‘redirect-gateway def1’
list push ‘dhcp-option DNS 8.8.8.8’
’ option comp-lzo ‘yes’
option verb ‘3’
option topology ‘subnet’
option ifconfig_pool_persist ‘/tmp/ipp.txt’
option persist_key ‘1’
option persist_tun ‘1’
option status ‘/tmp/openvpn-status.log’

network:

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 ‘fdc9:4b83:50e9::/48’

config interface ‘lan’
option ifname ‘eth0 eth1’
option force_link ‘1’
option type ‘bridge’
option proto ‘static’
option netmask ‘255.255.255.0’
option ip6assign ‘60’
option ipaddr ‘192.168.1.1’

config interface ‘wan’
option ifname ‘eth2’
option proto ‘dhcp’
option peerdns ‘0’
option dns ‘217.31.204.130 193.29.206.206’

config interface ‘wan6’
option ifname ‘@wan
option proto ‘none’

config switch
option name ‘switch0’
option reset ‘1’
option enable_vlan ‘1’

config switch_vlan
option device ‘switch0’
option vlan ‘1’
option ports '0 1 2 3 4 ’

config switch_vlan
option device ‘switch0’
option vlan ‘2’
option ports ‘5 6’

config interface ‘guest_turris’
option enabled ‘0’
option type ‘bridge’
option ifname ‘guest_turris_0’
option proto ‘static’
option ipaddr ‘10.111.222.1’
option netmask ‘255.255.255.0’
option bridge_empty ‘1’

config interface ‘vpn’
option ifname ‘tun0’
option proto ‘static’
option ipaddr ‘192.168.100.1’
option netmask ‘255.255.255.0’

config interface ‘vpn1’
option ifname ‘tun1’
option proto ‘static’
option ipaddr ‘192.168.100.1’
option netmask ‘255.255.255.0’

firewall:

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 ‘fe80::/10’
option src_port ‘547’
option dest_ip ‘fe80::/10’
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 target ‘ACCEPT’
option src ‘wan’
option proto ‘tcp udp’
option dest_port ‘1194’
option name ‘vpn’

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 src ‘wan’
option dest ‘lan’
option proto ‘esp’
option target ‘ACCEPT’

config rule
option src ‘wan’
option dest ‘lan’
option dest_port ‘500’
option proto ‘udp’
option target ‘ACCEPT’

config rule ‘guest_turris_dns_rule’
option enabled ‘0’
option name ‘guest dns rule’
option src ‘guest_turris’
option proto ‘tcpudp’
option dest_port ‘53’
option target ‘ACCEPT’

config rule ‘guest_turris_dhcp_rule’
option enabled ‘0’
option name ‘guest dhcp rule’
option src ‘guest_turris’
option proto ‘udp’
option src_port ‘67-68’
option dest_port ‘67-68’
option target ‘ACCEPT’

config defaults
option syn_flood ‘1’
option output ‘ACCEPT’
option forward ‘REJECT’
option input ‘ACCEPT’

config zone
option name ‘lan’
list network ‘lan’
list network ‘vpn’
list network ‘vpn1’
option input ‘ACCEPT’
option output ‘ACCEPT’
option forward ‘ACCEPT’

config zone
option name ‘wan’
list network ‘wan’
list network ‘wan6’
option output ‘ACCEPT’
option forward ‘REJECT’
option masq ‘1’
option mtu_fix ‘1’
option input ‘REJECT’

config forwarding
option src ‘lan’
option dest ‘wan’

config forwarding
option src ‘vpn’
option dest ‘wan’

config forwarding
option src ‘vpn1’
option dest ‘wan’

config include
option path ‘/etc/firewall.user’

config include
option path ‘/usr/share/firewall/turris’
option reload ‘1’

config include
option path ‘/etc/firewall.d/with_reload/firewall.include.sh’
option reload ‘1’

config include
option path ‘/etc/firewall.d/without_reload/firewall.include.sh’
option reload ‘0’

config include ‘miniupnpd’
option type ‘script’
option path ‘/usr/share/miniupnpd/firewall.include’
option family ‘any’
option reload ‘1’

config zone ‘guest_turris’
option enabled ‘0’
option name ‘guest_turris’
option input ‘REJECT’
option forward ‘REJECT’
list network ‘guest_turris’
option output ‘REJECT’

config forwarding ‘guest_turris_forward_wan’
option enabled ‘0’
option name ‘guest to wan forward’
option src ‘guest_turris’
option dest ‘wan’

V ramci te konfigurace pro “tcp” variantu, je potreba jeste upravit rozsah adress/netmask (aby to bylo jine nez u te “udp” varianty).
Jinak dva openvpn servery na turrisu ? Proc ne (kazde ma svoje + a -). Ale prijde mi to tak nejak zbytecne, bud udp a nebo tcp a jen jeden server config. Pokud neco dalsiho tak asi openvpn client …–>viz: poznamka o providerech v Japonsku. … nechces nahodou spis mit jeden openvpn server na turrisu a pak openvpn client co se bude pripojovat treba na ipredator, protonvpn a pod sluzby ?

Podobny dotaz uz tu na foru probehl nekolikrat. Osobne jsem to zkousel, ale nakonec jsem to vzdal z ruznych duvodu (varianty zdarma maji obvykle omezeni na rychlost, servery celkem preplnene a nektere protokoly nebyly propousteny zkrz a to routovani mezi obema tunely jsem stejne nedoresil --> to uz bylo na me moc prace pro tak malo uzitku).

Me to prijde naopak uzitecne, kde je mene restriktivni firewall, pouzijes UDP, kde jsou rasi, tcp pres 443

Přesně, jak píše Jirka. Takto jsem to myslel. Nakonec se vše podařilo, UDP varianta běží na UDP 1194 a TCP na TCP 1195. Každá varianta má své tun rozhraní a svůj subnet. Obě varianty nyní šlapou, jak jsem si představoval. Jen si říkám, zda nebude lepší TCP variantu pustit přes 443? Nyní mne ještě čeká boj s TLS certifikací serveru. To bude boj… už jen pro to, že oficiální dokumentace OpenVPN se neshoduje s implementací v Turrisu. Jen pro příklad:

OpenVPN official:

tls-auth ta.key 0

Turris:

option tls_auth ta.key

A to je jen špička ledovce…

Nez byl plugin vpn ve forisu tak jsem to mel taky na TCP 443 a nikdy nebyl problem. S udp na 1194 ale zatim taky ne ,tak to zatim nechavam tak. UDP je mene narocny na rezii.

jj, proto budu držet oba. TCP snad pojede odkudkoli, tak bych popřípadě přes TCP mohl změnit parametry (port) UDP.

Mozna helfne OpenVPN issue TLS server/client pripadne Kterak jsem si rozchodil (aspon doufam) openVPN

edit: s tim, ze jsem tu svoji pracne vytvorenou konfiguraci pro server nedavno uplne zrusil (problemy u nekterych klientu pri rozdilne verzi openvpn --> 2.3.x a nizsi vs 2.4.x, nemoznost rozchodit klienta na “Rasplex” , problemy s ruznymi verzemi TLS…) . Ten “rasplex” jsem pak jakstaks rozchodil, bohuzel i pres veskerou snahu jsem se pak nekde na forech docetl, ze v pripade “self-signed” CA a nespravnem vyplneni blbne inicialni handshake a obvykle po refresh intervalu tunel padne (a navysovani refresh intervalu na max je tak nejak proti samotnemu pouzivani tls…).

Jako třešnička na závěr si můžete instalovat sslh, který vám umožní mít na 443 několik služeb najednou

/etc/config/sslh

config ‘sslh’ ‘default’
# disable or enable
option ‘enable’ ‘1’
# listen defaults to ‘0.0.0.0:443’ (all interfaces)
# multiple -p arguments may be supplied using a uci list
# -p :
option ‘listen’ ‘0.0.0.0:443’
# ssh defaults to ‘localhost:22’
# --ssh :
option ‘ssh’ ‘localhost:22’
# ssl defaults to ‘localhost:443’
# --ssl :
option ‘ssl’ ‘nasweb:5001’
# openvpn defaults to ‘localhost:1194’
# --openvpn :
option ‘openvpn’ ‘localhost:1195’
# tinc defaults to ‘localhost:655’
# --tinc :
option ‘tinc’ ‘’
# xmpp defaults to ‘localhost:5222’
# --xmpp :
option ‘xmpp’ ‘’
# timeout (for ssh, then ssl is assumed) defaults to 2
# -t
option ‘timeout’ ‘’
# verbose defaults to off
# -v
option ‘verbose’ ‘0’