黑阔的自建中转轻松玩落地隐藏行踪+出国留学 – 连长 ‘s Blog

黑阔的自建中转轻松玩落地隐藏行踪+出国留学 – 连长 ‘s Blog

0x00 说明


首先是利益无关,只是自己突然看到一篇文章,然后近期又在研究wg ,然后看了一下iplc,发现也就是内网方案,所以就想用自己的服务器折腾玩玩,纯粹玩玩而已的啊,建议大家不要轻易尝试,毕竟在中间建立隧道的过程中,虽然有这个加密,但端口暴露和流量模型是铁定能被监控到的。如果用在非法上面翻车是迟早的事。请自重。。。。
以下都是不正经言论和不正经测试,找点事情玩玩而已,要玩真正iplc的,阿里企业网CEN。
实现的方案也有很多种,也希望广大大牛提需求让我们一起实现。。。

一、然后科普一下 IPLC、MPLS、隧道

我们目标建立的“隧道”概念,与 IPLC 有类似之处,所以先来了解一下。IPLC 粗暴点理解就是专线,直接用网线连接两边用户,不需要经过宽带运营商的机房。具体请看图:

那什么是 MPLS ?实际上我们无法通过软件手段实现物理层面上的两台服务器直接相连,不能完全达到 IPCL 的效果。所以将通过软件手段实现的“类 IPCL ”称为 MPLS。

至于 隧道 可以理解为一条通过软件构建的虚拟的网线,它直接连接两台服务器的。构建完成的架构

二、进一步了解隧道

就我目前了解,隧道的实现方案有两类:
1、使用 Zerotier、WireGuard 。将两台服务器组建在一个内网中,完成隧道部署后,两台机器就相当于在同一 WIFI 下的两台电脑,数据在内网中直接传输。
2、使用 Stunnel、GOST 的 TLS 加密隧道。服务器 A 将数据加密后传输,到达服务器 B 后,服务器 B 解密转发到目标服务器(如 油土鳖等)
第二类方案操作比较简单,理解起来也比较容易,但缺点是 TLS 等加密方案大多都是基于 TCP 的,所以对这类隧道对 UDP 的支持较差。而第一类方案可以较好地支持 UDP 转发,但由于本身是特定的加密协议,特征较为明显,且 WireGuard 基于 UDP,对大陆的网络环境适应性不太好(易受宽带运营商 Qos 影响)。
两者较大的区别就是第一类方案会在每台主机上虚拟出一张网卡,并且虚拟网卡都在同一个网段。是不是有点熟悉?对没有错,就是内网穿透的感觉。

三、隧道 与 iptables 等转发流量区别

在了解到隧道之前,我印象中中转服务器基本上都是使用 iptables 或者 socat 等工具,直接转发数据包(流量)到落点服务器。 在这种转发方式中,中转服务器没有对数据包进行任何操作(如:加密),仅仅转发数据包到落地服务器。而在 隧道 中的中转服务器有对数据包进行处理。具体请看图:

0x01 网络TOP图

首先你需要 3台机器。至于3为什么要使用3台机器,下面我会做详细的说明,我这是使用的事谷歌的的云。其实用几台机器都无所谓,只要你够土。。这三台机器可以分布在世界各国。
开了三台机器。。
服务端 S 隧道ip是 10.0.0.1
客户端 A 隧道ip是 10.0.0.2
客户端 B 隧道ip是 10.0.0.3
他们能互相在隧道内访问。

我们的设想是 A是国内用户访问端 B是真正出网端。如果A被GWF给干叼了,可以切换机器更换其他隧道,我们实际上的出口ip不会变化。这样有利也有弊。

-w647
图是偷的,看看就行。

0x02 WG 服务端搭建以及打通各个机器

这里搭建服务端都有一键脚本很方便直接执行搭建脚本,假如你的vps机器运营商对udp qos比较严重可以参考,udp2raw转换为了tcp连接,然后愉快的连接。

这里使用的Centos7的安装脚本

yum install -y wget && wget https://raw.githubusercontent.com/atrandys/wireguard/master/wireguard_install.sh   && chmod +x wireguard_install.sh && ./wireguard_install.sh

然后我们查看客户端的连接文件,在这可以使用之前的脚步再添加一个客户端就是2个客户端。一个中转一个出网。

cd /etc/wireguard/

这里的文件我就不做详情的解说具体的话看这里吧 连接
你只需要知道 client.conf 是客户端配置文件 wg0.conf 是服务器端配置文件。
我们一次看看3个配置文件

wg0.conf

