NAT 在 CentOS 7(Firewalld) 上不起作用

Anb*_*nbu 2 nat routing centos firewalld

我已将 nat 配置为使我的 CentOS 7 成为路由器。我已经使用 firewalld 来做到这一点。但不幸的是它不起作用。我不知道是什么导致了这个问题。我在 Virtual Box 中尝试了相同的配置,它正在工作。如果我在生产服务器中进行了相同的配置,则不会。

Eth0 ip——我的静态ip

掩码-255.255.252.0

网关-我的 ISP 网关

eth1

ip-192.168.1.30

掩码-255.255.255.0

1) 启用数据包转发

vi /etc/sysctl.conf

added “net.ipv4.ip_forward=1”

sysctl –p 
Run Code Online (Sandbox Code Playgroud)

2)在firewalld中配置NAT

i) 将接口“eth1”集成到内部区域

Firewall-cmd --change-interface=eth1 --zone=internal --permanent
Run Code Online (Sandbox Code Playgroud)

• 伪装默认为“关闭”

ii) 将接口“eth0”集成到外部区域

Firewall-cmd --change-interface=eth0 --zone=external --permanent
Run Code Online (Sandbox Code Playgroud)

iii) 将“内部区域”更改为默认区域

Firewall-cmd --set-default-sone=internal --permanent
Run Code Online (Sandbox Code Playgroud)

iv) 添加 DNS 以通过“内部区域”

Firewall-cmd --zone=internal --add-service=dns –-permanent
Run Code Online (Sandbox Code Playgroud)

3) 保存防火墙配置

Firewall-cmd --reload

Firewall-cmd --complete-reload
Run Code Online (Sandbox Code Playgroud)

4)也在iptables里试过

Iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE

Iptables –A FORWARD –i eth1 –j ACCEPT

Echo > 1 /proc/sysc/net/ipv4/ip_forward

Service iptables restart
Run Code Online (Sandbox Code Playgroud)

小智 5

我没有在您的配置中看到您为外部接口设置伪装选项的位置。

firewall-cmd --zone=external --add-masquerade --permanent
Run Code Online (Sandbox Code Playgroud)

当我开始与臭名昭著的人一起玩时,这对我有用 firewalld

  • 伪装在外部区域中默认启用 (2认同)