Wgrałem czysty obraz, na spokojnie przeczytałem cały temat jeszcze raz... I działa:)
@mar_w, miałeś rację, brakowało właśnie tej maskarady.
Serdeczne dzięki Panowie za poświęcony czas i cierpliwość, ponieważ największą przeszkodą prawdopodobnie było moje "odnajdywanie się" w temacie.
Poniżej przedstawiam gotową konfigurację, może komuś się przyda (po zweryfikowaniu podepnę do pierwszego posta jako rozwiązanie problemu). Starałem się zostawić tylko to co niezbędne, router ma być "Switch'em z serwerem OpenVPN.".
Konfiguracja serwera (/etc/config/openvpn):
config openvpn 'sample_server'
option enabled '1'
option topology 'subnet'
option local '192.168.1.2'
option port '1194'
option proto 'udp'
option dev 'tun0'
option tun_mtu '1500'
option tls_server '1'
option ca '/etc/openvpn/ca.crt'
option cert '/etc/openvpn/serwer.crt'
option key '/etc/openvpn/serwer.key'
option dh '/etc/openvpn/dh2048.pem'
option tls_auth '/etc/openvpn/ta.key 0'
option server '10.8.0.0 255.255.255.0'
list push 'route 192.168.1.0 255.255.255.0'
list push 'redirect-gateway def1' #Ad.1)
option client_config_dir '/etc/openvpn/ccd'
option client_to_client '1'
option keepalive '25 180'
option cipher 'AES-256-CBC'
option compress 'lz4'
option persist_key '1'
option persist_tun '1'
option log '/tmp/openvpn.log'
option verb '3'
Ad.1 Wiersz odpowiadający za przekierowanie całego ruchu klientów przez tunel vpn, zgodnie z >>Tym<< akapitem poradnika Cezarego.
Plik ccd (/etc/config/openvpn/commonname):
ifconfig-push 10.8.0.2 255.255.255.0
Common Name certyfikatu użytkownika, musi być taki sam jak nazwa pliku
Konfiguracja klienta (wersja na Windows 10):
client
dev tun0
proto udp
remote XXX.XXX.XXX.XXX 1194 #Ad.2)
nobind
cipher AES-256-CBC
pkcs12 commonname.p12
tls-auth ta.key 1
compress lz4
verb 3
log /tmp/openvpn.log
Ad.2) IP lub DDNS dostępowy do głównego routera (bramy) sieci, w której jest serwer OpenVPN. W tym przypadku na routerze należy zrobić przekierowanie z portu 1194 na 192.168.1.2:1194.
Konfiguracja firewall (/etc/config/firewall):
config defaults
option syn_flood '1'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'REJECT'
config zone
option name 'lan'
list network 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option masq '1'
config zone
option name 'vpn'
option input 'ACCEPT'
option forward 'ACCEPT'
option output 'ACCEPT'
option network 'vpn'
option masq '1'
config forwarding
option src 'vpn'
option dest 'lan'
W tym przypadku wszystko co nie używane/potrzebne, starałem się usunąć. Także wszystkie wpisy dotyczace WAN, zostały skasowane.
Konfiguracja DHCP (/etc/config/dhcp):
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
option localservice '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
config dhcp 'vpn'
option interface 'vpn'
option ignore '1'
config dhcp 'lan'
option interface 'lan'
option ignore '1'
Jeszcze raz wszystkim dziękuję, mam wrażenie i nadzieję, że udało się to "w miarę elegancko" skonfigurować i poukładać.
Taka specyficzna sytuacja wynikła, że SerwerVPN jest w sieci LAN na osobnym routerze, a nie jest "na bramie"(choć na bramie skonfigurowałem wszystko szybko z poradnikiem Cezarego i działało) ponieważ router będący bramą nie był w stanie obsłużyć prędkości mojego łącza. Rpi3 dawało radę jednak nie chciałem aby tylko "tym się zajmowało", szczególnie że tę funkcję mógł przejąć router w sieci. Teraz Rpi3 z RetroPi i Kodi zadomowiło się pod telewizorem:)
Mam jeszcze kilka pytań, na które nie znalazłem odpowiedzi:
1) Czy brak definiowania haseł dla certyfikatów, nie jest jakiegoś rodzaju luką w zabezpieczeniach?
Czy nie stosuje się ich celowo aby ułatwić konfigurację, a same certyfikaty są zabezpieczeniem na tyle mocnym, że hasło "mało zmienia".
2) Czy informacje podawane podczas generowania certyfikatów, poza Common Name (dla celów ccd) służą czemuś konkretnemu? Czy służą "komplikowaniu algorytmu klucza", coś na zasadzie ruchów myszki aby uzyskać losowe dane. Męczy mnie to ponieważ czasami piszą żeby w ogóle zostawiać te pola puste. Chyba, że te wartości pomagają w administracji większa ilością sieci i tuneli.
3) Czy można tę konfigurację zmienić tak aby trasa normalnie wysyłana w pliku ccd do danego klienta z tożsamym "Common name" była zawarta w pliku konfiguracji serwera i wysyłana do wszystkich klientów?
4) Za pomocą konfiguracji LED, ustawiłem tak aby się świeciły gdy tun0 przyjmuje i wysyła pakiety, zastanawiam się jak ugryźć temat tak aby dioda była zapalona w chwili gdy jakiś klient się podłączy.
@khain, @cezary, @mar_w jeszcze raz Wam dziękuję za pomoc.