我们记录一次实验数据,首先是尝试访问http://www.youtube.com,然后观察v2ray日志在`/var/log/v2ray/access.log`查看我们与代理端口1087通信的端口号,如图所示:

image-20240108005110044

与此同时我们提前打开了wireshark抓取loopback地址的包,如图所示。

image-20240108005221965

发现通过tcp三次握手与1087建立了连接。然后发送了http数据,我们打开这个http请求数据,如图:

image-20240108005326950

看到设置了proxy选项。

这期间还进行了两次DNS查询,在上图红色即为查询结果,可以看到查询结果就是正确解析到的cloudflare的ip地址,如图所示:

image-20240108005531309

在整个通信过程最后我们可以看到

image-20240108005814633

通过代理服务器收到了返回的http包裹,然后四次挥手断开连接。我们试图找到代理的痕迹。

打开http包裹,如图所示,看到代理持续连接。

image-20240108005936491

我们再来一次实验,这次抓一下以太网卡,看一下外部的情况,就圆满了。

image-20240108010832669

我们看到首先进行三次握手,和cloudflare代理服务器建立通信,然后将数据通过tls1.3协议转发出去。这个协议是由cloudflare端设置的,可以在cloudflare平台看到。数据包如图所示:

image-20240108011102589

整个数据包,只有2.mathming.ltd和http/1.1协议两个信息,剩下全是加密的。也就是通过dns解析到cloudflare之后,将信息完全加密,送到cloudflare ip然后再通过fall back origin到1.meteorshower.pp.ua再代理解析到我们的目标服务器,由目标服务器进行解读。

注意!为什么我们的目的地写成2.mathming.ltd而不是www.youtube.com因为这是v2ray客户端我们设置的!通过2.mathming.ltd的最终服务器进行代理访问youtu。

最后我们打开目的地服务器的nginx日志,查找被访问的证据。

image-20240108012110304

看到日志,时间对得上,这是伦敦时间,+8正好为北京时间凌晨1点,时间正确。并且http/1.1的协议号正确,每一行第一个出现的ip就是客户端ip,也就是从172开头的客户端访问我们,最后一次出现的ip就是一个代理ip,也就是通过后面那个代理访问的我们。

我们再验证一下发送时间,在网卡数据包中

image-20240108012825984

时间是1点04分,我们在nginx日志中找到1.04分的数据。

image-20240108012945785

基本上正确验证了通信流程。