路由器回流--内网不能访问网站的问题

本文详细解释了路由器回流的概念及其实现原理。通过一个具体的例子,说明了在不支持回流的情况下,内部网络中的计算机为何不能访问同一网络内的服务器。同时,文章还介绍了如何通过修改数据包的源地址和端口实现正常的回流。

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

路由器回流简介

(端口映射特例)

回流是什么?最简单的一个实例:

网吧内网一台主机192.168.0.2建了个WEB服务站点端口80,然后在网关(其内网地址是192.168.0.1、公网地址为218.4.218.4)上映射80端口到192.168.0.2的80端口,这样INTERNET上就能以http://218.4.218.4:80的地址访问到192.168.0.2的WEB站点了。

然后出现了个问题,在同网吧的另一台电脑192.168.0.3上,键入http://218.4.218.4:80,却无法访问该WEB站点。

就这个现象,我们就称之为“不支持回流”了,这里指的是网关上的映射方式不支持回流,所以说“回流”一说,是针对映射方式而言的。

 

现在我们来看常规情况下,是为什么会发生这种情况的

我以前对iptables特别感兴趣的时候,曾对这个问题非常迷惑不解,直到去年为了考试,学习网络基础的时候才搞明白这个事情

 

过程如下:

192.168.0.3要请求访问218.4.218.4的80端口,根据它掌握的路由表,它本身是不知道电脑218.4.218.4在哪里的,所以把将这个数据包发送给它的默认路由,即电脑192.168.0.1。

注意:这个数据包的源地址是192.168.0.3、源端口假设是1025、目标地址是218.4.218.4、目标端口是80、SYN标志位为1、这是建立TCP连接的第一次握手。

 

如果“把目标地址为218.4.218.4的数据包发给了192.168.0.1”你听起来觉得有点矛盾,那么我解释一下:其实这个数据包的目标IP地址是218.4.218.4,目标MAC地址却是192.168.0.1的

 

 

电脑192.168.0.1接收到了这份数据包(因为它的身份是路由器,所以允许接收和转发目标地址不是自已、MAC地址却是自已接口 MAC地址的数据包),它分析这个数据包的目标地址,发现这个数据包是需要中转到电脑192.168.0.2:80去的,于是它把这个数据包转发给了电脑 192.168.0.2:80。

注意:这个数据包的源地址是192.168.0.3、源端口是1025、目标地址为192.168.0.2、目标端口为80、SYN标志位为1。我们要注意这个数据包在转发后发生了变化了,即目标地址变了。

电脑192.168.0.2顺利接到了数据包,它马上作出回应,发送一个数据包给电脑192.168.0.3。

注意:这个数据包的源地址是192.168.0.2、源端口是80、目标地址192.168.0.3、目标端口为1025、SYN标志位为1、ACK标志位为1、这是建立TCP连接的第二次握手。

电脑192.168.0.3顺利接到了数据包,然而它发现这是一个来自192.168.0.2:80的回应,因为ACK标志位值为1摆在那里呢。它想不起来什么时候给192.168.0.2:80这个目标对象发送过SYN请求,它认为这是一个错误的数据包,于是决定把这个数据包丢弃。然后继续等待 218.4.218.4:80的回应,一直等到超时。

而电脑192.168.0.2这边,它等192.168.0.3:1025的第三次握手请求包发送过来,以便建立一个TCP的连接。同样也没有结果,一直等到超时。三次握手在规定的时间内没有完成,访问宣布流产了。


那么怎么样才能正常访问呢?也就是说怎么样形成“回流”呢?

玄机在于电脑192.168.0.1把第一次握手的那个数据包在转发时,不仅要修改目标地址和端口,也要修改源地址和端口,我们来看一下情况会有什么不同:

电脑192.168.0.1接收到了这份数据包(因为它的身份是路由器,所以允许接收和转发目标IP地址不是自已、MAC地址却是自已接口MAC地址的数据包),它分析这个数据包的目标地址,发现这个数据包是需要中转到电脑192.168.0.2:80去的,于是它把这个数据包通过自已的5201端口转发给了电脑192.168.0.2:80,并在内存里面记录下来了,192.168.0.1:5201已定位给了192.168.0.3:1025。

注意:这个数据包的源地址是192.168.0.1、源端口是5201、目标地址为192.168.0.2、目标端口为80、SYN标志位为1。

电脑192.168.0.2顺利接到了数据包,它马上作出回应,发送一个数据包给电脑192.168.0.1。

注意:这个数据包的源地址是192.168.0.2、源端口是80、目标地址192.168.0.1、目标端口为5201、SYN标志位为1、ACK标志位为1、这是建立TCP连接的第二次握手。

电脑192.168.0.1顺利接到了数据包,检查内存记录发现,这个数据包真正的收货人是192.168.0.3:1025,于是它把这个数据包转发给192.168.0.3。

