Nat回环(Lan——>Lan端口映射原理)

本文介绍如何配置Nat回环实现局域网内的服务器通过域名访问自身,包括DNAT和SNAT的具体配置步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://www.cisco-club.com.cn/space-112942-do-blog-id-1438.html

Nat回环(Lan——>Lan端口映射原理)

Bati-gol 整理

 

应用背景:

局域网内网有服务器对外发布,基于对服务器的保护,内网用户需通过域名或者公网ip来访问内网服务器。如下图所示:

 

名词解释:

DNAT:转换目标ip地址。

SNAT:转换源ip地址。

需求:将外网202.96.128.580端口映射至内网192.168.2.1080端口,外网地址对应有域名,以对外服务。同时,内网无DNS服务器,内网用户通过公网DNS解析通过同样的公网域名访问内网web服务器,要求防火墙能将内网访问该域名80端口的请求再次定向到内网服务器,使得内部访问公网域名的数据直接返回给内网服务器,以节省互联网带宽。

 

数据流走向分析:内网服务器的真实ip和访问端口是192.168.2.1080,要能够访问到这个服务器资源,必须需要把访问的目标ip 202.96.128.5转换成192.168.2.10,这样访问数据包才会转回内网,否则数据包交到公网上,将访问不到真实的服务器。那么需要在设备上做一次DNAT(对访问服务器的数据做目标ip的转换)。

 

如果只在设备上做一次DNAT上网转换的数据包和转发流程如下图所示:

文中所列的数据包的结构均为:

第一步:封装访问到目标ip202.96.128.5的数据由客户端发出

第二步:在设备的LAN口接受到数据包,匹配DNAT规则,对数据包进行目标IP的转换

第三步:经过设备转换的数据包从lan口发出,交给局域网的真实服务器192.168.2.10.

第四步:服务器对访问请求做回应,它收到数据包的源ip192.168.2.3,成为封装回应的目标ip,那么数据包有内网服务器直接发给内网主机

第五步:内网主机收到一个源ip192.168.2.10的回应,和它发给目标ip202.96.128.5的请求不一致,所以数据包直接被丢弃。在客户端看来,访问服务器失败。

由以上的数据包流程可以看出,要保证内网客户端能访问到服务器,只做DNAT是不够的。

那么需要服务器将回应数据发回给网关设备,再由网关设备转回给客户端,客户端才会接受数据。流程图应该如下图所示:

那么要让服务器的数据发给网关,那么在服务器接收到的数据源IP是网关的IP,所以网关

发给服务器的数据包结构应该是:

这个数据包,和只做了一次DNAT从网关处发出的数据包

相比,源IP 做了转换。所以才需要在网关设备处再做一次SNAT

如果网关要代理内网上外网的话,那么也启用了SNAT,进行私有地址到公网地址的转换。

所以这里的SNAT,必须要设置条件,符合条件才转换,而且要比上网的SNAT优先匹配。否则会对上网产生影响。

先经过网关设备DNAT处理,再经过SNAT处理的数据包走向如下图:

由于在网关处做了DNAT和SNAT的转换,每做一次转换,设备都会记录一个链接,当服务器回应数据再经过网关时,网关会根据链接再做一次DNAT和SNAT,那么数据包发回给访问客户端的是:,对于客户端来说,它之前是发给202.96.128.5的访问请求,所以会接受数据包。

此外对于网关设备来说,数据包是由LAN传给LAN 的,所以还需放通防火墙的LAN--LAN规则。

 

 

应用举例

用户需求:

用户内网有一台服务器:192.168.0.1WAN1 口使用光纤接入,有公网IP 地址(202.x.x.x),该公网IP 地址对应一个域名:www.xxx.com,已经使用DNAT 做端口映射把服务器发布至公网,并可以在公网访问www.xxx.com;现在要求在局域网(192.168.0.0/24 连接在LAN 口),也可以通过访问域名:www.xxx.com 达到访问web server192.168.0.1,规则如下:

 

用一国内产品演示:

1)      做端口映射,注意外网接口选择LAN 

           2)  做SNAT:将源地址转换成LAN 口。

如果有Lan-Lan规则,放通规则。开放LAN1LAN1 的防火墙规则:

注意事项:

a)如果服务器在DMZ 区,则第二步可以省略,但要注意放通LANDMZ 的防火墙规则。

b)上面的方法也适用于WAN 口为ADSL 拨号使用动态域名的情况。

### DeepSeek 应用本地化部署后的内网 IP 访问配置 对于已经完成本地化部署的 DeepSeek 应用程序,在局域网环境中使其他设备能够通过内网 IP 进行访问,主要涉及以下几个方面的网络设置调整。 #### 1. 修改应用程序监听地址 默认情况下,某些应用程序可能仅绑定到 `localhost` 或者特定的外部接口。为了确保局域网中的其它设备可以连接至该服务器,需修改 DeepSeek 的配置文件使其监听所有可用网络接口或指定内部 IP 地址[^2]。 ```bash # 假设 deepseek 使用的是 Python Flask 框架作为 Web API 接口,则可以在启动命令中加入如下参数: python app.py --host=0.0.0.0 ``` 上述操作使得 DeepSeek 可以接受来自任何 IP 地址发起的请求,而不仅仅局限于本机回环地址(`127.0.0.1`)。 #### 2. 开放防火墙端口 如果操作系统上启用了防火墙服务,则还需要开放相应的 TCP 端口号以便让外界流量进入并到达目标进程。这通常涉及到更新系统的安全组策略或是直接编辑 iptables 规则来允许特定范围内的入站连接。 ```bash sudo ufw allow 80/tcp # 如果 web api 是运行在标准 HTTP 协议上的第 80 端口 sudo systemctl reload ufw ``` 此步骤确保了即使 DeepSeek 正确设置了监听选项,也不会因为被阻挡在外围防护之下而导致无法正常通信的情况发生。 #### 3. 设置路由器转发规则 (可选) 当希望从互联网侧也能间接触及位于私有子网下的 DeepSeek 实例时,就需要考虑 NAT 路由器层面的操作——即端口映射(Port Forwarding),将广域网(WAN)入口指向具体的 LAN 内部机器及其对应的服务端口。不过这一部分并非严格意义上的“内网”范畴,而是针对更广泛的远程接入场景所作准备。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值