为什么Google不返回我的搜索结果(无状态TCP连接重置)

本文探讨了GreatFirewall(GFW)的工作原理,特别是如何通过无状态TCP连接重置技术阻止用户访问特定网站。文章详细分析了客户端与Baidu、Bing、Google等服务器的TCP连接过程,并解释了GFW如何在TCP连接的SYN-ACK阶段注入RST包,破坏连接,以及如何通过跟踪IP地址定位潜在的RST包来源。

1、Great Firewall

它的存在会对境外涉及敏感内容的网站、IP地址、关键词、网址等进行过滤

结果就是:国内网络用户无法访问某些国外网站,国外网络用户也无法访问某些国内网站,其中有可以分成2类

  • 永久性无法访问
  • 暂时性无法访问

2、主要技术

  • 域名劫持
  • 特定IP地址封锁
  • 特定IP地址端口封锁
  • 无状态TCP连接重置
  • 特定TLS证书阻断
  • 明文HTTP协议关键字过滤阻断
  • 对破网软件的反制

本文主要介绍无状态TCP连接重置

3、DNS小测试

引入:客户端如何获得Baidu, Bing, Google服务器的IP地址?

打开浏览器,输入网址http://baidu.com/,从wireshark抓包工具抓到以下数据包:

174号数据包源IP地址为172.18.237.245为本机IP地址,通过查询,发现174号和175号数据包的目的地址202.192.18.1和202.192.18.2为DNS服务器地址,结果如下:

178号数据包为本地DNS服务器发回的数据包,它告诉客户端baidu.com的IP地址为111.13.100.91,

而180号数据包则发回一个ICMP数据包表示目的地址不可达。

打开浏览器,输入网址http://bing.com/,从wireshark抓包工具抓到以下数据包:

可以发现326号数据包为DNS请求数据包,它向本地DNS服务器请求bing.com的IP地址,而327号数据包则是本地DNS服务器发回的响应数据包,它告诉客户端bing.com的IP地址为204.79.197.200。

打开浏览器,输入网址http://google.com/,从wireshark抓包工具抓到以下数据包:

可以发现195号数据包为DNS请求数据包,它向本地DNS服务器请求google.com的IP地址,而196号数据包则是本地DNS服务器发回的响应数据包,它告诉客户端google.com的IP地址为216.58.200.238。

通过以上测试,可以发现:客户端是通过发送域名给DNS服务器来获得网站服务器的IP地址的。

 4、TCP连接的过程

接下来研究一下客户端实现Baidu, Bing, Google服务器的TCP连接的过程

在连接baidu.com的过程中捕获以下分组:

观察181、184、185号数据包,它们两端的端口号是分别是20564→80、80→20564、20564→80,发送的报文刚好符合TCP连接的三次握手,具体过程为:

(1)、客户端进程向服务器发送SYN报文段(SYN=1的报文段)请求建立连接;

(2)、服务器收到请求后,如果同意建立连接,就向客户端发送确认报文;

(3)、客户端接收到服务器的确认后,再次向服务器发送确认报文;

(4)、服务器接收到客户端的确认后,TCP连接建立,双方可以相互发送数据。

而连接bing.com和google.com的过程与此相同,捕获的数据包如下:

TCP三次握手对应328、332、333号数据包

TCP三次握手对应449、454、455号数据包

5、无状态TCP连接重置

什么技术导致Google不返回搜索结果?

GFW监控特定IP地址的所有数据包,若发现匹配的黑名单动作(例如 TLS加密连接的握手),其会直接在TCP连接握手的第二步即SYN-ACK之后伪装成对方向连接两端的计算机发送RST包(RESET)重置连接,使用户无法正常连接服务器。这种方法和特定IP地址端口封锁时直接丢弃数据包不一样,因为是直接切断双方连接因此封锁成本很低,故对于Google的多项(强制)加密服务例如Google文件、Google网上论坛、Google+和Google个人资料等的TLS加密连接都是采取这种方法予以封锁

 6、可能发出人造RST包的IP地址及其所属ISP

发出去的数据包ttl=64,Google返回值为50

ttl=53的Reset包?

64-53=11跳左右

而跟踪google.com的结果如下:

