搭建翻墙神器wireguard搭建IPv6隧道——CentOS 7(转)

@Wen's  February 23, 2019

转自感谢: https://www.mfzy.cf/archives/240         

                         https://www.atrandys.com/2018/886.html  

                         https://lala.im/4981.html


WireGuard VPN在速度上拥有完美的表现,目前wireguard VPN走IPv6的流量没干扰,比如访问Google,用WireGuard走IPv4就有各种阻断,而走IPv6就畅通无阻。但目前想用个IPv6还是有点困难,本教程的原理就是先通过WireGuard建一个虚拟局域网,然后在这个局域网内WireGuard会分配给我们一个内网的IPv4和IPv6,连接上之后再把流量转发到外网。本文的服务器选用vultr的CentOS 7X64系统。目前限时新用户注册送50美金的使用额度,有需求的赶快点击这里进行注册

视频教程:YouTube

服务器部署

1、安装依赖及wireguard主程序

curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum -y install epel-release
yum -y install kernel-headers-$(uname -r) kernel-devel-$(uname -r)
yum -y install wireguard-dkms wireguard-tools

2、开启IPv4和v6的转发

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
sysctl -p

3、创建配置文件存放目录

mkdir -p /etc/wireguard

4、生成服务端的私钥/公钥

wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey

5、生成客户端的私钥/公钥

wg genkey | tee /etc/wireguard/clientprivatekey | wg pubkey > /etc/wireguard/clientpublickey

6、获取服务器端、客户端的私钥及公钥

获取的方法介绍2种,一是通过finalshell等类似的软件,下载/etc/wireguard整个文件夹到本地电脑,然后用记事本等软件打开查看服务器端、客户端的私钥及公钥。另一种方法是在SSH客户上使用命令vi进行查看,例如要查看服务端的私钥,可使用命令:vi /etc/wireguard/privatekey

7、新建服务端的配置文件

vi /etc/wireguard/wg0.conf

配置文件如下:

[Interface]
PrivateKey = 服务端私钥
Address = 192.168.0.1/24, 2001:20:2333::1/28
ListenPort = 23333
DNS = 8.8.8.8, 2001:4860:4860::8888

[Peer]
PublicKey = 客户端公钥
AllowedIPs = 192.168.0.0/24, 2001:20:2333::1/28

8、用firewall做转发

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade'
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT
firewall-cmd --permanent --add-rich-rule='rule family=ipv6 source address=2001:20:2333::1/28 masquerade'
firewall-cmd --permanent --direct --add-rule ipv6 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT
firewall-cmd --permanent --add-port=23333/udp
firewall-cmd --reload

9、启动wireguard

wg-quick up wg0

10、设置开机启动

systemctl enable wg-quick@wg0

客户端部署

关于客户端的部署,请参考https://www.mfzy.cf/archives/39这篇文章,以下是客户端配置文件

[Interface]
PrivateKey = 客户端私钥
Address = 192.168.0.2/24, 2001:20:2333::666/28
DNS = 8.8.8.8, 2001:4860:4860::8888

[Peer]
PublicKey = 服务端公钥
Endpoint = 服务端公网IP:23333
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25

TunSafe之后连接,你本地应该就可以用上服务器内的IPv6了。


另补充;

3.用 wg 在命令行运行 WireGuard

如果不是使用 wg-quick 调用 wg0.conf 启动 WireGuard,还可以通过命令行的方式,用 wg 命令直接配置并启动 WireGuard 网络。

1. 创建与配置虚拟网卡

  1. 创建虚拟网卡

    sudo ip link add dev wg0 type wireguard

    这行命令创建了名为 wg0 的 wireguard 虚拟网卡。

  2. 配置虚拟网卡

    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 地址、监听端口以及配置了私钥。

  3. 添加节点

    sudo wg set wg0 peer FCXYovwMFf2oMHrQjbhTYk1TU/Wi1ElwzPJfzXtC9HQ= allowed-ips 0.0.0.0/0 endpoint 172.105.221.122:39814

    这行命令添加了一个外部节点,并定义了外部节点的公钥、内网地址以及公网 ip 地址及监听端口。

  4. 启动此虚拟网卡

    这行命令事此虚拟网卡处于运行状态:

    sudo ip link set up dev wg0

    执行以下命令可以关闭虚拟网卡:

    sudo ip link set down dev wg0

    有点奇怪的是,执行后在 ifconfig 检测不到了,但是通过 sudo wg 仍然存在 ,需要用 wg-quick down wg0 才能彻底卸载。

2. 路由规则

在服务器端执行以下命令可以启动或关闭路由规则。

  1. 启动规则:

    iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  2. 关闭规则:

    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

  1. 命令行方式的配置也可以通过一个命令保存为配置文件,编辑配置文件也很方便,并且在需要多次操作的情况下会很容易。

    # 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 进程:

  1. 重载守护进程:sudo systemctl daemon-reload

  2. 设置为自动启动 wg0:sudo systemctl enable wg-quick@wg0

  3. 禁用服务:sudo systemctl disable wg-quick@wg0

  4. 启动服务:sudo systemctl start wg-quick@wg0

  5. 重启服务:sudo systemctl restart wg-quick@wg0

  6. 查看服务状态:sudo systemctl status wg-quick@wg0


CentOS7一键脚本安装WireGuard

1、VPS应安装为centos7系统,使用xshell或其他ssh工具连接VPS后,执行下面命令:

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

2、执行脚本会弹出选择项,首先我们选择安装内核,安装过程中需要几分钟,最后按照提示重启。

3、重启完毕,使用xshell连接VPS,执行下面命令:

./wireguard_install.sh

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,安装过程中所有权限都有要允许,有什么安全软件提示也要允许,重新试一下。


添加新评论