这个根本就比不过阿里企业网CEN,充其量也就是类似MPLS的玩意儿,不过也能得到类似iplc的体验。 其他查看 阿里企业网CEN、花卷科技
(MPLS 和 IPLC 的区别)
受到条件制约比较明显,首先你国内服务器的ISP对隧道不太敏感,也就是qos等级并不高,而且你国内到你国外落地的物理距离尽可能近一些,延迟能控制在30ms以内,不然体验不会太好。另外CPU限制不要太死,毕竟打隧道你得加密算法的支撑,cpu太辣鸡就跑不满了。
文章目录
一:需要准备的
1. 国内服务器一台,带宽最好大点
2. 国外落地用vps一台
3. 你得会玩kvm,会用esxi/proxmox也是极好的
4. 你得知道iptable和策略路由的基础
二:设置教程
2.1 建立国内和国外服务器间的隧道
可以用wireguard或n2n,但一定是要2层或3层的网络,不能是frp之类端口打洞的东西,也就是要建立一个虚拟局域网,让国内和国外两台服务器能在一个网段下,这里建议用wireguard,加密强度高一些。zerotier应该也可以玩,但安全性我不清楚,如果要用,你最好顺手部署一下moon节点加速一下。这个应该不用截图说明,不懂的去wireguard看教程。
唯一要说明的是,你得在国外的服务器上开启ip转发,对这个子网做一个MASQUERADE转发。
echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 10.128.0.0/16 ! -d 10.128.0.0/16 -m comment --comment "wireguard" -j MASQUERADE
2.安装proxmox
在国内服务器上,安装一个proxmox,然后开几个小鸡,注意给这些小鸡分配vmbr1的网络,vmbr0就还是做普通的侨接到eth0接口就好,这个不用理会,我们这个例子中不使用到。
3. 做路由策略
最后在国内服务器上,做一个最简单的策略路由,记得要开启ip转发。
echo "1" > /proc/sys/net/ipv4/ip_forward
然后标记vmbr1网络的地址,设置默认路由,这里是10.10.10.0/24
ip rule add from 10.10.10.0/24 lookup 10 ip route add default via 10.128.0.6 table 10
然后做一个转发,把这个子网的流量都从你的wireguard接口出去
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 ! -d 10.10.10.0/24 -o wg0 -j MASQUERADE
4. 补充说明
完成上述3步之后,其实你的小鸡已经能出去了。但是你还得开个端口方便你连接小鸡的ssh不是?你不可能总是用proxmox的控制台的。所以你要把目标小鸡的ip再给定个路由表,不然你做端口转发时,这台小鸡的ip默认是走wg0接口的路由表。 在我的例子中,我的vmbr1在母鸡的ip是60结尾,小鸡的ip是100结尾,所以命令:
#小鸡1 ip route add 10.10.10.100 via 10.10.10.60 table 10 #node1
然后你再做个端口转发到这台100小鸡的22端口就好了。另外再分配几个端口给这个小鸡用。有富裕ip的同学请直接给ip
至此,你就可以通过ssh连接你国内服务器对应小鸡22端口,实现类似iplc的效果。 实际落地是在你国外的服务器。
三:如果没有独立服务器怎么办
如果你在国内没有服务器无法开小鸡怎么办?还有没有办法低价获得这种隧道落地的方式呢?
有的。用docker就好,没必要开小鸡了。
你要做的是:
1. 找个国内网络还不错的vps,比如你就任性开个ECS按流量计费,把口子拉满,这个跑docker
2. 国外落地用的服务器或vps,不用跑docker
3. 给两边建立wireguard隧道,你用其他隧道(openvpn)也行,你能打通就好
4. 国内vps安装docker,并新建一个network单独给容器用,不能用默认的docker0的侨接网络
5. 策略路由到你刚刚新建的docker network
前面3个步骤不用说了。那docker怎么玩?我这里就直接用命令行,没安装面板了。
3.1 安装docker
用一键方式最靠谱,国内建议用阿里云的mirrors
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2. 创建docker网络
docker network create nat
创建完注意看一下这个网络的ip段
docker network inspect nat
我的例子中是172.19.0.0/16
3.创建一个容器
或者你可以找一个s5的镜像,直接跑在nat的网络下,记得开个端口出来哈
docker run --net=nat -itd --name=container ubuntu
最后把那啥策略路由改一下到docker新建的network就好了。策略路由看第二个大标题里面