在 Centos 7 上配置 OpenVPN 以使用 Firewalld 而不是 iptables

Fxb*_*aez 16 iptables centos openvpn firewalld

我需要在 Centos 7 上使用firewalld.

我在 Centos 6.5 上使用了 iptables,只需要添加以下几行/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.
Run Code Online (Sandbox Code Playgroud)

gar*_*Red 35

使用firewall-cmd命令。

假设您在默认区域上向 OpenVPN 开放防火墙,请执行以下命令。如果您在非默认区域上运行它,请添加--zone=<zone>到命令中。

注意:如果您public为面向外部的网络适配器使用默认区域,那么您的环回接口也可能被伪装(取决于firewalld您正在运行的版本),如果您正在运行访问的服务(例如 mySQL),这可能会导致问题当地。

首先,列出当前打开的内容:

# firewall-cmd --list-services
http https ssh
Run Code Online (Sandbox Code Playgroud)

接下来,添加openvpn服务:

# firewall-cmd --add-service openvpn
success
Run Code Online (Sandbox Code Playgroud)

快速检查:

# firewall-cmd --list-services
http https openvpn ssh
Run Code Online (Sandbox Code Playgroud)

以上将允许openvpn工作,您现在可以测试。但是,它不会持续重启。要使其永久化,请添加--permanent选项:

# firewall-cmd --permanent --add-service openvpn`
success
Run Code Online (Sandbox Code Playgroud)

请注意,最后一条命令在下次重新启动之前不会打开端口,因此您需要同时使用这两个命令。

最后,添加伪装:

# firewall-cmd --add-masquerade
success
Run Code Online (Sandbox Code Playgroud)

并在重新启动后使其永久化:

# firewall-cmd --permanent --add-masquerade
success
Run Code Online (Sandbox Code Playgroud)

确认它:

# firewall-cmd --query-masquerade
yes
Run Code Online (Sandbox Code Playgroud)

请注意,如果您的传入 OpenVPN 连接与面向 Internet 的连接位于不同的区域,则伪装应该在后者上,您需要将--zone=<zone>选项与--add-masquerade命令一起使用。