Kterak jsem si rozchodil (aspon doufam) openVPN

Zdar vespolek ,

jakozto nadseny linuxak/unixak jsem se vrhnul do openwrt s buldoci vervou. Rozchodil jsem si kdejakou sluzbu (transmission,samba,vsftpd,ircd, remote-ssh …) a tak doslo i na hratky s openssl/openvpn.

Procetl jsem mnoho navodu rozesetych po celem internetu. Skakal jsem mezi openwrt wiki, openvpn wiki a archlinux wiki (jejich navody jsou tak obecne postavene, ze mi pomohli na debianu, centosu, ubuntu a vlastne i na turrisu). Zprvu byl vubec problem rozlisit, zda-li prislusny navod je aplikovatelny pro me potreby (a bohuzel nektere navody jsou tak zmatene, ze v nekterych fazich clovek nevi ‘co s tim’ )

Ve finale jsem postupoval podle tohoto https://wiki.openwrt.org/doc/howto/openvpn-streamlined-server-setup navodu. A muzu rict, ze slavim snad uspech.

Poznamky:

Pri pouziti topology=subnet parametru neni nutny ifconfig (ale muze se pouzit). key-direction neni nutne natvrdo specifikovat staci kdyz server ma nastavenou remote-cert-tls a tls-server parametry. tls-cipher stejna pohadka, jakmile jsem zadal nejaky seznam (ikdyby o jedne polozce) byl nejaky problem. mssfix je dobre pouzit na klientske strane v kombu s fragment, na serveru je jiz na Wan nastaveno mtu=1500 a mssfix=1 … takze u vpn zony uz to neni uplne nutne (pokud clovek nejede troubleshooting) … a zase jakmile si clovek zacne hrat s link-mtu , tun-mtu muze cekat, ze se proste oba konce nemusej domluvit. Pro prehled nize jsou configy (lehce upravene pro publikaci)
Default port 1194 je v realu jiny.[/details]

[details=server.config]config openvpn 'node42_server’
option keepalive '10 60’
option server '10.0.100.0 255.255.255.0’
option ifconfig '10.0.100.1 255.255.255.0’
option port '1194’
option dev_type 'tun’
option ca '/etc/openvpn/certs/ca.crt’
option dh '/etc/openvpn/certs/dh2048.pem’
option cert '/etc/openvpn/certs/server.crt’
option key '/etc/openvpn/certs/server.key’
option proto 'udp’
option fast_io '1’
option persist_tun '1’
option persist_key '1’
option persist_local_ip '1’
option mode 'server’
option topology 'subnet’
option tls_server '1’
option tls_exit '1’
option auth_nocache '1’
option auth 'SHA1’
option cipher 'BF-CBC’
option log '/var/log/openvpn-server.log’
option log_append '/var/log/openvpn.log’
option comp_lzo 'adaptive’
option status '/var/log/openvpn.status 6’
option verb '5’
option dev 'tun0’
option float '1’
option reneg_sec '30’
option enabled '1’
option tls_auth '/etc/openvpn/certs/ta.key’
option remote_cert_tls 'client’
option tls_version_min '1.0’
option client_to_client '1’
list push 'route 192.168.1.0 255.255.255.0’
list push 'dhcp-option DNS 192.168.1.1’
list push 'dhcp-option WINS 192.168.1.1’
list push 'dhcp-option DNS 8.8.8.8’
list push ‘dhcp-option DNS 8.8.4.4’

win.client.config

float
client
tls-client
dev tun
proto udp
remote ROUTER_PUB_IP 1194
comp-lzo adaptive
keepalive 10 60
verb 5
nobind
persist-key
persist-tun
auth SHA1
cipher BF-CBC
mssfix 0
fragment 0
remote-cert-eku "TLS Web Server Authentication"
tls-auth "C:\Program Files\OpenVPN\config\tauth.key"
ca "C:\Program Files\OpenVPN\config\ca.crt"
cert "C:\Program Files\OpenVPN\config\client.crt"
key "C:\Program Files\OpenVPN\config\client.key"
auth-nocache
resolv-retry infinite

