发布于2026-07-09 阅读(0)
扫一扫,手机访问
CentOS 7 要让机器真正当路由器用,必须先开启内核转发功能,也就是 ip_forward。这一步是基石——如果没开,后面所有配置的 iptables 或 firewalld 规则都会成摆设,因为数据包根本进不了转发的流程。

内核里有个叫 net.ipv4.ip_forward 的参数,默认值是0,也就是关着的。只改配置文件不生效,只 echo 临时写入重启就丢,所以得两条腿走路。
echo 1 > /proc/sys/net/ipv4/ip_forward/etc/sysctl.conf,确保有这么一行:net.ipv4.ip_forward = 1sysctl -p 重新加载配置sysctl net.ipv4.ip_forward 应该输出 net.ipv4.ip_forward = 1cat /proc/sys/net/ipv4/ip_forward 输出 1即使 ip_forward 打开了,firewalld 默认也会拦截转发流量。尤其是做 NAT 的场景,--add-masquerade 可不是“可选”的,而是必须做的步骤。
public):firewall-cmd --get-default-zonefirewall-cmd --permanent --add-masqueradefirewall-cmd --reloadfirewall-cmd --query-masquerade 返回 yes 才算成功--permanent 参数,或者 reload 之前没加 permanent,重启后配置就丢了CentOS 7 默认使用 firewalld,如果你手动写了 iptables 规则,又没停掉 firewalld,两者规则就会打架,转发通常就会静默失败。
systemctl stop firewalldsystemctl disable firewalldiptables-services 已安装)firewall-cmd --add-forward-port,别去碰 iptables 的 nat 表iptables -t nat -L -n,如果看到大量 firewalld 自动生成的链(比如 FORWARD_direct),说明 firewalld 还在接管,此时手写的 iptables 规则大概率被跳过很多“配置完了但不通”的问题,其实卡在更底层的连通性或策略上。
FORWARD 设为 REJECT,光靠 masquerade 不够;端口转发还需要显式放行对应的协议和端口,例如:firewall-cmd --permanent --add-port=80/tcp真正麻烦的其实不是开哪个开关,而是各层策略叠加后的隐式拒绝。可以把整个流程简单理解成:ip_forward 是门,masquerade 是钥匙,firewalld 的 FORWARD 策略是门锁,而客户端和服务端的网络可达性是门前的路。少哪一环,流量都到不了目的地。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9