[Interface]  PrivateKey = 你自己的key  Address = 10.0.0.1/24   PostUp   = echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0   -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTI  NG -o eth0 -j MASQUERADE  ListenPort = 443  # 监听的端口你懂的。这里也可以只是监听本地 127.0.0.1 或者内网ip  DNS = 8.8.8.8  MTU = 1420  [Peer]  PublicKey = 你自己的key  AllowedIPs = 10.0.0.2/32  [Peer]  PublicKey = 你自己的key  AllowedIPs = 10.0.0.3/32

客户端 client.conf

PrivateKey = 你自己的key  Address = 10.0.0.2/24   DNS = 8.8.8.8  MTU = 1420  [Peer]  PublicKey = 你自己的key  Endpoint = 你的服务端的ip,也可以是内网ip,因为很多云可以VPC组网:端口  AllowedIPs = 10.0.0.1/32,10.0.0.3/32  # 此项配置非常的重要,就是给到wg可以访问的  PersistentKeepalive = 25

客户端 funk.conf

[Interface]  PrivateKey = 你自己key  Address = 10.0.0.3/24  DNS = 8.8.8.8  MTU = 1420  [Peer]  PublicKey = 你自己key  Endpoint = ipip自己的ip:端口  AllowedIPs = 10.0.0.1/32,10.0.0.3/32 # 还有很多种配置 自己摸索吧  PersistentKeepalive = 25

然后放在各个机器上面打通内网。
先在每天机器上安装wg客户端。我这里用的Ubuntu
安装命令

sudo add-apt-repository ppa:wireguard/wireguard  sudo apt install wireguard  sudo apt install resolvconf

然后放在每台机器上打通隧道直到能ping 通。
-w1268
到此所有ip可以互相访问ping通过。
然后在其中一台客户端搭建

0x03 在B客户端安装trojan

这里安装什么都无所谓,只要不是能够被墙快速的干叼都可以比如v2,ssr,都可以看你自己的吧。这里只是演示最新的留学方法其他方法你们自己尝试。

如图所示,Trojan工作在443端口,所以它会占用443端口,处理来自外界的HTTPS请求,如果是Trojan请求,那么为该请求提供服务,如果不是它就会将该流量转交给Nginx,
由Nginx为其提供服务。通过这个工作过程可以知道,Trojan的一切表现均与Nginx一致,不会引入额外特征,从而达到无法识别的效、看看原理图,一下就明白了吧。
果。当然,为了防止恶意探测,我们需要将80端口的流量全部重定向到443端口,并且服务器只暴露80和443端口,80端口还是由nginx管理,但443则由trojan管理,所以要赋予它监听443的权力,这样可以使得服务器与常见的 。这中间还能有好多可玩的,这里我就不演示了自己玩吧。。

一键安装脚本

添加一个域名解析过去

trojan-fuck-you.xxx.xx > 客户端B上面。

-w911
然后安装成功。
在客户端A上测试客户端B 端口是否能通,中间可以加入策略禁止其他ip访问客户端B。只保留A的ip能够访问,这样极大的保证机器的安全性能,
其实你也可以加入类似cf一样的cdn。不过我没试过,后期我会试试。
trojan的好处就是真的的伪装一个443的nginx网站 连访问的时候都是弹出网站的样子,不过你可以伪装成任何网站,至于有没有所谓的
-w590
-w838

-w1216

还是比较6的,我们可以反向代理到其他网站比如。百度。。
还可以搭配bbr魔改 请进入链接,其他就不多说了。

修改 nginx.conf

