Skip to content

ping 流量和系统代理的辨析

  1. ICMP 协议 ping 命令使用的是 ICMP 协议,该协议用于发送网络诊断信息,如回显请求和回显应答。ICMP 协议属于网络层协议,而不是传输层协议。
  2. 系统代理与 ICMP 系统代理(如 HTTP 代理或 SOCKS 代理)主要用于应用层协议(如 HTTP、HTTPS)的流量,而不是网络层协议。因此,ping 流量通常不会经过系统代理。
  3. TCP 和 UDP 协议 TCP(传输控制协议) 和 UDP(用户数据报协议) 都属于传输层协议,它们在网络通信中用于数据的传输。TCP 提供可靠的连接性和数据传输,而 UDP 则提供不可靠但低延迟的通信。ping 命令不使用这两种协议。 代理 ICMP 流量(如 ping),则需要使用虚拟网卡。

DNS 拦截加速

原理 DNS 拦截:当你访问某个网站(如 GitHub)时,DNS 服务器会将域名解析为 IP 地址。DNS 拦截加速通过拦截这些 DNS 请求,将域名解析到特定的、更快的服务器上,以减少延迟和提高访问速度。 CDN 优化:一些加速工具可能使用内容分发网络(CDN)技术,通过将请求重定向到地理位置更近或负载更低的服务器来加速访问。 工作方式 拦截 DNS 请求,重写解析结果,将流量导向优化后的服务器或 CDN 节点。 这种方式不加密用户的流量,仅通过优化路径来减少延迟。

当设备同时开启热点和VPN时,连接到该设备的子设备的流量通常不会通过VPN代理信道

由于网络路由和NAT的工作原理以及设备配置的限制。以下是详细原因:

  1. 网络路由优先级 当设备A(主设备)开启VPN并设置为热点时,它通常会有两条主要的网络路径:
    一条通过本地互联网连接(例如Wi-Fi或移动数据)。
    一条通过VPN连接。
    设备A通过本地网络连接将子设备的流量转发到互联网。即使设备A本身的流量通过VPN转发,但其热点功能通常不会自动将子设备的流量通过VPN转发。这是因为默认的路由表和NAT规则未配置为这样做。

  2. NAT(网络地址转换) 设备A充当NAT设备,将子设备的私有IP地址转换为设备A的公共IP地址(或VPN IP地址,如果VPN连接了)。默认情况下,设备A的NAT功能将流量通过其本地网络连接路由,而不是通过VPN。这意味着子设备的流量在NAT转换后仍然使用设备A的本地互联网连接。 默认情况下,设备A仅转发数据包,不会做更多的处理。NAT转换后的数据包将根据设备A的默认路由表和NAT规则进行转发。如果设备A的VPN配置不包括子设备的流量,那么这些数据包将通过本地互联网连接转发。

  3. 热点和VPN配置的独立性 大多数移动操作系统和路由器将热点和VPN配置视为独立的功能。即使设备A连接了VPN,它的热点配置并不会自动将子设备的流量通过VPN转发。热点功能通常设计为提供基本的互联网共享,而不是复杂的网络代理功能。

解决办法:
监听局域网的流量,将其转发到VPN代理。需要在主设备上操作,安卓例如Every Proxy工具,将子设备对应的IP地址设置监听。

命令行终端程序的流量请求没有经过系统代理

命令行终端程序(如 ping、curl、wget)的流量请求通常不会经过系统代理。这是因为这些程序通常直接使用操作系统的网络协议栈来发送和接收数据,而不会经过系统代理。系统代理通常用于应用程序层协议(如 HTTP、HTTPS)的流量,而不是网络层协议(如 ICMP、TCP、UDP)的流量。

  1. 终端工具(如 npm、curl、wget 等)不默认使用操作系统的全局代理设置。这些工具通常需要单独配置代理信息。系统代理设置通常适用于图形用户界面的应用程序(如浏览器),而不是终端工具。
  2. 环境变量配置 在终端环境中,代理配置通常通过环境变量来指定。例如:
Powershell
HTTP_PROXY 或 http_proxy:用于设置 HTTP 代理。
HTTPS_PROXY 或 https_proxy:用于设置 HTTPS 代理。
NO_PROXY 或 no_proxy:用于设置不需要代理的地址。

这些环境变量需要在终端中手动设置,例如:

Powershell
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=https://proxy.example.com:8080

如果这些环境变量没有正确配置,终端工具将不会使用系统代理。
部分终端不支持http外的部分协议代理,如Socks代理。自行检查。 3. 配置工具自身的代理设置 一些工具(如 npm)有自己的代理配置选项,需要在配置文件或命令行中显式设置。例如,对于 npm,可以使用以下命令配置代理:

Powershell
npm config set proxy http://proxy.example.com:8080
npm config set https-proxy https://proxy.example.com:8080
  1. 系统代理与终端环境的隔离 操作系统的全局代理设置通常通过网络设置界面配置,并由操作系统的网络服务管理。终端工具和命令行应用程序可能不会自动读取这些设置,尤其是在非 GUI 环境(如服务器或远程 SSH 会话)中。

待新增:windows API