温馨提示×

centos iptables如何转发

小樊
47
2026-09-20 23:59:32
栏目: 智能运维

在 CentOS 中使用 iptables 做转发(端口转发 / NAT 转发),通常分为以下几种常见场景。下面以 CentOS 7 为例(CentOS 6 也基本一样,只是服务管理方式不同)。


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

临时开启

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

永久开启

编辑:

vim /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

适用于:把外网访问 80 端口的请求转到本机 8080


三、将流量转发到另一台服务器(DNAT)

示例:

本机 2222 端口 转发到 192.168.1.100:22

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

或者更通用:

iptables -t nat -A POSTROUTING -j MASQUERADE

四、放行转发流量(FORWARD 链)

CentOS 默认可能 DROP FORWARD:

iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

五、保存 iptables 规则

CentOS 7(使用 iptables-services)

yum install iptables-services -y
systemctl enable iptables
service iptables save

CentOS 6

service iptables save

六、常见示例汇总

1️⃣ 外部访问 A 服务器 3306 → B 服务器 3306

iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 192.168.1.200:3306
iptables -t nat -A POSTROUTING -j MASQUERADE

2️⃣ 只允许某 IP 转发

iptables -t nat -A PREROUTING -s 1.2.3.4 -p tcp --dport 3389 -j DNAT --to 10.0.0.5:3389

七、排查常见问题

  1. 转发不生效
    • 没开 ip_forward
    • FORWARD 链被 DROP
  2. 能连但无响应
    • 回包路由不对(MASQUERADE 没配)
  3. CentOS 7 默认 firewalld
    systemctl stop firewalld
    systemctl disable firewalld
    

如果你能说明:

  • CentOS 版本
  • 本机转发 还是 跨服务器
  • 具体端口和 IP

我可以给你一份精准可用的 iptables 规则

0