如何在Linux上设置端口转发

来源:Vuejs社区作者:落伍者头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上设置端口转发》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上设置端口转发》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中,端口转发可以将发送到某个端口的网络请求转发到另一个端口甚至另一台主机,常用于服务暴露、网络穿透、负载均衡等场景。不同的实现方式各有特点,用户可以根据实际需求选择合适的方法。

如何在Linux上设置端口转发

一、使用iptables设置端口转发

iptables是Linux系统自带的防火墙工具,同时也支持端口转发功能,适合需要持久化规则、系统级转发的场景。使用前需要确保系统开启了IP转发功能。

1. 开启IP转发

临时开启IP转发可以执行以下命令:

# 临时开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 验证是否开启,输出1表示已开启
cat /proc/sys/net/ipv4/ip_forward

如果需要永久开启,需要修改/etc/sysctl.conf文件,添加或修改以下配置:

net.ipv4.ip_forward = 1

修改后执行sysctl -p让配置生效。

2. 配置端口转发规则

假设需要将本机的8080端口转发到本机的80端口,执行以下iptables规则:

# 添加PREROUTING规则,处理外部发送到8080端口的请求
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
# 如果需要转发到另一台主机,比如转发到192.168.0.2的80端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.2:80
# 添加POSTROUTING规则,处理转发出去的请求
iptables -t nat -A POSTROUTING -j MASQUERADE

3. 保存iptables规则

iptables规则默认重启后会丢失,需要手动保存:

# 保存规则,不同系统保存命令可能不同,以下为常见方式
iptables-save > /etc/iptables.rules
# 开机自动加载规则,可在/etc/rc.local中添加
iptables-restore < /etc/iptables.rules

二、使用socat设置端口转发

socat是一款功能强大的网络工具,支持多种协议的端口转发,配置简单,适合临时转发或者轻量级场景,不需要复杂的规则配置。

1. 安装socat

不同Linux发行版的安装命令如下:

# Ubuntu/Debian系统
apt install socat -y
# CentOS/RHEL系统
yum install socat -y

2. 配置端口转发

将本机8080端口转发到本机80端口的命令如下:

# 前台运行转发,转发TCP请求
socat TCP-LISTEN:8080,fork,reuseaddr TCP:127.0.0.1:80

如果需要转发到远程主机,比如将本机8080端口转发到192.168.0.2的80端口:

socat TCP-LISTEN:8080,fork,reuseaddr TCP:192.168.0.2:80

如果需要后台运行,可以加上&符号,或者使用nohup命令:

nohup socat TCP-LISTEN:8080,fork,reuseaddr TCP:127.0.0.1:80 > /var/log/socat.log 2>&1 &

三、使用SSH隧道设置端口转发

SSH隧道适合跨网络的端口转发场景,不需要在目标机器上安装额外工具,只要支持SSH连接即可,安全性较高。

1. 本地端口转发

将远程主机的端口转发到本地,比如将远程主机192.168.0.2的80端口转发到本地的8080端口:

# -L 表示本地转发,格式为本地端口:远程主机:远程端口 远程SSH用户@远程SSH主机
ssh -L 8080:127.0.0.1:80 user@192.168.0.2 -N

参数说明:-N表示不执行远程命令,只做转发;-f可以后台运行SSH连接。

2. 远程端口转发

将本地端口转发到远程主机,比如将本地的80端口转发到远程主机192.168.0.2的8080端口,让远程主机可以访问本地服务:

# -R 表示远程转发,格式为远程端口:本地主机:本地端口 远程SSH用户@远程SSH主机
ssh -R 8080:127.0.0.1:80 user@192.168.0.2 -N

四、端口转发验证与问题排查

配置完成后可以使用netstat或者ss命令验证端口监听状态:

# 查看8080端口是否被监听
ss -tuln | grep 8080
# 或者
netstat -tuln | grep 8080

也可以使用telnet或者curl命令测试转发是否生效:

# 测试本地8080端口是否可以访问
curl http://127.0.0.1:8080
# 如果是转发到远程,测试远程端口
curl http://192.168.0.2:8080

如果转发不生效,首先检查IP转发是否开启,然后检查防火墙是否拦截了对应端口,最后检查转发规则是否配置正确。使用iptables的话可以通过iptables -t nat -L -n -v查看规则是否生效,socat和SSH隧道可以查看进程是否在运行。

五、不同方式对比

以下是三种端口转发方式的对比,方便用户选择:

实现方式适用场景持久化复杂度
iptables系统级、持久化转发、高并发场景需要手动保存规则较高
socat临时转发、轻量级场景、简单配置需要后台运行进程
SSH隧道跨网络转发、安全场景、无需额外安装工具需要保持SSH连接中等

Linux端口转发iptablessocatssh_tunnel修改时间:2026-07-16 19:51:35

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。