在Centos操作系统中,端口映射是一种将来自外部网络的请求定向到内部网络特定终端的技术,它通过将外部网络请求的目标地址和端口映射到内部网络对应的地址和端口,实现了外部网络访问内部网络的功能,端口映射技术广泛应用于跨越网络的远程管理、访问内部网络的应用和服务。
实现步骤
1. 安装iptables工具

首先需要安装iptables工具,这是配置Linux内核防火墙规则的工具,可以通过以下命令进行安装:
- yum install y iptables
2. 启用IP转发
为了使数据包能够在不同网络之间转发,需要启用IP转发功能,可以通过修改/etc/sysctl.conf
文件来实现:
- echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
- sysctl p
3. 配置防火墙规则
使用iptables命令配置端口映射规则,假设有两台服务器A和B,服务器A有两块网卡,一块接内网(eth0),一块接外网(eth1),服务器B只有一块内网网卡(eth0),我们希望访问服务器A的7890端口时跳转至服务器B的80端口,具体配置如下:
停止并重新配置iptables规则:

- service iptables stop
添加PREROUTING和POSTROUTING规则:
- iptables t nat A PREROUTING d 192.168.0.222 p tcp dport 7890 j DNAT todestination 10.0.0.10:80
- iptables t nat A POSTROUTING d 10.0.0.10 p tcp dport 80 j SNAT tosource 192.168.0.49
- iptables A FORWARD o eth0 d 10.0.0.10 p tcp dport 80 j ACCEPT
- iptables A FORWARD i eth0 s 10.0.0.10 p tcp sport 80 j ACCEPT
保存并重启iptables服务:
- service iptables save
- service iptables restart
4. 验证配置
可以通过以下命令查看iptables规则,确认配置是否生效:
- iptables t nat L n linenumber
常见问题解答
问题1:如何在CentOS上删除已配置的端口映射规则?
答:可以使用以下命令删除指定的端口映射规则,要删除之前配置的7890端口映射规则,可以使用以下命令:
- iptables t nat D PREROUTING 1
- iptables t nat D POSTROUTING 1
- iptables D FORWARD 1
- iptables D FORWARD 2
- service iptables save
- service iptables restart
数字1和2表示规则在链中的位置编号,可以通过iptables t nat L n linenumber
查看具体编号。
问题2:如何更改已配置的端口映射规则中的端口号?
答:要更改已配置的端口映射规则中的端口号,可以先删除旧的规则,然后添加新的规则,要将原来的7890端口改为7000端口,可以先删除旧规则,再添加新规则:
- iptables t nat D PREROUTING d 192.168.0.222 p tcp dport 7890 j DNAT todestination 10.0.0.10:80
- iptables t nat D POSTROUTING d 10.0.0.10 p tcp dport 80 j SNAT tosource 192.168.0.49
- iptables A FORWARD o eth0 d 10.0.0.10 p tcp dport 80 j ACCEPT
- iptables A FORWARD i eth0 s 10.0.0.10 p tcp sport 80 j ACCEPT
- 添加新的规则
- iptables t nat A PREROUTING d 192.168.0.222 p tcp dport 7000 j DNAT todestination 10.0.0.10:80
- iptables t nat A POSTROUTING d 10.0.0.10 p tcp dport 80 j SNAT tosource 192.168.0.49
- iptables A FORWARD o eth0 d 10.0.0.10 p tcp dport 80 j ACCEPT
- iptables A FORWARD i eth0 s 10.0.0.10 p tcp sport 80 j ACCEPT
- service iptables save
- service iptables restart
这样,新的端口映射规则就生效了,访问服务器A的7000端口时会跳转至服务器B的80端口。