温馨提示×

centos iptables怎样做转发

小樊
49
2026-09-05 19:58:21
栏目: 智能运维

在 CentOS 上使用 iptables 做转发(端口转发 / 流量转发),通常分为三种常见场景。下面按最常用、最清晰的方式说明。


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

iptables 转发依赖内核转发功能。

临时开启

sysctl -w net.ipv4.ip_forward=1

永久开启

编辑:

vi /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward = 1

生效:

sysctl -p

二、本机端口转发(本机 80 → 本机 8080)

例如:访问 CentOS:80 转发到 CentOS:8080

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

✅ 仅对本机外部访问生效
✅ 本机 localhost 访问不生效(如需本机也生效,加 OUTPUT 规则)

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 转发过去
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 MASQUERADE

或简化版(SNAT):

iptables -t nat -A POSTROUTING -j MASQUERADE

四、允许转发流量(FORWARD 链)

如果 CentOS 是“中转机”,必须允许转发:

iptables -A FORWARD -p tcp -d 192.168.1.20 --dport 8080 -j ACCEPT

或简单允许所有(不推荐生产):

iptables -P FORWARD ACCEPT

五、保存 iptables 规则(CentOS 6/7)

CentOS 6

service iptables save

CentOS 7(使用 iptables-services)

yum install iptables-services
systemctl enable iptables
systemctl start iptables
iptables-save > /etc/sysconfig/iptables

六、常见示例汇总

1️⃣ 公网 IP:2222 → 内网 10.0.0.5:22

iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to 10.0.0.5:22
iptables -t nat -A POSTROUTING -j MASQUERADE

2️⃣ 只允许某 IP 转发

iptables -A FORWARD -s 1.2.3.4 -j ACCEPT
iptables -A FORWARD -j DROP

七、排查常见问题

# 查看 nat 规则
iptables -t nat -L -n -v

# 查看转发是否开启
cat /proc/sys/net/ipv4/ip_forward

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

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8)
  • 本机转发 还是 跨服务器转发
  • 公网 / 内网环境

我可以给你精确可复制的配置

0