Configuration d'OpenVPN pour utiliser Firewalld au lieu d'iptables sur Centos 7

14

J'ai besoin de configurer OpenVPN sur Centos 7 en utilisant firewalld.

J'ai utilisé iptables sur Centos 6.5 et je n'ai eu qu'à ajouter les lignes suivantes à /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
la source

Réponses:

31

Utilisez la firewall-cmdcommande.

En supposant que vous ouvrez le pare-feu à OpenVPN sur la zone par défaut, exécutez les commandes suivantes. Si vous l'exécutez sur une zone non définie par défaut, ajoutez-la --zone=<zone>aux commandes.

Remarque: Si vous utilisez la publiczone par défaut pour votre carte réseau externe, votre interface de bouclage peut également être masquée (en fonction de la version firewalldque vous utilisez), ce qui peut poser des problèmes si vous exécutez un service (tel que mySQL) auquel vous accédez localement.

D'abord, listez ce qui est actuellement ouvert:

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

Ensuite, ajoutez le openvpnservice:

# firewall-cmd --add-service openvpn
success

Une vérification rapide:

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

Ce qui précède permettra openvpnde travailler, que vous pouvez maintenant tester. Cependant, cela ne durera pas plus de redémarrages. Pour le rendre permanent, ajoutez l' --permanentoption:

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

Notez que cette dernière commande n'ouvre le port qu'au prochain redémarrage, vous devez donc utiliser les deux commandes.

Enfin, ajoutez la mascarade:

# firewall-cmd --add-masquerade
success

Et rendez-le permanent après un redémarrage:

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

Confirme-le:

# firewall-cmd --query-masquerade
yes

Notez que si votre connexion OpenVPN entrante se trouve dans une zone différente de votre connexion Internet, la mascarade devrait être sur cette dernière et vous devrez utiliser l' --zone=<zone>option avec les --add-masqueradecommandes.

garethTheRed
la source
Comment dites-vous quelle est la définition du service openvpn dans firewalld? Par exemple, comment pouvez-vous vérifier qu'il autorise openvpn sur TCP 443?
Christopher
@Christopher - Les fichiers de service se trouvent dans /lib/firewalld/services/. Dans votre cas, il se trouvera openvpn.xmldans ce répertoire. Les services définis par l'utilisateur entrent /etc/firewalld/services. Notez que le port par défaut pour openvpn est UDP/1194.
garethTheRed
1
Merci. J'avais un problème et je pensais que c'était peut-être un pare-feu. La seule chose que j'ai faite différemment des instructions ci-dessus a été d'utiliser "https" au lieu de "openvpn" comme nom de service à ajouter. Il s'avère que ce n'était pas un pare-feu avec le problème. J'étais juste stupide et j'ai oublié de configurer correctement mon client pour utiliser "tun" au lieu de "tap". Les instructions ci-dessus fonctionnent parfaitement.
Christopher
1
J'ai remarqué un problème avec l'ajout de mascarade à toute la zone. Cela tente de NAT mes connexions à l'interface de bouclage, lorsque j'exécute d'autres services sur localhost. Je voudrais limiter le masquage à seulement 10.8.0.0/16. Une idée de comment tu pourrais faire ça?
Christopher
1
Ce bogue peut en être la cause. Fondamentalement, si votre zone par défaut est la publiczone, elle masque l'interface de bouclage. Il s'avère que j'avais précédemment défini ma zone par défaut external, donc je n'ai jamais fait face au problème que vous voyez. Essayez de déplacer les services et l'adaptateur vers une autre zone pour voir si cela aide. Faites-moi savoir :-)
garethTheRed