Configurare OpenVPN per usare Firewalld invece di iptables su Centos 7


14

Ho bisogno di configurare OpenVPN su Centos 7 usando firewalld.

Ho usato iptables su Centos 6.5 e ho dovuto solo aggiungere le seguenti righe a /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.

Risposte:


31

Usa il firewall-cmdcomando

Supponendo che stai aprendo il firewall fino a OpenVPN nella zona predefinita, esegui i seguenti comandi. Se lo stai eseguendo in una zona non predefinita, quindi aggiungi --zone=<zone>ai comandi.

Nota: se si utilizza la publiczona predefinita per la scheda di rete esterna, è possibile anche mascherare l'interfaccia di loopback (in base alla versione firewalldin esecuzione) che può causare problemi se si esegue un servizio (come mySQL) a cui si accede localmente.

Innanzitutto, elenca ciò che è attualmente aperto:

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

Successivamente, aggiungi il openvpnservizio:

# firewall-cmd --add-service openvpn
success

Un rapido controllo:

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

Quanto sopra consentirà openvpndi funzionare, che ora è possibile testare. Tuttavia, non durerà oltre i riavvii. Per renderlo permanente, aggiungi l' --permanentopzione:

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

Si noti che quest'ultimo comando non apre la porta fino al prossimo riavvio, quindi è necessario utilizzare entrambi i comandi.

Infine, aggiungi la maschera:

# firewall-cmd --add-masquerade
success

E renderlo permanente dopo un riavvio:

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

Confermalo:

# firewall-cmd --query-masquerade
yes

Nota che se la tua connessione OpenVPN in entrata si trova in una zona diversa dalla tua connessione Internet, la mascherata dovrebbe essere su quest'ultima e dovrai usare l' --zone=<zone>opzione con i --add-masqueradecomandi.


Come si dice qual è la definizione del servizio openvpn in firewalld? Ad esempio, come è possibile verificare che consenta openvpn su TCP 443?
Christopher

@Christopher - I file di servizio si trovano in /lib/firewalld/services/. Nel tuo caso, sarà openvpn.xmlall'interno di quella directory. Entra in servizio definito dall'utente /etc/firewalld/services. Si noti che la porta predefinita per openvpn è UDP/1194.
GarethTheRed

1
Grazie. Stavo avendo un problema e ho pensato che potesse essere firewalld. L'unica cosa che ho fatto diversamente dalle istruzioni precedenti è stata usare "https" invece di "openvpn" come nome del servizio da aggiungere. Si scopre, non era firewalld con il problema. Ero solo stupido e ho dimenticato di configurare correttamente il mio client per usare "tun" invece di "tap". Le istruzioni sopra funzionano perfettamente.
Christopher

1
Ho notato un problema con l'aggiunta di mascheramento all'intera zona. Questo tenta di NAT le mie connessioni all'interfaccia di loopback, quando eseguo altri servizi su localhost. Vorrei limitare il mascheramento a solo il 10.8.0.0/16. Hai idea di come potresti farlo?
Christopher

1
Questo errore potrebbe essere la causa. Fondamentalmente, se la tua zona predefinita è la publiczona, allora maschera l'interfaccia di loopback. Si è scoperto che in precedenza avevo impostato la mia zona predefinita external, quindi non ho mai affrontato il problema che stai vedendo. Prova a spostare i servizi e l'adattatore in un'altra zona per vedere se questo aiuta. Fammi sapere :-)
garethTheRed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.