OpenVPN4UCS nicht erreichbar / Subnetz-Konflikt / VPN Hosts erreichen interne Ressourcen nicht (Gelöst)

Hallo liebe Gemeinde,

ich bekomme OpenVPN4UCS leider nicht überredet, eine Verbindung des Clients zuzulassen. Langsam glaube ich, ich sehe den Wald vor lauter Bäumen nicht mehr. Vielleicht könnt ihr mir helfen. Folgender, recht rudimentärer Test-Use:

UCS Member (frenzy) mit OpenVPN4UCS soll mir einen Zugang in das gleiche Netz geben, in dem er sich selbst befindet.

  • vpn.foobar.de ist eine DynDns-Adresse, die auf die Public IP der Fritz!Box zeigt.
  • Port 1194 ist für TCP und UDP in Richtung des Member-Systems freigegeben
  • 192.168.178.44 ist der UCS Primary
root@frenzy:/etc/openvpn# univention-ldapsearch -LLL cn=frenzy univentionOpenvpnPort univentionOpenvpnActive univentionOpenvpnNet univentionOpenvpnAddress
dn: cn=frenzy,cn=memberserver,cn=computers,dc=blacky,dc=local
univentionOpenvpnAddress: vpn.foobar.de
univentionOpenvpnPort: 1194
univentionOpenvpnActive: 1
univentionOpenvpnNet: 192.168.178.1/24
ifconfig (Auszug)
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.178.48  netmask 255.255.255.0  broadcast 192.168.178.255
        inet6 fd70:f85b:97fa:4fc7:5054:ff:fec9:be48  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::5054:ff:fec9:be48  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:c9:be:48  txqueuelen 1000  (Ethernet)
        RX packets 38844  bytes 10321763 (9.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13711  bytes 2505671 (2.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

...

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.178.1  netmask 255.255.255.0  destination 192.168.178.1
        inet6 fdda:354e:65b6:b242::1  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::167f:7657:5971:78e  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 384 (384.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

server.conf

root@frenzy:/etc/openvpn# cat ./server.conf
### Constant values

dh /etc/openvpn/dh2048.pem
ca /etc/univention/ssl/ucsCA/CAcert.pem
cert /etc/univention/ssl/frenzy/cert.pem
key /etc/univention/ssl/frenzy/private.key
crl-verify /etc/openvpn/crl.pem
cipher AES-256-CBC
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.178.44"
push "dhcp-option DOMAIN blacky.local"
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 1
mute 5
status /var/log/openvpn/openvpn-status.log
management /var/run/management-udp unix
dev tun
topology subnet

### Values which can be changed through UDM

port 1194
server 192.168.178.0 255.255.255.0
server-ipv6 fdda:354e:65b6:b242::/64
proto udp
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so /etc/pam.d/vpncheckpass

Ich stoße nun auf folgende Fehler: UDPv4: Network is unreachable (code=101

Auszug aus dem Syslog:

# 1.2.3.4 = meine public ip
Jan 31 16:17:15 frenzy ovpn-server[5169]: 1.2.3.4:49911 write UDPv4: Network is unreachable (code=101)
Jan 31 16:17:16 frenzy ovpn-server[5169]: 1.2.3.4:49911 write UDPv4: Network is unreachable (code=101)
Jan 31 16:17:17 frenzy ovpn-server[5169]: 1.2.3.4:49911 write UDPv4: Network is unreachable (code=101)
Jan 31 16:17:18 frenzy ovpn-server[5169]: 1.2.3.4:49911 write UDPv4: Network is unreachable (code=101)
Jan 31 16:17:19 frenzy ovpn-server[5169]: 1.2.3.4:49911 write UDPv4: Network is unreachable (code=101)
Jan 31 16:17:20 frenzy ovpn-server[5169]: 1.2.3.4:49911 NOTE: --mute triggered...
Jan 31 16:18:16 frenzy ovpn-server[5169]: 1.2.3.4:49911 63 variation(s) on previous 5 message(s) suppressed by --mute
Jan 31 16:18:16 frenzy ovpn-server[5169]: 1.2.3.4:49911 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Jan 31 16:18:16 frenzy ovpn-server[5169]: 1.2.3.4:49911 TLS Error: TLS handshake failed

der Client sagt:

2022-01-31 16:18:06+0100 [MyOMIClient,0,] FROM OMI: u'>STATE:1643642286,WAIT,,,'
2022-01-31 16:18:06+0100 [MyOMIClient,0,] *** STATE 1643642286,WAIT,,,
2022-01-31 16:18:06+0100 [HTTPChannel,4722,] *** API CALL f=xmlrpc_Poll args=['sess_vpn_foobar_de_p1255_j0uEujcjS1mt7LtI_1', 10] kw={} ret=[{'timestamp': 1643642286, 'state': u'WAIT', 'type': 'STATE'}]
2022-01-31 16:18:16+0100 [-] OVPN vpn_foobar_de_p1255 ERR: '>FATAL:CONNECTION_TIMEOUT'
2022-01-31 16:18:16+0100 [MyOMIClient,0,] FROM OMI: u'>FATAL:CONNECTION_TIMEOUT'
2022-01-31 16:18:16+0100 [MyOMIClient,0,] *** API CALL f=xmlrpc_Poll args=['sess_vpn_foobar_de_p1255_j0uEujcjS1mt7LtI_1', 10] kw={} ret=[{'timestamp': 1643642296, 'type': 'FATAL', 'error': u'CONNECTION_TIMEOUT'}]
2022-01-31 16:18:16+0100 [-] *** API CALL f=xmlrpc_Poll args=['sess_vpn_foobar_de_p1255_j0uEujcjS1mt7LtI_1', 10] kw={} ret=[{'active': False, 'timestamp': 1643642296, 'type': 'ACTIVE', 'last': True}]
2022-01-31 16:18:16+0100 [-] *** API CALL f=xmlrpc_Poll args=['sess_TrackActiveProfiles_d19fR3VmdPMWCKoX_3', 10] kw={} ret=[{'timestamp': 1643642296, 'state': 'disconnect', 'profile_id': 'vpn_foobar_de_p1255', 'type': 'PROFILE'}]
2022-01-31 16:18:16+0100 [-] OpenVPN vpn_foobar_de_p1255 stop: daemon exited with status 0
2022-01-31 16:18:16+0100 [HTTPChannel,4736,] *** API CALL f=xmlrpc_Poll args=['sess_vpn_foobar_de_p1255_j0uEujcjS1mt7LtI_1', 10] kw={} ret=[{'timestamp': 1643642296, 'type': 'DELETE_PENDING'}]
2022-01-31 16:28:20+0100 [-] Inactivity disconnect on profile ID vpn_foobar_de_p1255

Ich hatte etwas gehofft, dass der Aufbau (mit self signed Certs) für einen grundsätzlichen Test ausreichen würde. Ursprünglich war meine Idee, Port 443 zu nehmen, den Apachen auf dem Member abzuschalten und dann per nginx einen Redirect zu diesem System machen zu lassen, damit nginx die SSL Certs vorhalten kann.

Sieht spontan jemand etwas??

Grüße aus Rostock
Marc

Hi Marc,

funktioniert das ganze in einer DMZ? Kommt Deine Maschine nach außen überhaupt am Router vorbei? Die TLS Error hängen für mich eher mit Network is unreachable zusammen. check your network connectivity :sweat_smile:

Grüße
Mário

Moin Mario und danke für deine schnelle Rückmeldung.
Die Kiste hat keine Einschränkungen, jedoch scheint sich mein Verlangen, eine IP aus dem gleichen Subnetz auch als VPN-Netz vergeben zu wollen, nicht mit UCS vereinbaren zu lassen.
Ich habe ein Netzwerk gewählt. Nachdem ich bemerkt habe, dass mein DynDNS sich letzte Nacht nicht korrekt aktualisiert hat und ich diese Falle auch noch beseitigt habe, habe ich jetzt eine aufgebaute Verbindung. Ich teste heute Abend weiter, ob sich nun alles so verhält, wie gewünscht.

Fröhliche Grüße :vulcan_salute: (auch an alle anderen ehemaligen Kollegen :wink: )

Ja, jetzt wo Du es sagst. :sweat_smile:
Wenn das Handbuch sagt:

The “OpenVPN transfer network” is the actual VPN. You have to ensure, that the
values do not collide with other existing networks…

Halten wir uns daran. Gut das Du weiter gekommen bist.

Vielen Dank und Grüße zurück :vulcan_salute: :slight_smile:

Kurzer Einwand aus der Mittagspause:
Hier steht:

Den Satz …

Die grundlegende Idee von OpenVPN4UCS ist, dass einem Computer (z.B. Notebook), der sich nicht im Netz des Servers befindet eine virtuelle Präsenz im Netz des Servers zu ermöglichen.

… habe ich so interpretiert, dass ich mit OpenVPN4UCS eine IP aus dem Netz, in welchem sich der Server befindet , vergeben kann. Wenn ich das versuche, hagelt es die oben beschriebenen Connection-Fehler.

Mit einem anderen Subnetz erhalte ich eine gültige IP aus dem Bereich, erreiche aber keine Ressource aus dem Netz des Servers, obwohl ich von der Zeile push "dhcp-option DNS..." in der server.conf` genau das erwartet hätte.

Ich habe eine NAT-Regel angelegt, die allein scheinbar nicht ausreicht:

root@frenzy:~# ip route show
default via 192.168.178.1 dev enp2s0 onlink
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1 linkdown
192.168.178.0/24 dev enp2s0 proto kernel scope link src 192.168.178.48
192.168.190.0/24 via 192.168.178.48 dev enp2s0 scope link
192.168.190.0/24 dev tun0 proto kernel scope link src 192.168.190.1

root@frenzy:~# iptables -t nat -A POSTROUTING -s 192.168.190.0/24 -o tun0 -j MASQUERADE
root@frenzy:~# iptables-save
root@frenzy:~# iptables -t nat -L --line-numbers
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    MASQUERADE  all  --  172.17.0.0/16        anywhere
2    MASQUERADE  all  --  192.168.190.0/24     anywhere

Chain DOCKER (2 references)
num  target     prot opt source               destination
1    RETURN     all  --  anywhere             anywhere

root@frenzy:~# /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.
root@frenzy:~#

Bin ich blind? Das sollte doch so eigentlich passen, oder?

Hallo Gemeinde,

ich habe mit Hilfe einer Suchmaschine meiner Wahl :tm: eine Liste an iptables-Regeln gefunden, die ich eingefügt habe und somit das NATing zwischen dem VPN-Netz und lokalem LAN vervollständigen konnte. Den Artikel hatte ich gestern abends schonmal bei der Hand, aber da hatte ich ja noch ganz andere Probleme :see_no_evil:

How to configure iptables for openvpn

If you have installed the openvpn server and iptable is blocking the service by default then use these configurations for openvpn to function properly. First let’s allow the tcp connection on the openvpn port. If you are using udp or another port number then change this line accordingly.

iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT

Allow TUN interface connections to OpenVPN server

iptables -A INPUT -i tun+ -j ACCEPT

Allow TUN interface connections to be forwarded through other interfaces

iptables -A FORWARD -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

NAT the VPN client traffic to the Internet. change the ip address mask according to your info of tun0 result while running “ifconfig” command.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

That’s it now restart the iptables service and you are finished.

Quelle: How to configure iptables for openvpn

Außerdem fehlte in der /etc/openvpn/server.conf die Zeile
push "route 192.168.178.0 255.255.255.0"

P.S.: Die statische Route per UCR habe ich wieder entfernt.

Mastodon