第11跳地址为 223.119.30.130

理论上发出的人造RST包来自这或之前的节点,该节点可以监视所有出口的流量!

7 、那有可能使Google返回搜索结果吗?

^-^

END

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/chuanzi/p/10424991.html

<think>我们正在处理用户关于三代荣威RX5车机使用安卓甲壳虫连接时出现IP地址拒绝访问错误的问题。根据用户描述,问题出现在通过ADB连接时,具体是IP地址拒绝访问。安卓甲壳虫(Android Debug Bridge,即ADB)通常通过TCP/IP协议连接设备,因此IP拒绝访问可能涉及网络配置或设备设置问题。 解决思路: 1. 确认ADB调试已开启:在车机系统设置中,需要开启开发者选项和USB调试(ADB调试)。 2. 确保车机与连接设备(如电脑或手机)在同一局域网内。 3. 检查车机的IP地址是否正确,并且没有防火墙或路由器设置阻止连接。 4. 尝试使用USB连接先进行授权,再切换到无线ADB。 具体步骤: ### 一、基础检查与设置 1. **开启车机ADB调试模式** - 进入车机设置 → 关于本机 → 连续点击“版本号”7次激活开发者选项。 - 返回设置 → 系统 → 开发者选项 → 开启“USB调试”和“网络ADB调试”(同车机可能名称略有差异,三代荣威RX5可能需要查找类似选项)。 2. **获取车机IP地址** - 在车机设置 → 网络状态中查看当前连接WiFi的IP地址(例如:192.168.1.100)。 - 或在车机开启ADB调试后,通过USB连接电脑,执行: ```bash adb shell ip addr show wlan0 ``` 查找类似`inet 192.168.x.x/24`的地址。 3. **验证同一网络** - 确保用于连接安卓甲壳虫的设备(如手机或电脑)与车机连接同一WiFi网络(同一子网)。 ### 二、连接方法 1. **首次连接需USB授权(关键步骤)** - 使用USB线连接车机与电脑(或使用OTG连接手机)。 - 在电脑上执行: ```bash adb devices # 查看设备是否出现,若未授权需在车机弹窗点允许 adb tcpip 5555 # 设置车机监听TCP端口5555 ``` - 断开USB,执行无线连接: ```bash adb connect 192.168.x.x:5555 # 替换为车机IP ``` 2. **直接网络ADB连接(若系统支持)** - 若车机开发者选项中有“网络ADB调试”开关,直接开启后即可通过IP连接,无需USB步骤。 - 在安卓甲壳虫输入车机IP和端口(默认5555)尝试连接。 ### 三、解决IP拒绝访问 若上述步骤后仍出现拒绝访问,可尝试: 1. **检查车机防火墙** - 车机可能自带防火墙规则,需通过USB执行: ```bash adb shell settings put global firewall_network_enabled 0 # 临时关闭防火墙(如有) ``` 2. **重启ADB服务** - 在车机端重启ADB服务: ```bash adb kill-server # 在电脑端执行 adb start-server # 重新启动 ``` - 或重启车机系统。 3. **更换连接端口** - 避免端口冲突,改用其他端口: ```bash adb tcpip 5566 # 设置新端口 adb connect 192.168.x.x:5566 ``` 4. **使用静态ARP绑定** - 若路由器ARP表错误导致,在电脑执行(需管理员权限): ```bash arp -s 192.168.x.x 车机MAC地址 # 将IP与车机MAC绑定 ``` 5. **检查路由器设置** - 禁用路由器的AP隔离(客户端隔离)功能,防止设备间通信被阻。 ### 四、替代方案 1. **USB网络共享** - 将手机通过USB连接车机,开启手机“USB网络共享”,使车机共享手机网络(确保手机与操作设备在同一网络)。 2. **ADB over WiFi工具** - 安装车机端APK(如`ADB WiFi`),通过图形界面获取连接命令(需root权限)。 3. **端口转发** - 若存在另一台已授权设备,可中转连接: ```bash adb -s 已授权设备 forward tcp:5555 tcp:5555 adb connect 本地IP:5555 # 通过已授权设备转发 ``` ### 五、常见错误排查 | 现象 | 解决方案 | |---------------------|----------------------------| | 连接后立即断开 | 检查车机电量(低于15%可能禁用ADB) | | 仅USB有效 | 确认执行过`adb tcpip`端口激活 | | 路由器屏蔽5555端口 | 更换端口或临时关闭路由器防火墙 | > ⚠️ 注意:部分车厂固件会限制ADB无线连接,若所有方法均无效,可能需刷机解除限制(如修改`build.prop`中`ro.adb.secure=0`)。 --- **§§相关问题§§** 1. 三代荣威RX5车机如何永久开启网络ADB调试? 2. 使用ADB连接车机时提示“未授权”如何解决? 3. 车机与手机在同一路由器下如何实现远程ADB连接? 4. 荣威RX5车机开发者选项隐藏设置如何调出?</think>针对三代荣威RX5车机使用安卓甲壳虫(ADB调试工具)连接时出现**IP地址拒绝访问错误**的问题,以下是系统化的解决方案,按操作顺序排列: --- ### 一、基础网络检查(必做) 1. **确认IP地址有效性** - 在车机设置 → 网络状态 → 查看当前WiFi分配的IP(如`192.168.1.100`) - 在电脑终端执行: ```bash ping 192.168.1.100 # 替换为车机IP ``` - 若超时,说明网络层通,检查: - 车机与电脑是否连接**同一路由器** - 路由器是否开启**AP隔离**(需关闭) - 车机防火墙是否禁用5555端口 2. **验证ADB端口监听** ```bash adb shell netstat -tuln | grep 5555 ``` - 正常应返回:`tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN` --- ### 二、ADB连接协议修复 #### 1. **重置ADB连接(关键步骤)** ```bash adb kill-server # 终止ADB服务 adb start-server # 重启服务 adb tcpip 5555 # 强制开启TCP/IP模式 adb connect 192.168.1.100:5555 # 重新连接 ``` #### 2. **处理认证问题** - 若提示`unauthorized`: 1. 用USB线临时连接车机与电脑 2. 在车机屏幕点击**允许USB调试** 3. 执行 `adb devices` 确认设备ID已授权 4. 重新执行无线连接 --- ### 三、车机系统配置修正 1. **开启网络ADB调试** - 进入车机:设置 → 开发者选项 → 开启 **"网络ADB调试"** (若开发者选项隐藏,在设置-关于本机中连点7次版本号激活) 2. **修改ADB策略文件**(需临时root) ```bash adb shell su echo 'persist.adb.tcp.port=5555' >> /system/build.prop # 设置永久端口 setprop service.adb.tcp.port 5555 # 立即生效 ``` 3. **关闭SELinux限制** ```bash adb shell setenforce 0 # 临时禁用SELinux ``` --- ### 四、防火墙与路由优化 1. **添加路由器端口转发** - 在路由器管理页设置: **外部端口**:5555 → **内部IP**:车机IP → **内部端口**:5555 ![](https://example.com/port_forward.png) *路由器配置示意图* 2. **创建电脑防火墙规则** ```powershell netsh advfirewall firewall add rule name="ADB_TCP" dir=in action=allow protocol=TCP localport=5555 ``` --- ### 五、替代连接方案 #### 1. **USB反向代理连接** ```bash adb usb # 切换回USB模式 adb tcpip 5555 # 重新开启TCP/IP adb connect 127.0.0.1:5555 # 通过本地代理 ``` #### 2. **使用ADB over WiFi工具** 在车机安装 [ADB WiFi](https://play.google.com/store/apps/details?id=com.ttxapps.wifiadb) 应用,通过图形界面一键开启服务: ![](https://example.com/wifiadb_ui.jpg) *应用操作界面* --- ### 六、深度修复(需解锁Bootloader) 若上述无效,可能需修改系统分区: 1. 提取 `boot.img` 2. 用Magisk修补镜像 3. 刷入修改后的boot分区 4. 安装网络ADB增强模块 $$ \text{成功率} \propto \frac{1}{\text{系统锁等级}^2} $$ > ⚠️ **风险提示**:修改系统可能导致车机失去保修,操作前备份关键分区: > ```bash > adb pull /dev/block/bootloader bl.img > ``` --- **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值