OpenVPN für die Verwendung von Firewalld anstelle von iptables unter Centos 7 konfigurieren

14

Ich muss OpenVPN unter Centos 7 mit konfigurieren firewalld.

Ich habe iptables auf Centos 6.5 verwendet und musste nur die folgenden Zeilen hinzufügen /etc/sysconfig/iptables:

-A POSTROUTING -s "10.0.0.0/24" -o "wlan0" -j MASQUERADE 
-A FORWARD -p tcp -s 10.0.0.0/24 -d 0.0.0.0/0 -j ACCEPT 
run the command: echo 1 > /proc/sys/net/ipv4/ip_forward 
open port 443.
Fxbaez
quelle

Antworten:

31

Verwenden Sie den firewall-cmdBefehl.

Angenommen, Sie öffnen die Firewall für OpenVPN in der Standardzone, führen Sie die folgenden Befehle aus. Wenn Sie es in einer nicht standardmäßigen Zone --zone=<zone>ausführen , fügen Sie den Befehlen hinzu.

Hinweis: Wenn Sie die Standardzone publicfür Ihren externen Netzwerkadapter verwenden, kann Ihre Loopback-Schnittstelle auch maskiert sein (abhängig von der ausgeführten Version firewalld), was zu Problemen führen kann, wenn Sie einen Dienst ausführen (z. B. mySQL), auf den zugegriffen wird örtlich.

Listen Sie zunächst auf, was aktuell geöffnet ist:

# firewall-cmd --list-services
http https ssh

Fügen Sie als Nächstes den openvpnDienst hinzu:

# firewall-cmd --add-service openvpn
success

Ein kurzer Check:

# firewall-cmd --list-services
http https openvpn ssh

Das obige erlaubt openvpndie Arbeit, die Sie jetzt testen können. Es wird jedoch nicht über Neustarts dauern. Um es dauerhaft zu machen, fügen Sie die --permanentOption hinzu:

# firewall-cmd --permanent --add-service openvpn`
success

Beachten Sie, dass dieser letzte Befehl den Port erst beim nächsten Neustart öffnet. Sie müssen daher beide Befehle verwenden.

Zum Schluss die Maskerade hinzufügen:

# firewall-cmd --add-masquerade
success

Und machen Sie es nach einem Neustart dauerhaft:

# firewall-cmd --permanent --add-masquerade
success

Bestätige es:

# firewall-cmd --query-masquerade
yes

Beachten Sie, dass, wenn sich Ihre eingehende OpenVPN-Verbindung in einer anderen Zone als Ihre Internetverbindung befindet, sich die Maskerade in der letzteren befinden sollte und Sie die --zone=<zone>Option mit den --add-masqueradeBefehlen verwenden müssen.

garethTheRed
quelle
Woran erkennt man, wie die Definition des OpenVPN-Dienstes in der Firewall lautet? Wie können Sie beispielsweise überprüfen, ob openvpn über TCP 443 zulässig ist?
Christopher
@Christopher - Servicedateien befinden sich in /lib/firewalld/services/. In Ihrem Fall befindet es sich openvpn.xmlin diesem Verzeichnis. Benutzerdefinierte Dienste gehen ein /etc/firewalld/services. Beachten Sie, dass der Standardport für openvpn ist UDP/1194.
GarethTheRed
1
Vielen Dank. Ich hatte ein Problem und dachte, es könnte eine Firewall sein. Das einzige, was ich anders gemacht habe als die obigen Anweisungen, war die Verwendung von "https" anstelle von "openvpn" als hinzuzufügenden Dienstnamen. Es stellte sich heraus, dass das Problem nicht durch eine Firewall verursacht wurde. Ich war nur dumm und habe vergessen, meinen Client so zu konfigurieren, dass "tun" anstelle von "tap" verwendet wird. Die obigen Anweisungen funktionieren einwandfrei.
Christopher
1
Ich habe ein Problem beim Hinzufügen von Maskerade zur gesamten Zone festgestellt. Dadurch wird versucht, meine Verbindungen zur Loopback-Schnittstelle per NAT zu verbinden, wenn ich andere Dienste auf localhost ausführe. Ich möchte das Maskieren auf nur 10.8.0.0/16 beschränken. Hast du eine Idee, wie du das machen könntest?
Christopher
1
Dieser Fehler kann die Ursache sein. Wenn Ihre Standardzone die Zone ist, wird publicdie Loopback-Schnittstelle maskiert. Es stellte sich heraus, dass ich meine Standardzone zuvor so eingestellt hatte, dass ich mich externalnie mit dem Problem konfrontiert sah, das Sie sehen. Versuchen Sie, die Dienste und den Adapter in eine andere Zone zu verschieben, um festzustellen, ob dies hilfreich ist. Lass es mich wissen :-)
garethTheRed