首先开启IP转发并配置iptables或firewalld规则,例如使用iptables -t nat -A PREROUTING将8080端口流量转发至192.168.1.100:80,并通过firewall-cmd --add-forward-port实现相同功能,最后用tcpdump和nc验证连通性。

如果您需要在LINUX系统中将一个网络端口的流量重定向到另一个端口或另一台主机,可以通过配置防火墙规则实现端口转发。这种操作常用于服务迁移、负载均衡或绕过网络限制。
本文运行环境:Dell PowerEdge服务器,Ubuntu 22.04
iptables是LINUX内核中经典的包过滤工具,通过修改其规则链可以实现灵活的端口映射功能。启用端口转发前需确保系统允许IP转发,并在nat表中添加PREROUTING和POSTROUTING规则。
1、开启系统的IP转发功能,编辑网络配置文件/etc/sysctl.conf,确保包含以下内容:net.ipv4.ip_forward = 1。
2、执行命令sysctl -p以重新加载配置并激活IP转发。
3、使用iptables命令添加PREROUTING规则,将进入本机某端口的流量重定向至目标地址,例如:iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80。
4、若目标地址不在本地网络,需添加SNAT规则以便正确返回响应:iptables -t nat -A POSTROUTING -j MASQUERADE。
5、保存当前规则防止重启后丢失,在Debian/Ubuntu系统中可使用iptables-save > /etc/iptables/rules.v4命令持久化规则。
firewalld是现代主流LINUX发行版默认的动态防火墙管理器,支持区域(zone)和服务级别的配置方式。通过其富规则(rich rules)或直接接口可完成端口转发设置。
1、确认firewalld服务正在运行:systemctl status firewalld,若未启动则使用systemctl start firewalld启用。
2、选择需要应用规则的网络区域,通常为public,可通过firewall-cmd --get-default-zone查看默认区域。
3、执行端口转发配置命令,例如将本机的80端口流量转发至内部IP 192.168.1.50的8080端口:firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.50:toport=8080 --permanent。
4、若仅指定toaddr而省略toport,则默认转发到相同端口号的目标设备。
5、重新加载firewalld配置使规则生效:firewall-cmd --reload。
6、验证规则是否成功添加:firewall-cmd --list-all,输出中应包含forward-port条目。
完成配置后必须进行连通性测试,确保数据流按预期路径传输。可通过外部客户端访问前端端口并观察后端服务日志或使用抓包工具分析流量走向。
1、从远程主机使用telnet或nc命令测试目标端口是否开放,例如:nc -zv your_server_ip 8080。
2、在目标服务器上监听相关端口,确认接收到的数据来自原始客户端或经由NAT处理后的网关地址。
3、使用tcpdump工具捕获关键接口上的数据包,如:tcpdump -i eth0 port 80 and host 192.168.1.100,检查是否有请求到达。
4、查看服务进程是否正常接收连接,使用ss -tulnp | grep :确认服务监听状态。
以上就是LINUX下如何进行端口转发_iptables与firewalld在LINUX中的端口映射配置的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号