温馨提示×

centos iptables怎么转发

小樊
43
2026-10-05 15:47:17
栏目: 智能运维

在 CentOS 上用 iptables 做端口/流量转发(DNAT),通常分为几种常见场景。下面给你最实用、最常见的做法。


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

临时开启

sysctl -w net.ipv4.ip_forward=1

永久开启

vi /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward = 1

生效:

sysctl -p

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

方法 1:REDIRECT(仅本机)

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

适合:

  • 本机服务端口映射
  • 不需要跨 IP

三、转发到另一台机器(DNAT,最常用)

示例:访问本机 1122 端口 → 转发到 192.168.1.100:22

iptables -t nat -A PREROUTING -p tcp --dport 1122 \
  -j DNAT --to-destination 192.168.1.100:22

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

如果是 CentOS 7 默认 firewalld:

systemctl stop firewalld
systemctl disable firewalld

四、SNAT(回包用,跨网段必须)

如果目标机器和客户端不在同一网段:

iptables -t nat -A POSTROUTING -d 192.168.1.100 -p tcp --dport 22 \
  -j SNAT --to-source 本机内网IP

或用 MASQUERADE(动态 IP 推荐):

iptables -t nat -A POSTROUTING -j MASQUERADE

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

CentOS 6

service iptables save

CentOS 7(无 service)

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

六、常见示例汇总

1️⃣ 公网 IP:80 → 内网 Web

iptables -t nat -A PREROUTING -p tcp --dport 80 \
  -j DNAT --to 192.168.1.10:80
iptables -t nat -A POSTROUTING -j MASQUERADE

2️⃣ SSH 端口转发

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

七、检查命令

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

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8)
  • 是 本机转发 还是 跨机器
  • 内网 / 公网 IP 情况

我可以直接给你一套可用命令。

0 踩