Configurando o OpenVPN para usar o Firewalld em vez de iptables no Centos 7

14

Eu preciso configurar o OpenVPN no Centos 7 usando firewalld.

Eu usei o iptables no Centos 6.5 e só precisei adicionar as seguintes linhas em /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
fonte

Respostas:

31

Use o firewall-cmdcomando

Supondo que você esteja abrindo o firewall até o OpenVPN na zona padrão, execute os seguintes comandos. Se você estiver executando em uma zona não padrão, adicione --zone=<zone>aos comandos.

Nota: Se você usar a publiczona padrão para o adaptador de rede externo, sua interface de loopback também poderá ser mascarada (dependendo da versão em firewalldexecução), o que pode causar problemas se você estiver executando um serviço (como o mySQL) acessado localmente.

Primeiro, liste o que está aberto no momento:

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

Em seguida, adicione o openvpnserviço:

# firewall-cmd --add-service openvpn
success

Uma verificação rápida:

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

O acima permitirá openvpntrabalhar, que você pode testar agora. No entanto, não vai durar mais do que reiniciar. Para torná-lo permanente, adicione a --permanentopção:

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

Observe que esse último comando não abre a porta até a próxima reinicialização, portanto, você precisa usar os dois comandos.

Por fim, adicione o disfarce:

# firewall-cmd --add-masquerade
success

E torne-o permanente após uma reinicialização:

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

Confirme:

# firewall-cmd --query-masquerade
yes

Observe que, se a sua conexão OpenVPN de entrada estiver em uma zona diferente da sua conexão com a Internet, o disfarce deverá estar na última e você precisará usar a --zone=<zone>opção com os --add-masqueradecomandos.

garethTheRed
fonte
Como você diz qual é a definição do serviço openvpn no firewalld? Por exemplo, como você pode verificar se está permitindo o openvpn pelo TCP 443?
Christopher
@Christopher - os arquivos de serviço estão localizados em /lib/firewalld/services/. No seu caso, ele estará openvpn.xmldentro desse diretório. Serviços definidos pelo usuário entram /etc/firewalld/services. Observe que a porta padrão para o openvpn é UDP/1194.
perfil completo de garethTheRed
1
Obrigado. Eu estava tendo um problema e pensei que poderia ser firewalld. A única coisa que fiz de maneira diferente das instruções acima foi usar "https" em vez de "openvpn" como o nome do serviço a ser adicionado. Acontece que não foi firewall com o problema. Eu estava apenas sendo burro e esqueci de configurar meu cliente corretamente para usar "tun" em vez de "tap". As instruções acima funcionam perfeitamente.
Christopher
1
Percebi um problema ao adicionar mascarada a toda a zona. Isso tenta NAT minhas conexões com a interface de loopback, quando estou executando outros serviços no host local. Gostaria de limitar o mascaramento a apenas 10.8.0.0/16. Alguma idéia de como você pode fazer isso?
Christopher
1
Esse bug pode ser a causa. Basicamente, se a sua zona padrão for a publiczona, ela mascarará a interface de loopback. Acontece que eu já havia definido minha zona padrão externalpara nunca ter enfrentado o problema que está vendo. Tente mover os serviços e o adaptador para outra zona para ver se isso ajuda. Deixe-me saber :-)
garethTheRed