proxy相关知识
相关知识
GFS (Great Firewall)
GFW本质上是巨大的高性能分布式入侵检测维稳系统并不是单纯的防火墙
TCP/IP协议拓扑图
软件使用网络协议取向 :
- 客户端间歇性的发起无状态的查询且允许发生延迟,使用http/https,如:浏览器
- 客户端和服务器都可独立发包的情况下:
- 可容忍延迟但对数据来说一个字节都不能改变,使用tcp,如:在线斗地主
- 有实时性要求,准许部分字节错误,但不能容忍延迟,使用udp,如:即时动作类游戏
VPN能连接TCP与UDP协议,是因为虚拟网卡以及其生成的IP比TCP与UDP更为底层;sock处于OSI模型中的会话层,负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接,并不关心是何种应用协议,以至于sock代理不能互联用于其他协议的软件。典型的例子:v2ray需要switchyomega在表示层做中继代理打开被封锁的站点.
域名劫持与污染
DNS(域名系统)
域名是互联网上某一台计算机或计算机组的名称,由一串用点分隔的名字组成,用于在数据传输时标识计算机的电子方位。
如,Google的域名是"google.com"
DNS(Domain Name System 或Domain Name Service)是因特网的一项核心服务,它将人类可读的域名与机器可读的IP地址相互映射,使得用户能够通过易于记忆的域名访问互联网上的资源,而不需要记住复杂的IP地址。
如,当输入“www.example.com
”时,DNS会将这个域名解析为对应的IP地址(如192.168.1.1),以便浏览器可以加载网页
DNS劫持
通过劫持DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。
DNS污染
通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,非常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,GFW发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器给查询者返回虚假结果。
因此也被称为DNS欺骗或叫投毒。由于巨量的IP请求被GFW的DNS污染分别指向各个不同IP让其各项资源快速耗尽,导致正常用户无法访问,致使部分网站屏蔽中国IP而防止这种DDoS攻击。
Host
Hosts是负责将主机名映射到相应的IP地址的文件,通常用于补充或取代网络中DNS的功能;与DNS不同,计算机的用户可以直接对hosts文件进行控制指定IP访问的网址。
Hosts文件本来是用来提高解析效率的。在进行DNS请求以前,系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。当你的Hosts文件里面有对应的IP时,它就会直接访问那个IP,而不用通过DNS。
所以,当我们直接将SS分享之类的站点IP放入Hosts文件后,就可以跳过DNS的解析这一步直接就行,IP访问不受GFW的DNS污染干扰了,但封IP那就没辙了;如果是CDN 的IP被封的话,则需要站点站长提供主IP地址,也可以说是真实IP添加进hosts即可。
科学上网原理
背景
在很久很久以前,我们访问各种网站都是简单而直接的,用户的请求通过互联网发送到服务提供方,服务提供方直接将信息反馈给用户。
后来,GFW 就出现了,他像一个收过路费的强盗一样夹在了在用户和服务之间,每当用户需要获取信息,都经过了 GFW,GFW将它不喜欢的内容统统过滤掉,于是客户当触发 GFW 的过滤规则的时候,就会收到 Connection Reset
这样的响应内容,而无法接收到正常的内容。
聪明的人们想到了利用境外服务器代理的方法来绕过 GFW 的过滤,其中包含了各种HTTP代理服务、Socks服务、VPN服务等。
shadowsocks
简单理解的话,shadowsocks 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,所以下面这个原理图基本上和利用 ssh tunnel 大致类似。
- 1、6) 客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题
- 2、5) ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密
- 3、4) ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回
PAC
代理自动配置(Proxy auto-config,简称PAC)
是一种网页浏览器技术,用于定义浏览器该如何自动选择适当的代理服务器来访问一个网址。
简单的讲,PAC就是一种配置,它能让你的浏览器智能判断哪些网站走代理,哪些不需要走代理。点击 Shadowsocks 的菜单,选择 编辑自动模式的 PAC
,如下图
Socks代理和http代理的区别
Socks代理
SOCKS代理在任何情况下都不会中断server与client之间的数据(这是由这种协议的特性决定的,毕竟非明文,但是在SOCKS代理服务器上还是可以还原出TCP和UDP的原始流量的),当你的防火墙不允许你上网的时候,你就可以通过SOCKS代理来上网(这里的意思是,如果GFW把google屏蔽了,你就可以通过一台海外的SOCKS代理服务器上谷歌)。
从定义上来看,SOCKS代理是一种通用的代理服务器,它基于SOCKS协议,能够处理多种类型的网络流量,包括但不限于HTTP请求。
在应用场景上,SOCKS代理因其通用性和灵活性,适用于各种应用程序的代理设置,可以处理不同协议的网络流量。这意味着SOCKS代理可以为更广泛范围的互联网服务提供代理,而不仅仅是网页浏览。
在性能方面,由于SOCKS代理不关心数据包的具体内容,因此它的速度通常比专门处理HTTP流量的HTTP代理要快得多。此外,SOCKS代理支持TCP和UDP连接,这使得它能够代理FTP、SMTP等多种流量,而不仅仅是HTTP流量。
而SOCKS代理虽然无法处理标准隧道加密,但它的通用性和灵活性使其在某些情况下可能更适合用于访问防火墙后的目标。
Socks代理的端口通常是1080。
HTTP代理
HTTP代理跟上面原理类似,用处也基本相同,都是让处于防火墙下的主机与外界建立连接,但是它与SOCKS代理不同的是,HTTP代理可以中断连接(即在中间截断数据流),因为HTTP代理是以HTTP请求为基础的而这些请求大多以明文形式存在,所以HTTP代理可以在Client和下游服务器中间窃听,修改数据。
(我来举个栗子:假如你的HTTP代理是Goagent,监听本地127.0.0.1:8080,此刻假设你已经把浏览器 的代理设置为:127.0.0.1:8080,那么你在浏览器中,所有的POST,GET,以及其他的请求,都会通过本地的代理转发给远程的服务器,然后再通过远程的服务器去请求你所请求的这些资源,大家知道,HTTP协议是通过明文传输的,无论是在本地还是远程的服务器上,都是可以监听到这些流量的,所以才会有GFW的存在……HTTP协议属于应用层,而SOCKS协议属于传输层,ps:传输层在网络层之下,这就决定了两者的能力大小。)
V2rayN 设置
基础设置
- 其他设备共享代理
前提是两个设备在同一个局域网内
打开设置-参数设置-允许来自局域网的连接
在 cmd 中 ipconfig
查询本机 ip
配置手机中的某个网络的代理-输入服务器主机名,服务器端口(在 V2 客户端显示了)
- 为局域网开启新的端口
可以配置端口,用户名密码
v2rayN设置
- 启用安全协议TLS v1.3(订阅/检查更新)
- 它可以提供更快的连接速度和更高的安全性。相比TLS v1.2,TLS v1.3的握手时间减半,这意味着访问一个移动端网站,使用TLS v1.3协议,可能会减少将近100ms的时间。此外,TLS v1.3还提供了更好的安全性,包括更强的加密算法和更好的前向保密性,这可以保护您的数据免受黑客和其他恶意用户的攻击。
- 检查Pre-Release更新(请谨慎启用)
- 启用后可以把v2rayN更新到Pre-Release(预发布版)
- 主界面双击设为活动服务器
- 启用后切换节点更加方便
- 启用硬件加速(需重启):
- 意味着v2rayN可以利用计算机的硬件资源来提高代理效率,可以使v2rayN在处理数据时更快,从而提高代理速度和稳定性。硬件加速还可以减少CPU的负载,从而降低计算机的能耗。如果您的计算机配置较高,启用硬件加速可以获得更好的代理体验。
Tun模式设置
- ==system==是指系统代理的设置。当你使用v2ray tun模式时,你可以选择将系统代理设置为v2ray,这样所有的网络流量都会通过v2ray进行代理;
- ==gvisor==是一个用于提供更高级的网络隔离和安全性的工具。它是一个开源的沙箱工具,可以在操作系统级别实现容器化,以保护应用程序免受恶意代码的攻击。使用gvisor可以增加网络应用程序的安全性,防止恶意代码对系统的攻击和滥用。
路由设置
-
域名解析策略
- ==AsIs==:只使用域名进行路由选择。快速解析,不精确分流。默认值。
- ==IPIfNonMatch==:当域名没有匹配任何规则时,将域名解析成 IP(A 记录或 AAAA 记录)再次进行匹配;
当一个域名有多个 A 记录时,会尝试匹配所有的 A 记录,直到其中一个与某个规则匹配为止;
解析后的 IP 仅在路由选择时起作用,转发的数据包中依然使用原始域名;
理论上解析比”AsIs”稍慢,但使用中通常不会觉察到。 - ==IPOnDemand==:当匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配。解析最精确,也最慢。
-
域名匹配算法
- ==linear==:使用线性匹配算法,默认值;
- ==mph==:使用最小完美散列(minimal perfect hash)算法(v4.36.1+)。测试数据约 17 万条,匹配速度提升约 30%,内存占用减少约 15%。
解除win10 uwp应用回环代理限制
- 可以使Win10/Win11 应用(比如 Microsoft Store)走系统代理