location / {          proxy_pass https://www.baidu.com;          proxy_redirect     off;          proxy_set_header   Host             $host;          proxy_set_header   X-Real-IP        $remote_addr;          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;      }

自行测试吧我没测试。

0x04 在A客户端执行 iptables 映射内网B

这里其实我之前想实现的不一样。之前参照了一篇大佬写的文章,链接 也是一个坑吧。我之前想直接在客户端A上面直接装trojan然后通过路由来控制,无奈linux 路由 方面学的不是太好折腾好久,也没折腾个所以然,今天带薪抽烟的时候突然想到wg只是隧道功能我要他实现的功能太多了,才想到通过iptables映射的方法来实现这个功能。无奈太菜,如果各方大佬研究出比这个还好的方案,欢迎一起讨论研究。
切换到客户端A上来 然后测试下是否能访问,这里测试是加入防火墙的条件下测试的,防火墙设置我就补贴了 有很多VPC的网络设置也有直接上linux 防火墙设置的。
-w549

首先你要保证你的端口没有被占用 80和443,你当然也能修改其他的端口进行使用。
-w562
查看云的VPC地址,一般都是内网地址做的转发,然后几下ip

中转A客户端服务器上的80和443端口代理到客户端B内网服务器的80和443端口。  iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.3:80  iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.0.0.3:443    修改转发数据来源为客户端A网卡IP。  iptables -t nat -A POSTROUTING -d 10.0.0.3/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 10.0.0.2  iptables -t nat -A POSTROUTING -d 10.0.0.3/32 -p tcp -m tcp --sport 443 -j SNAT --to-source 10.0.0.2    设置接受对80和443端口的访问  iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT   iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT     #设置转发出接口为wg0  iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

经过一系列的操作后 快速的验证下是否可用,首先我们绑定host,吧客户端B的域名ip绑定到客户度A访问是否通过。
-w361
然后访问你的域名。
配置 mac客户端。。
客户端下载地址:https://ssrvps.org/archives/1262
然后把刚刚下载回来的客户端config.json 贴近进去,注意需要吧证书文件也一并复制进去。
-w423
然后启动测试

./trojan -c config.json

-w599
然后配置浏览器代理测试。

-w896

-w653
然后你就发现你的ip变成了客户端B的IP地址。
测试完成之后你需要修改域名解析到客户端A的ip地址。就可以了。。
只不过速度没有想象中的快。速度也是惨不忍睹。我怀疑的谷歌云qos限速了。tm。。。
-w664

0x06 优化加速之 trojan 加速

我也不知道速度很慢所以开启了加速之路:
首先我们在客户端B上面安装BBR加速:

加速之后的速度。
-w922

-w644
可以看到很明显有加速的效果,这个效果取决你的机房速度,取决你的的隧道udp是否被限速,不过tcp隧道的vpn有很多,方案有很多大家可以多多尝试看看那个快速。
延迟还有有点大。我们来加速一下wg的隧道,让他也跑满。

0x07 优化加速之 WireGuard 加速

可以看到上面使用bbr加速过trojan有很明显的提升。但是bbr加速只是对 tcp 的包有加速(我也不是太清楚)所以wg的加速我们要使用其他的软件进行加速。接下来我们要使用udpspeeder来加速。如果你的vps主机对udp包qos比较严重我建议加上 udp2raw来把udp流量伪装成tcp绕过限制。花里胡哨的操作太多了,自己youtube吧 看看,我这也是随便选择的一个测测。
好废话说的太多开始操作吧。

在服务器端下载官方版本的加速工具。

在服务器端执行

nohup ./speederv2_amd64 -s -l0.0.0.0:4433 -r127.0.0.1:443 -k  "fuckyoummp" --mode 0 -f2:4 -q1 >speeder.log 2>&1 &  

然后 分别在 A客户端和B客户端执行

A机器  wg-quick down wg0  nohup ./speederv2_amd64 -c -l127.0.0.1:8844 -r10.140.0.2:4433 -k "fuckyoummp" --mode 0 -f2:4 -q1 >speeder.log 2>&1 &  wg-quick up wg0

修改wg0的配置文件中的端口。
-w437

B机器  wg-quick  down wg0  nohup ./speederv2_amd64 -c -l127.0.0.1:8844 -r10.140.0.2:4433 -k "fuckyoummp" --mode 0 -f2:4 -q1 >speeder.log 2>&1 &  wg-quick up wg0

-w1279

到此可以看到速度很明显提升了一点。不过影响的因素有很多种。
-w673

爆炸。。。。。

0x08 总结

折腾了这么多还是经不住党的考验,所以千万不要干违反乱纪的事,忠党爱国,才是我们新一代的青年该做的事。上面说的其实还有很大的发展空间,比如和一台国内的组成一个内网然后通过转发到国内机器上访问国内网站,还可以只是用分流的技术达到国内和国外统一分流处理,也可以组成全球的节点,但是难免会被gwf封锁,我给的建议就是反向连接国内的机器,在我 的印象里好像 长城只是封锁出网,但是不封锁进,还可以组一个kail攻击机器,这样我们就不会通过真实ip连接攻击器了而是通过我们的跳板机去连接。
感谢党,感谢社会主义让我不被疫情病毒干扰。

参考地址

感谢下面几位大佬。
https://www.cnblogs.com/hannuo/p/10359179.html
https://icodex.org/2020/02/peer-to-peer-tunnel-vpncloud/
https://blog.csdn.net/weixin_43921239/article/details/104397912
https://blog.csdn.net/qq_39626154/article/details/82380581