温馨提示×

centos iptables如何做转发

小樊
37
2026-09-26 21:25:45
栏目: 智能运维

在 CentOS 上使用 iptables 做转发(端口转发 / NAT 转发),通常分为以下几种常见场景。下面以 CentOS 7 为例(CentOS 6 类似,CentOS 8 推荐用 nftables,但 iptables 仍可兼容)。


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

临时开启

sysctl -w net.ipv4.ip_forward=1

永久开启

vi /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward = 1

生效:

sysctl -p

二、本地端口转发(本机端口 → 本机端口)

例如:访问 80 端口,转发到 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

如果是本机访问自己:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080

三、端口映射到另一台服务器(DNAT 转发)

例如:

  • 本机 IP:192.168.1.10
  • 目标服务器:192.168.1.20:8080
  • 外网访问本机 80 → 转发到 192.168.1.20:8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.20:8080
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.20 --dport 8080 -j SNAT --to-source 192.168.1.10

或使用 MASQUERADE(适合动态 IP):

iptables -t nat -A POSTROUTING -j MASQUERADE

四、只允许特定 IP 转发

例如只允许 1.2.3.4 访问转发:

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

五、保存 iptables 规则(CentOS 7)

安装工具

yum install iptables-services -y

保存规则

service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

开机启动

systemctl enable iptables
systemctl start iptables

六、常见问题排查

1. 转发不生效

  • 是否开启 ip_forward
  • 是否有 filter 表规则阻止
iptables -L -n -v

2. 本机无法访问转发端口

  • 需要加 OUTPUT 链规则

3. 云服务器

  • 安全组 / 防火墙需放行端口
  • 某些云厂商禁止 NAT 转发

七、示例:完整端口转发配置

# 开启转发
sysctl -w net.ipv4.ip_forward=1

# 清空规则(谨慎)
iptables -F
iptables -t nat -F

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

# 允许转发
iptables -A FORWARD -p tcp -d 192.168.1.20 --dport 8080 -j ACCEPT

如果你有 具体场景(比如:

  • CentOS 版本
  • 公网 → 内网
  • Docker / K8s
  • 只转发 UDP )

可以告诉我,我给你定制规则。

0 踩