Ve vyse uvedenem nastaveni s povolenym remote-openvpn-portem se pripojim win10/android clientama do zony. Kde vse koncilo a nic se nedelo. Tudiz jsem zacal resit, jak jsou na tom pravidla na firewallu.
Zase kazdy navod pristupoval k pravidlum trosku jinak a nebylo moc nikde vysvetleno co dane nastaveni znamena z pohledu sitariny a routovani (nekdo k tomu pristupoval zakazu vse a pak budu povolovat, jini zas pristup na urovni zon, jini na urovni traffic rules atp…) Fakt jsem netusil co VSE mam ci nemam povolit a hlavne PROC…

Takze zase pomohla tahle sekce : https://wiki.openwrt.org/doc/howto/openvpn-streamlined-server-setup#tab__rules
Kdy jsem sel polozku po polozce a zkoumal, zda-li mam ci nemam nastaveno patricne ci nepatricne. A mozna doted si nejsem jistej, zda-li tam nemam neco zbytecne. Config firewallu a network sem ani davat nebudu (v podsate jsem to tupe oprasknul z navodu a jen pouzil svoje zony, ip, porty a tak).

Po upravach pravidel a refreshnuti sluzeb, uz se da z lan overit ze vpn client je v siti a dostupny a obracene. Jeste budu chvilku testovat co vse jde/nejde. Ale myslim, ze jsem se dostal aspon nekam.

Nejvic problemu se samotnym spojeni bylo tls-auth, To trvalo nejdele rozchodit. V tomto smeru, cim mene nastaveni, tim spis to facha. Kdykoliv jsem nasledoval nejake navody vsude se resil smer klicu atp…coz ve finale nebylo v mem pripade potreba.
Pro kazdej parametr jsem vzdy pro jistotu overoval zda-li to je ci relevantni pro me potreby, zda-li to je to jen pro clienta ci jen pro server ci pro oba konce (nekdy fakt LUCI umoznuje pridavat clientske options do server configu …a nektere na sobe zavisle/ci se vylucujici moznosti jsou s klidem dovoleny k zapisu … — a pak clovek lovi v syslogu proc to nechce makat).

Po foru jsem tu postupne zanechaval ruzne odkazy a navody. Uprimne, je to tak trosku peklo to rozchodit, v tomto smeru bych ocenil klidne nejake auto-config scripty (pridavani pravidel do firewallu je pro me porad lehce spanelska vesnice a clovek se boji ze si udela duru do routeru)

Tak snad nekomu vyse uvedene, popsane pomuze si nevytrhat zbytky vlasu a ochlupeni.

(Te)Pic!Maus

3 Likes

Poznamka: V ramci zon jsem musel udelat v nastaveni firewallu.
zona=inbound,outbound,forward,masq,mss
WAN=reject,accept,reject,1,1
LAN=accept,accept,reject,0,0
VPN=accept,accept,reject,0,0

Forwarding:
LAN to wan,vpn
VPN to lan
WAN to “reject”

Ruzne po forech a ruznych wiki strankach jsou uvadena ruzna nastaveni pro zony. Bez detailnejsiho vysvetleni proc se to tak ma ci nema nastavit. Napr. u vpn zony jsou asi tri ruzne varianty pro rizeni in/out/fwd. V zavislosti na obecnem nastaveni pres ‘forwarding’ pravidlo to melo ci nemelo smysl pro ruzne typy navodu (s dmz, bez dmz, vpn(subnet,bridged,routed) …atp).

Cize ja proste chci aby vpn klienti mohli videt sami na sebe, mohli na dostupne sluzby v .lan zone bez nutnosti derovat/smerovat porty na firewallu ci jim cpat prehrsle push direktiv (mozna na ccd/ipp fajly jeste dojde, uvidime)

…aby to pro ne bylo jako kdyz jsou primo v lan.

1 Like

Zde je celkem pekne rozepsano jak funguje “server” zkrze “klienta” .
https://docs.openvpn.net/connecting/site-to-site-routing-explained-in-detail/

I pres neaktualnost tohoto vlakna (diky Foris pluginu pro openvpn), bych mel jeste jednu poznamku. Zacal mi blbnout Android client (pripojen ale bez pruchodu dat)
https://community.openvpn.net/openvpn/wiki/DeprecatedOptions#Option:--comp-lzo
nove by se melo pouzivat compress po staru comp_lzo. melo by stacit odebrani (compress/comp-lzo) jak na server tak na client strane a nebo se da nechat server jak je a pro android klienta jen pouzit comp-lzo no a melo by to projit.

1 Like