Konfigurowanie OpenVPN do używania Firewalld zamiast iptables na Centos 7

14

Muszę skonfigurować OpenVPN na Centos 7 za pomocą firewalld.

Użyłem iptables na Centos 6.5 i musiałem tylko dodać następujące wiersze /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
źródło

Odpowiedzi:

31

Użyj firewall-cmdpolecenia.

Zakładając, że otwierasz zaporę ogniową do OpenVPN w strefie domyślnej, wykonaj następujące polecenia. Jeśli używasz go w strefie innej niż domyślna, dodaj --zone=<zone>do poleceń.

Uwaga: jeśli używasz publicstrefy domyślnej dla zewnętrznej karty sieciowej, interfejs sprzężenia zwrotnego może również być maskaradowany (w zależności od wersji, w firewalldktórej działasz), co może powodować problemy, jeśli korzystasz z dostępnej usługi (takiej jak mySQL) lokalnie.

Najpierw wypisz, co jest obecnie otwarte:

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

Następnie dodaj openvpnusługę:

# firewall-cmd --add-service openvpn
success

Szybka kontrola:

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

Powyższe pozwoli openvpnna pracę, którą możesz teraz przetestować. Nie będzie to jednak trwało po ponownym uruchomieniu. Aby było trwałe, dodaj --permanentopcję:

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

Zauważ, że to ostatnie polecenie nie otwiera portu aż do następnego restartu, więc musisz użyć obu poleceń.

Na koniec dodaj maskaradę:

# firewall-cmd --add-masquerade
success

I ustaw go na stałe po ponownym uruchomieniu:

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

Potwierdź to:

# firewall-cmd --query-masquerade
yes

Zauważ, że jeśli twoje połączenie OpenVPN znajduje się w innej strefie niż połączenie internetowe, maskarada powinna być na tym drugim i będziesz musiał użyć tej --zone=<zone>opcji z --add-masqueradepoleceniami.

garethTheRed
źródło
Jak powiedzieć, jaka jest definicja usługi openvpn w firewalld? Na przykład, jak możesz sprawdzić, czy pozwala on openvpn przez TCP 443?
Christopher
@Christopher - pliki serwisowe znajdują się w /lib/firewalld/services/. W twoim przypadku będzie openvpn.xmlw tym katalogu. Wchodzą usługi zdefiniowane przez użytkownika /etc/firewalld/services. Zauważ, że domyślnym portem dla openvpn jest UDP/1194.
garethTheRed
1
Dzięki. Miałem problem i myślałem, że może być zaporą ogniową. Jedyną rzeczą, którą zrobiłem inaczej niż powyższe instrukcje, było użycie „https” zamiast „openvpn” jako nazwy usługi do dodania. Okazuje się, że problem nie był zaporą ogniową. Byłem po prostu głupi i zapomniałem poprawnie skonfigurować mojego klienta, aby używał „tun” zamiast „tap”. Powyższe instrukcje działają idealnie.
Christopher
1
Zauważyłem problem z dodawaniem maskarady do całej strefy. To próbuje NAT NAT moich połączeń z interfejsem pętli zwrotnej, gdy uruchamiam inne usługi na localhost. Chciałbym ograniczyć maskaradę do zaledwie 10.8.0.0/16. Masz pomysł, jak to zrobić?
Christopher
1
Ten błąd może być przyczyną. Zasadniczo, jeśli twoją domyślną strefą jest publicstrefa, to maskaruje interfejs pętli zwrotnej. Okazuje się, że wcześniej ustawiłem moją domyślną strefę external, więc nigdy nie napotykaj problemu, który widzisz. Spróbuj przenieść usługi i adapter do innej strefy, aby sprawdzić, czy to pomoże. Daj mi znać :-)
garethTheRed