Linux端口转发到外网完全教程:iptables DNAT+SNAT实现内网服务暴露

一、什么是外网端口转发

Linux端口转发到外网,是指将Linux服务器上某个端口的流量,转发到外网(公网)的另一台服务器。这样做的典型场景是:你有一台内网服务器没有公网IP,但另一台海外服务器有公网IP,通过在内网服务器上配置端口转发,可以让用户访问海外服务器的公网IP端口时,实际访问到内网服务器的服务。

二、核心配置方法

场景说明

  • 服务器A(有公网IP):`203.0.113.10`,位于海外

  • 服务器B(无公网IP):`192.168.1.100`,位于内网,运行Web服务(80端口)

目标:用户访问`203.0.113.10:8080`时,实际访问到服务器B的80端口。

在服务器A(中转机)上配置

  1. 开启IP转发

```bash

echo 1 > /proc/sys/net/ipv4/ip_forward

```

  1. 添加iptables转发规则

```bash

DNAT:将公网8080端口流量转发到内网服务器B:80

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

SNAT:让返回数据包正确回到客户端

iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE

允许转发流量

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

```

  1. 保存规则

```bash

CentOS

service iptables save

Ubuntu

iptables-save > /etc/iptables/rules.v4

```

三、部署拓扑示意图

```mermaid

flowchart LR

User用户 -->|访问 203.0.113.10:8080| A服务器A\有公网IP\中转机

A -->|内网转发| B服务器B\无公网IP\实际Web服务

B -->|响应返回| A

A -->|返回给用户| User

```

四、关键注意事项

| 要点 | 说明 |

|------|------|

| 公网IP要求 | 中转机必须有公网IP |

| 网络可达 | 中转机必须能访问到内网服务器B |

| 防火墙放行 | 中转机的公网端口(8080)需开放 |

| 仅限TCP | 如需UDP转发,需额外配置 |

五、高级方案:内网穿透工具

如果中转机无法直接访问内网服务器,可使用frp等反向代理工具,在内网服务器上主动连接到中转机,建立隧道。

一句话总结:在中转机上开启IP转发 → 添加iptables DNAT+SNAT规则 → 确保防火墙放行端口,即可实现Linux端口转发到外网。

另外,可以借助 80KM 端口流量转发程序,搭建流量中转节点,所有外网访问经过节点再回源,彻底隐藏真实 IP。支持 80、443 常用网页端口,兼容各大系统。

相关推荐
Championship.23.246 小时前
Linux 3.0 锁机制与故障排查详解
linux·运维·服务器
天疆说6 小时前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
风123456789~8 小时前
【Linux专栏】ls 排除某个文件
linux·运维·服务器
IpdataCloud8 小时前
担心IP暴露隐私?用安全IP查询工具自查,三步配置网络出口
网络·tcp/ip·安全·ip
xy34539 小时前
wireshark 如何捕获信息
网络·测试工具·渗透测试·wireshark
IT曙光9 小时前
ubuntu apt-get离线源制作
linux·ubuntu
其实防守也摸鱼9 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚9 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
玖玥拾10 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
土星云SaturnCloud10 小时前
边缘计算驱动绿氢生产过程智能寻优:电解槽级实时优化技术解析
服务器·人工智能·ai·边缘计算