端口转发是网络运维中常见的技术之一,广泛应用于多种场景。例如,当你内网部署了Web服务器,需要将公网IP的某个端口映射到内网服务;或者想要在本机将某个端口重定向到另一端口,从而避免修改应用程序配置。本文将以CentOS系统为例,详细讲解端口转发的配置步骤和方法。
开启IP转发
CentOS系统默认禁用IP转发功能,需要手动开启。该功能控制着系统是否允许将接收到的数据包从一个网络接口转发到另一个接口,是实现端口转发的必要条件。
临时修改(重启后失效):
# echo 1 >/proc/sys/net/ipv4/ip_forward
临时启用后即刻生效,但系统重启后该设置将恢复为默认值0。
永久生效:
vi /etc/sysctl.conf
# 找到下面这行,把0改成1
net.ipv4.ip_forward = 1
# sysctl -p(立即生效)
参数值为0代表禁止转发,修改为1则表示允许转发。此步骤是后续所有转发规则生效的前提,若跳过此操作,后续配置将无法正常工作。

配置端口转发
下面通过一个典型需求来演示:当用户访问 172.16.4.247:728 时,自动将其流量转发至 172.16.4.97:80。简而言之,就是将公网IP的某个端口映射到内网另一台服务器的对应服务端口上。
两条iptables规则搞定:
# iptables -t nat -A PREROUTING -p tcp -d 113.108.110.61 --dport 728 -j DNAT --to-destination 172.16.4.97:80
# iptables -t nat -A POSTROUTING -p tcp -s 172.16.4.97 --sport 80 -j SNAT --to-source 172.16.4.247
# service iptables sa ve(保存到 /etc/sysconfig/iptables)
此外,也可直接修改iptables配置文件,实现相同效果:
-A PREROUTING -d 172.16.4.247/32 -p tcp -m tcp --dport 728 -j DNAT --to-destination 172.16.4.97:80
-A POSTROUTING -s 172.16.4.97/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 172.16.4.247
最后需要确保防火墙放行728端口,否则外部访问将被阻止:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 728 -j ACCEPT
配置完成后,重启防火墙服务以使规则生效:
# service iptables restart
本机端口转发
若仅需在本机内部进行端口重定向,操作则相对简单。例如,希望访问 https://ip:729 时实际看到 https://ip:80 的内容,只需添加一条REDIRECT规则即可:
[root@localhost sbin]# iptables -t nat -A PREROUTING -p tcp --dport 729 -j REDIRECT --to-ports 80
[root@localhost sbin]# service iptables sa ve
[root@localhost sbin]# service iptables restart
该场景常用于临时测试、端口迁移或避免改动应用程序的监听端口配置。需注意,REDIRECT规则仅在本地NAT表中有效,无法跨机器转发。
以上即为CentOS系统中最常用的两种端口转发配置方法。建议读者动手实践一遍,这比单纯记忆命令更加有效。