注意:这个数据包的的源地址是218.4.218.4、源端口为80、目标地址为192.168.0.3、目标端口为1025。我们要注意这个数据包在转发后发生变化了,即源地址变了。这很重要!为什么会变,因为在它心目当中,192.168.0.2:80早已定位给了218.4.218.4:80,映射规则使然。

电脑192.168.0.3顺利接到了数据包,发现期待已久的218.4.218.4:80终于有了回音,它兴奋不已的发出第三次的握手请求。

注意:这个数据包的源地址是192.168.0.3、源端口是1025、目标地址是218.4.218.4、目标端口是80、ACK标志位为1、这是建立TCP连接的第三次握手。

跟前面的数据包一样,这个数据包会从192.168.0.1那里中转给192.168.0.2

 

以后192.168.0.2:80和192.168.0.3:1025之间来往通信的数据包,全部由192.168.0.1负责中转,“回流”构成了



<think>好的,我现在需要帮助用户解决路由器外网端口映射后无法访问问题,并提供配置教程和常见问题排查方法。首先,我需要回忆端口映射的基本概念和配置步骤。根据用户提供的引用内容,引用[1]提到了使用快解析进行端口映射,特别是当有端口限制或没有公网IP时。而引用[2]则以TP-LINK路由器为例,说明了一般路由器的配置方法。 首先,配置教程部分。用户可能需要一个逐步的指导,所以应该分步骤说明。例如,进入路由器管理界面,找到虚拟服务器或端口映射的选项,填写内网IP和端口,设置协议类型,保存并重启。这部分需要详细但简洁,确保用户能跟随操作。 然后是常见问题排查。这里需要考虑各种可能性,比如公网IP是否为动态的(可能导致IP变化后无法访问),内网服务是否正常运行,防火墙设置是否阻止了端口,协议类型是否正确,以及ISP是否封锁了某些端口。例如,用户可能配置正确,但防火墙阻止了外部连接,或者他们使用的80端口被ISP封锁,导致无法访问。 另外,用户可能没有提到但需要注意的点包括:检查路由器的WAN口IP是否为公网IP,确认是否启用了NAT回流(以便内网通过公网IP访问),以及确认外部网络测试的方法是否正确(比如使用手机移动网络而非同一局域网内的设备测试)。 需要确保语言通俗易懂,避免技术术语过于复杂。同时,引用用户提供的参考资料,比如引用[1]和引用[2],在适当的位置加入引用标识,如配置步骤部分提到TP-LINK的例子时引用[2],提到快解析工具时引用[1]。 最后,生成的相关问题需要围绕端口映射的扩展应用和可能的问题,比如动态DNS的使用、不同品牌路由器的差异、如何检测端口是否开放等。这些问题应该能帮助用户进一步解决可能遇到的困难,或者扩展他们的应用场景。</think>### 路由器外网端口映射配置教程 #### 步骤1:确认公网IP - 登录路由器管理界面(通常为$192.168.1.1$或$192.168.0.1$),查看WAN口IP地址是否为公网IP[^2]。 - 若为私网IP(如$100.64.x.x$),需通过第三方工具(如快解析)实现内网穿透[^1]。 #### 步骤2:配置端口映射(以TP-LINK为例) 1. **进入虚拟服务器设置** 导航至「传输控制」→「虚拟服务器」,点击「添加」按钮。 2. **填写映射信息** - 服务端口:外网访问的端口(如$8080$) - 内部端口:内网服务的端口(如$80$) - IP地址:内网服务器的IP(如$192.168.1.100$) - 协议类型:选择「ALL」或「TCP/UDP」 3. **保存并重启** 应用配置后重启路由器生效[^2]。 ```plaintext # 示例配置 外网端口: 8080 → 内网IP: 192.168.1.100:80 ``` #### 步骤3:测试外网访问 通过手机移动网络访问`公网IP:外网端口`(如$123.45.67.89:8080$),验证是否成功。 --- ### 常见问题排查 1. **公网IP变动导致失效** - 动态公网IP会周期性变化,需搭配动态DNS(DDNS)服务。 - 使用`ping 域名`命令检查IP是否与路由器WAN口IP一致。 2. **内网服务未正常运行** -内网通过`telnet 内网IP:端口`测试服务是否可达(如$telnet 192.168.1.100 80$)。 3. **防火墙/安全组拦截** - 关闭电脑防火墙或添加入站规则(Windows防火墙设置)。 - 云服务器需在安全组开放对应端口。 4. **协议类型不匹配** - 若服务使用TCP协议,映射时需选择「TCP」而非「UDP」。 5. **ISP封锁端口** - 避免使用$80$、$443$等敏感端口,改用非常用端口(如$5080$)。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值