转自感谢: https://www.mfzy.cf/archives/240
https://www.atrandys.com/2018/886.html
WireGuard VPN在速度上拥有完美的表现,目前wireguard VPN走IPv6的流量没干扰,比如访问Google,用WireGuard走IPv4就有各种阻断,而走IPv6就畅通无阻。但目前想用个IPv6还是有点困难,本教程的原理就是先通过WireGuard建一个虚拟局域网,然后在这个局域网内WireGuard会分配给我们一个内网的IPv4和IPv6,连接上之后再把流量转发到外网。本文的服务器选用vultr的CentOS 7X64系统。目前限时新用户注册送50美金的使用额度,有需求的赶快点击这里进行注册。
视频教程:YouTube
服务器部署
1、安装依赖及wireguard主程序
2、开启IPv4和v6的转发
3、创建配置文件存放目录
4、生成服务端的私钥/公钥
5、生成客户端的私钥/公钥
6、获取服务器端、客户端的私钥及公钥
获取的方法介绍2种,一是通过finalshell等类似的软件,下载/etc/wireguard整个文件夹到本地电脑,然后用记事本等软件打开查看服务器端、客户端的私钥及公钥。另一种方法是在SSH客户上使用命令vi进行查看,例如要查看服务端的私钥,可使用命令:vi /etc/wireguard/privatekey
7、新建服务端的配置文件
配置文件如下:
8、用firewall做转发
9、启动wireguard
10、设置开机启动
客户端部署
关于客户端的部署,请参考https://www.mfzy.cf/archives/39这篇文章,以下是客户端配置文件
TunSafe之后连接,你本地应该就可以用上服务器内的IPv6了。
另补充;
3.用 wg 在命令行运行 WireGuard
如果不是使用 wg-quick 调用 wg0.conf 启动 WireGuard,还可以通过命令行的方式,用 wg 命令直接配置并启动 WireGuard 网络。
1. 创建与配置虚拟网卡
创建虚拟网卡
sudo ip link add dev wg0 type wireguard
这行命令创建了名为 wg0 的 wireguard 虚拟网卡。
配置虚拟网卡
sudo ip address add dev wg0 10.0.0.1/24 sudo wg set wg0 listen-port 39815 sudo wg set wg0 private-key ./private.key
这三行命令配置了 wg0 网卡的内网 ip 地址、监听端口以及配置了私钥。
添加节点
sudo wg set wg0 peer FCXYovwMFf2oMHrQjbhTYk1TU/Wi1ElwzPJfzXtC9HQ= allowed-ips 0.0.0.0/0 endpoint 172.105.221.122:39814
这行命令添加了一个外部节点,并定义了外部节点的公钥、内网地址以及公网 ip 地址及监听端口。
启动此虚拟网卡
这行命令事此虚拟网卡处于运行状态:
sudo ip link set up dev wg0
执行以下命令可以关闭虚拟网卡:
sudo ip link set down dev wg0
有点奇怪的是,执行后在
ifconfig
检测不到了,但是通过sudo wg
仍然存在 ,需要用wg-quick down wg0
才能彻底卸载。
2. 路由规则
在服务器端执行以下命令可以启动或关闭路由规则。
启动规则:
iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
关闭规则:
iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
3. 把命令行配置固化为 wg0.conf
命令行方式的配置也可以通过一个命令保存为配置文件,编辑配置文件也很方便,并且在需要多次操作的情况下会很容易。
# wg showconf wg0 > /etc/wireguard/wg0.conf # wg setconf wg0 /etc/wireguard/wg0.conf
4. 删除节点
删除无效节点:
sudo wg set wg0 peer xxxxxxxx remove
5. 把 wg 设为系统进程
可以通过 Systemctl 管理 wg 进程:
重载守护进程:
sudo systemctl daemon-reload
设置为自动启动 wg0:
sudo systemctl enable wg-quick@wg0
禁用服务:
sudo systemctl disable wg-quick@wg0
启动服务:
sudo systemctl start wg-quick@wg0
重启服务:
sudo systemctl restart wg-quick@wg0
查看服务状态:
sudo systemctl status wg-quick@wg0
CentOS7一键脚本安装WireGuard
1、VPS应安装为centos7系统,使用xshell或其他ssh工具连接VPS后,执行下面命令:
2、执行脚本会弹出选择项,首先我们选择安装内核,安装过程中需要几分钟,最后按照提示重启。
3、重启完毕,使用xshell连接VPS,执行下面命令:
4、执行命令会弹出和第2步相同的选择项,这次我们选择安装wireguard,安装过程中需要等几分钟,安装完成服务即自行启动了。
5、使用xftp等ftp工具连接vps,进入/etc/wireguard/目录,然后将client.conf下载到本地电脑。(这个配置文件里面包含的是客户端的各种参数,mac、linux客户端也是使用这些参数。)
6、下载安装TunSafe,这是一个windows端的第三方客户端,因为官方windows版本的还没开发完成,先用这个软件代替,TunSafe已经开源了,可以放心使用。
官网下载:TunSafe
7、打开TunSafe,点击file,选择import file,选择第5步下载的client.conf文件,导入到软件中。
8、导入后会自动连接,连接成功后,所有流量都会被代理,也就是全局代理。
9、使用Linux、Mac系统的同学,可以去官方查看一下如何安装对应的客户端,比较简单,这里就不讲了。
安卓版客户端教程
1、去Google Play下载wireguard,目前这个软件在Google Play中是未发布版,也可直接下载下面的f-droid的安装包。
安卓版wireguard:点击下载
2、将软件安装好,并将本教程服务端获取的client.conf文件传输到手机中。打开软件,点击加号,在弹出的页面选择create from file or archive,然后选择保存在手机的conf文件。
注意:这里可能会提示错误,原因是没有文件操作权限,去权限管理里给软件勾上存储权限即可。
选择文件后如下图所示
开启代理即可。
iOS版客户端
现在是测试版,官方和tunsafe都提供了测试版,需要先进链接安装testflight,然后再在手机上打开这个测试版连接,就可以跳转到testflight,然后安装就可以了
官方ios版:wireguard测试版
Tunsafe ios版:在非国区app store搜索tunsafe安装即可。
导入测试文件很简单,可以直接打开软件,扫描服务上生成的二维码,也可以把文件复制到手机,然后用软件打开。
多用户
wireguard一个配置文件同一时间只能连接一个设备,所以你如果需要多用户,那么需要多个配置文件。
多用户配置可以参考这个视频,讲解的应该够清楚。
非常重要
这里是一些大家wireguard后遇到各种问题的排查过程,遇到问题先来这里看,有遇到问题自行解决过了而且下面没提及到的,请各位童鞋留言,我会补充上。
服务端
1、首先使用 wg 命令,查看wireguard服务是否正常启动,peer是否正常。
2、检查配置文件wg0.conf,ip不可使用ipv6,因为ip是自动联网查询的,有可能会得到ipv6地址,需要改成ipv4的地址。
3、使用 ip link 命令查看物理网卡是否为eth0,如果不是将真实名称(除了lo、wg0的那个网卡)替换wg0.conf中的eth0。
4、你的云服务商的防火墙是否放行。像谷歌云/阿里云等在web控制台都可以看到防火墙设置,需自行配置放行规则。
5、你的云服务器的内网IP段不要和10.0.0.1/24冲突,我遇到过谷歌云内网网段(自己配置的)和wg使用的网段冲突的情况,这种问题很少见,除非是你自己配置的内网IP。
客户端(windows)
1、用管理员权限打开tunsafe,不要同时开启其他代理类软件。
2、如果是电脑直接拨号上网,可能会出现无法连接的情况,换路由器拨号。
3、有安装过SSTAP的情况(它安装的虚拟网卡会设置静态IP),wireguard可能会共用sstap安装的网卡,注意把这个虚拟网卡的ip和dns设置为自动获取。
4、安装过其他VPN的卸载一下,重装tunsafe试试。
5、本地ip地址可能是10.0.0.1/24网段的,会有冲突,给wireguard设置其他网段,默认10.0.0.1改成其他,例如10.8.0.1。
重装!!!
如果以上问题你确实排查过了,那么很可能是tunsafe安装有问题,需要你卸载tunsafe,卸载TAP虚拟网卡,重新安装tunsafe,安装过程中所有权限都有要允许,有什么安全软件提示也要允许,重新试一下。