温馨提示×

centos怎样配置iptables转发

小樊
36
2026-08-29 10:06:32
栏目: 智能运维

CentOS 上配置 iptables 转发(NAT 转发),通常用于 端口转发、网关、流量转发 等场景。下面按 最常用场景 给你一个完整说明(CentOS 6 / CentOS 7 通用,CentOS 7 注意 firewalld 冲突)。


一、开启内核 IP 转发(必须)

1️⃣ 临时开启(重启失效)

echo 1 > /proc/sys/net/ipv4/ip_forward

2️⃣ 永久开启

编辑:

vi /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward = 1

生效:

sysctl -p

验证:

cat /proc/sys/net/ipv4/ip_forward
# 输出 1 表示成功

二、确认 iptables 服务状态

CentOS 6

service iptables status

CentOS 7(如果已安装 iptables)

systemctl status iptables

⚠️ CentOS 7 默认使用 firewalld 如果启用了 firewalld,建议先关闭:

systemctl stop firewalld
systemctl disable firewalld

安装 iptables:

yum install -y iptables-services
systemctl enable iptables
systemctl start iptables

三、配置 NAT 转发(最常见)

示例需求

把访问 本机 8080 端口 的流量转发到 192.168.1.100:80


1️⃣ 配置 PREROUTING(端口转发)

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

2️⃣ 配置 POSTROUTING(SNAT / MASQUERADE)

iptables -t nat -A POSTROUTING -j MASQUERADE

或指定出口网卡(推荐):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

3️⃣ 允许转发流量

iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

四、保存 iptables 规则(否则重启丢失)

CentOS 6

service iptables save

CentOS 7

iptables-save > /etc/sysconfig/iptables

或使用服务保存:

service iptables save

五、完整示例(端口转发)

# 开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT 转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A POSTROUTING -j MASQUERADE

# 允许转发
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

六、转发全部流量(网关模式)

如果你想把 这台服务器当路由器 使用:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

七、查看 iptables 规则

iptables -t nat -L -n -v
iptables -L -n -v

八、常见问题排查

✅ 端口不通

# 查看是否命中规则
iptables -t nat -L -v

✅ 被防火墙拦截

iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

✅ 云服务器

  • 安全组是否放行端口
  • 是否禁止了 IP 转发

如果你愿意,可以告诉我:

  • ✅ CentOS 版本
  • ✅ 具体转发需求(端口转发 / 全局代理 / 内网穿透)
  • ✅ 是否在云服务器上

我可以给你 精确到命令级别 的配置方案。

0