本篇文章是介绍关于伪IPLC的搭建心得,或许能为做游戏加速,企业专线这块有一定作用!
一、前言
IPLC 粗暴点理解就是专线,如果你经常使用海外服务器,你就会发现线路不一样,延迟也会不一样,当然线路好的服务器价格就越贵,对于游戏加速器,如果线路不好,就会造成玩家游玩游戏时的体验极差,开加速器跟没开一样,一般游戏加速器厂商都会去联系海外IDC去打通大陆到海外的专线,对于普通人来讲,价格就高的不敢想象,所以就出现了伪IPCL(组建隧道中转流量)
很多人非常好奇这是什么技术,本着不懂就问的真理,询问大佬。大佬回答是: 200 块包安装。
我也是了解 隧道 方面的知识没多久,如有错误请大佬指出
二、IPLC、MPLS、隧道
我们目标建立的“隧道”概念,与 IPLC 有类似之处,所以先来了解一下。IPLC 粗暴点理解就是专线,直接用网线连接两边用户,不需要经过宽带运营商的机房。具体请看图:
那什么是 MPLS ?实际上我们无法通过软件手段实现物理层面上的两台服务器直接相连,不能完全达到 IPCL 的效果。所以将通过软件手段实现的“类 IPCL ”称为 MPLS。
至于 隧道 可以理解为一条通过软件构建的虚拟的网线,它直接连接两台服务器的。构建完成的架构图:
三、进一步了解隧道
就我目前了解,隧道的实现方案有两类:
- 使用 Zerotier、WireGuard 。将两台服务器组建在一个内网中,完成隧道部署后,两台机器就相当于在同一 WIFI 下的两台电脑,数据在内网中直接传输。
- 使用 Stunnel、GOST 的 TLS 加密隧道。服务器 A 将数据加密后传输,到达服务器 B 后,服务器 B 解密转发到目标服务器(如 youtube等)
第二类方案操作比较简单,理解起来也比较容易,但缺点是 TLS 等加密方案大多都是基于 TCP 的,所以对这类隧道对 UDP 的支持较差。而第一类方案可以较好地支持 UDP 转发,但由于本身是特定的加密协议,特征较为明显,且 WireGuard 基于 UDP,对大陆的网络环境适应性不太好(易受宽带运营商 Qos 影响)。
以上摘自:
https://www.40huo.cn/blog/gost-tls-tunnel.html
两者较大的区别就是第一类方案会在每台主机上虚拟出一张网卡,并且虚拟网卡都在同一个网段。是不是有点熟悉?对没有错,就是内网穿透的感觉。
四、隧道 与 iptables 等转发流量区别
在了解到隧道之前,我印象中中转服务器基本上都是使用 iptables 或者 socat 等工具,直接转发数据包(流量)到落点服务器。 在这种转发方式中,中转服务器没有对数据包进行任何操作(如:加密),仅仅转发数据包到落地服务器。而在 隧道 中的中转服务器有对数据包进行处理。具体请看图:
五、使用 WireGuard 组建隧道
我选择的是第一种方法搭建 隧道 ,选择的工具是 WireGuard 。
如果想了解用第二类方案实现,请看利用 GOST 搭建加密中转隧道 – 40huo’s – 知至知终
顺带说一嘴,这个工具可以用做家庭 NAS 的内网穿透。工具还可以选择 Zerotier ,这个带 Web 管理,但服务器在国外,为了更好的链接体验,可以百度一下搭建一个 moon节点 加速。
对于家庭来说更像是异地组网
WireGuard 服务器客户端一体,依据配置文件区分。官网有详尽的安装命令,实在看不懂英文翻译一下。这里给出大佬们的一键脚本。
Ubuntu(atrandys)
wget https://raw.githubusercontent.com/atrandys/wireguard/master/wireguard_install_ubuntu.sh && chmod +x wireguard_install_ubuntu.sh && ./wireguard_install_ubuntu.sh
CentOS(atrandys)
yum install -y wget && wget https://raw.githubusercontent.com/atrandys/wireguard/master/wireguard_install.sh && chmod +x wireguard_install.sh && ./wireguard_install.sh
落地服务器我们用作 wireguard 服务端,中转服务器用作 客户端
先在 落地服务器 安装,使用 一键脚本 完成安装后会在 /etc/wireguard
目录下生成有:一对客户端key、一对服务端key、服务端配置文件、客户端配置文件。
服务端配置文件:wg0.conf
[Interface]
PrivateKey = <服务端私钥>
# 组建内网服务端内网地址,NAT机器可能与原有网段冲突,请修改
Address = 10.0.0.1/24
PostUp = 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 POSTROUTING -o eth0 -j MASQUERADE
ListenPort = <监听端口>
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = <客户端公钥>
# 组建内网服务端内网地址
AllowedIPs = 10.0.0.2/32
客户端配置文件:client.conf
[Interface]
PrivateKey = <客户端私钥>
Address = 10.0.0.2/24
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = <服务端公钥>
# 客户端公网IP:监听端口
Endpoint = 173.242.120.211:53115
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25
使用 Xshell 之类工具,将 clien.conf 下载到本地电脑待用。以相同方法在 中转服务器 上安装 wireguard 。安装完成后,将本地电脑的 client.conf 上传到中转服务器的 /etc/wireguard
。记得是覆盖上传!!!覆盖!!!
如无意外,隧道已经搭建完成了。启动隧道:
落地服务器(服务端)
wg-quick up wg0
中转服务器(客户端)
wg-quick up cleint
隧道启动完成,中转服务器流量会经落地服务器发出。可以测试一下:在中转服务器执行:
curl zx2c4.com/ip
返回的应该是落地服务器的IP。至此 隧道中转流量 搭建完成。
怎么使用?你仅需要在中转服务器上安装 喜闻乐见的程序 ,开启隧道,你全部流量就会最终从落地服务器发出。不信你连接上 喜闻乐见的程序 后,去查查你的IP。
六、后记
如果要做机场或者游戏加速器之类的,我给出一些建议,服务端选择海外线路比较好的,离大陆近的,比如香港服务器,香港服务器作为服务端,中转服务器使用国内比如深圳,广州等地的国内服务器,距离落地服务器要尽可能的进,这样延迟才会更低,可以当专线使用,在启动隧道之前,就应该把v2ray等程序部署在中转服务器上,先启动机场程序,再启动隧道,这样就可以实现使用者通过连接国内的服务器,实现畅通访问海外的服务!海外服务器IP被墙的概率会大幅度减少!
使用 隧道 转发流量和使用 iptables 转发流量,速度谁更快?我并没有对比,所以不知道。电报大佬说是 隧道 更快一点,但没有指明是哪种 隧道 方案。毕竟高峰期 TCP 与 UDP 差距是存在的。安全性的话,隧道 进行二次加密比单次加密的 iptables,在理论上安全性更高,毕竟多一次加密等于你家多一道门一样。但是,隧道 加密的特征可能被容易识别出来。
七、wireguard 常用命令
使用 /etc/wireguard/
下的配置启动
wg-quick up <配置名>
关闭&&停止
wg-quick down <启动时用的配置名>
查看运行状态&&链接信息
# 输入无显示,则为未启动
wg show
或
wg