![Verbinden Sie Netzwerke mit OpenVPN unter CentOS 7](https://rvso.com/image/112004/Verbinden%20Sie%20Netzwerke%20mit%20OpenVPN%20unter%20CentOS%207.png)
Ich versuche, zwei Netzwerke miteinander zu verbinden, indem ich ein Paar CentOS 7-Systeme verwende, auf denen OpenVPN läuft.
Ich habe eine „Server“-Seite, hinter der sich zwei Netzwerke befinden, und eine „Client“-Seite, hinter der sich ein einzelnes Netzwerk befindet. Die grundlegende OpenVPN-Verbindung ist aktiv, aber ich glaube, mit dem Routing oder der Firewalld-Konfiguration stimmt etwas nicht.
Das OpenVPN ist ein Pool auf 10.8.0.0/24. Der Server hat die Netzwerke 10.254.1.0/24 und 10.255.1.0/24 dahinter; der Client hat 10.255.0.1 dahinter.
Der Server überträgt diese Routing-Optionen in server.conf:
# Push any routes the client needs to get in
# to the local network.
push "route 10.254.1.0 255.255.255.0"
push "route 10.255.1.0 255.255.255.0"
Diese werden korrekt in der Routing-Tabelle des Clients angezeigt:
10.8.0.1 via 10.8.0.5 dev tun0
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6
10.254.1.0/24 via 10.8.0.5 dev tun0
10.255.0.0/24 dev enp6s4f0 proto kernel scope link src 10.255.0.1 metric 100
10.255.1.0/24 via 10.8.0.5 dev tun0
...und serverseitig habe ich manuell eine entsprechende Route eingerichtet:
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1
10.255.0.0/24 via 10.8.0.2 dev tun0
...und das Client-Gateway kann tatsächlich Geräte anpingen, die tiefer im Netzwerk des Servers liegen:
[root@sentry openvpn]# ping -c 1 10.254.1.10
PING 10.254.1.10 (10.254.1.10) 56(84) bytes of data.
64 bytes from 10.254.1.10: icmp_seq=1 ttl=63 time=300 ms
...aber ich kann keine SSH-Verbindung dazu herstellen.
# ssh [email protected]
ssh: connect to host 10.254.1.10 port 22: No route to host
... also, ich denke, es könnte ein Firewall-Problem sein.
Auf beiden Seiten habe ich die Tun-Schnittstelle zu meiner internen Zone hinzugefügt.
Auf der Clientseite:
# firewall-cmd --info-zone="internal"
internal (active)
target: default
icmp-block-inversion: no
interfaces: enp6s4f0 tun0
sources:
services: dhcp dhcpv6-client dns http mdns mosh samba-client snmp ssh syslog
ports: 8000/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
...und der Server:
# firewall-cmd --info-zone="internal"
internal (active)
target: default
icmp-block-inversion: no
interfaces: ens161 ens256 tun0
sources:
services: dhcpv6-client mdns samba-client snmp ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
Damit die beiden internen Netzwerke nun auf dem Server miteinander kommunizieren können, musste ich direkte iptables-Regeln hinzufügen:
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens256 -o ens161 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens161 -o ens256 -j ACCEPT
... also habe ich dasselbe für das OpenVPN-Netzwerk getan:
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens256 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens256 -i tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens161 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens161 -i tun0 -j ACCEPT
...und auf dem Client:
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp6s4f0 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o enp6s4f0 -i tun0 -j ACCEPT
... also verstehe ich entweder nicht, wie das Routing funktionieren soll, oder ich übersehe etwas auf der Firewall-Seite.
Kann mir jemand sagen, was ich übersehe?