最近需要经常上GitHub clone一些项目,但是学校的校园网不仅卡,有些时候GitHub根本上不去甚至卡死,我已经经常为这件事抓狂了,所以去Vultr上买了两个月的VPS搭个WireGuard服务器给自己用。
WireGuard服务器搭建本来是比较困难的,如果需要组网需要自己搭建一下网桥。而docker正好解决了这个问题,这次把这个内容放进GitHub里避免自己忘记。需要说明的是WireGuard不仅可以搭机场科学上网,也可以加上内网穿透给自己搭一个回家的VPN,这样可以直接在内网里访问家里的NAS或者是服务器,不需要公网IP也没有向公网暴露端口,总体上说还是不错的。
WireGuard优点挺多,比如加密协议简单且安全,可以直接运行Linux内核里,速度嘎嘎棒;当然缺点很多,比如用的是UDP协议,在国内这种QoS下丢包率感人,而且WireGuard很容易被识别封IP。如果要用的话最好只给自己用吧。
其实命令很简单,首先是在Linux下安装docker,比如Ubuntu和Debian(这些发行版软件源有docker软件包):
1 | sudo apt install docker.io -y |
或者是Fedora以及CentOS,要启动额外的软件源才能安装。
1 | #先下载Repo |
接下来只需要一条指令就可以启动了,最好放在一个bash脚本里。
1 | docker run -d \ |
解释以下这里的几个选项:
name
指定这个docker容器名称SERVERURL
指定服务器IP地址,可以用ip addr
查询以下SERVERPORT
指定服务器的端口PEERS
指定节点数量,最好多留几个INTERNAL_SUBNET
指定内网地址,具体看自己习惯修改-p
指定端口和协议,与端口SERVERPORT
一致/opt/wireguard/config
和/opt/wireguard/module
改成自己指定的本地文件夹,我是在/opt下创建的,可以自己做一些修改
执行完之后如果VPS有防火墙,记得放行一下刚刚指定的端口,接下来就是安装本地的WireGuard软件,Windows下可能比较难找到(因为WireGuard官网已经被墙了),Android可以在F-Droid商店里下载,Linux的话基本上每个发行版都有软件包,具体可以去查Wiki,这里讲一下在安卓下连接的方法。
在创建完服务器并开启之后,以之前的目录为例,用scp命令把服务器上/opt/wireguard/config/peer1/peer1.png
下载到电脑上,然后用手机扫图片里的二维码就行了,如果服务器在内网还得重新修改一下远端IP地址(即Endpoint这一项),打开连接后出现“上次握手时间 现在”就说明连接成功了,如果是电脑的话下载/opt/wireguard/config/peer1/peer1.conf
加进WireGuard配置里就行了。