欢迎光临散文网 会员登陆 & 注册

WireGuard各主流平台的配置教程

2022-09-11 19:32 作者:昵称不让修改吗  | 我要投稿



 

WireGuard是一个轻量级的虚拟专用网络 (VPN),支持 IPv4 和 IPv6 连接。VPN允许您遍历不受信任的网络,就像在专用网络上一样。当连接到不受信任的网络(如酒店或咖啡店的WiFi)时,它使您可以自由地从智能手机或笔记本电脑安全可靠地访问互联网。

WireGuard的加密依赖于公共和私钥,供对等方在它们之间建立加密的隧道。WireGuard 的每个版本都使用特定的加密密码套件来确保简单性、安全性和与对等方的兼容性。

通俗来说,WireGuard有点类似于MPLS-VPN,同样的在VPN网络中建立隧道,不再依赖IP地址,只是WireGuard依靠密钥对完成服务器/客户端的匹配。MPLS使用标签逐级传递来完成数据的传输,WireGuard通过密钥对把连接在外网的WireGuard服务器的所有设备组成一个虚拟的局域网,这样位于公网中的WireGuard服务器被虚拟成了该局域网内的虚拟网关,通过WireGuard服务器继而完成内网的穿透,使位于不同地域的设备实现了互通,而且WireGuard使用的是是UDP协议,更加有利于于数据传输。

WireGuard工作原理

相比之下,其他VPN软件(如OpenVPN和IPSec)使用传输层安全性(TLS)和证书来验证和建立系统之间的加密隧道。不同版本的 TLS 包括对数百种不同的加密套件和算法的支持,虽然这为支持不同的客户端提供了极大的灵活性,但它也使配置使用 TLS 的 VPN 更加耗时、复杂且容易出错。
 

一、WireGuard服务端的建立

WireGuard服务器的建立,可以使用NAS服务器端的Docker容器安装(威联通、群晖、Unraid均可以) ,或者使用云服务器建立,这里推荐使用腾讯云推出的lighthouse轻量级服务器,新用户65一年还是不错的,这里我选择的操作i系统是“Ubuntu20.04-Docker20”,具体操作可以参考“spoto”大佬的视频,这里就不再赘述。配置参数如下:

docker run -d \  --name=wg-easy \  

-e WG_HOST=123.123.123.123 (🚨这里输入服务器的公网IP) \ 

 -e PASSWORD=passwd123 (🚨这里输入你的密码) \  

-e WG_DEFAULT_ADDRESS=10.0.8.x (🚨默认IP地址)\ 

 -e WG_DEFAULT_DNS=114.114.114.114 (🚨默认DNS)\ 

 -e WG_ALLOWED_IPS=10.0.8.0/24 (🚨允许连接的IP段)\  -

e WG_PERSISTENT_KEEPALIVE=25 (🚨重连间隔)\  

-v ~/.wg-easy:/etc/wireguard \ 

 -p 51820:51820/udp \  

-p 51821:51821/tcp \ 

 --cap-add=NET_ADMIN \ 

 --cap-add=SYS_MODULE \ 

 --sysctl="net.ipv4.conf.all.src_valid_mark=1" \  

--sysctl="net.ipv4.ip_forward=1" \ 

 --restart unless-stopped \  

weejewel/wg-easy

当基于docker容器技术的WireGuard服务器建立后,按照“http://ip:端口号”(例如用tcp端口号:51821,但不能用udp端口)访问WireGuard服务器管理页面:



 点击“NEW”选择新建客户端文件,本人选择第一个创建nas的配置文件,之所以要创建基于WireGuard的VPN连接,是因为需要在外网访问nas,虽然我可以通过域名公网访问nas,但是基于安全问题,使用VPN连接更加安全,那就来建立一个隧道吧。

                                       二、为NAS服务器创建WireGuard客户端

通过上一步,点击"NEW"新建客户端配置文件,配置文件的命名可以随意,我的命名是“nas”,点击“CREATE”,自动创建客户端配置文件,然后点击下载,把文件保存在本地,文件的格式是“*.conf”通过记事本打开 里面的内容是:

[Interface] PrivateKey = ************************************** 

Address = 10.0.8.3/24 

DNS = 223.5.5.5

[Peer] 

PublicKey = ********************************************** 

PresharedKey = ******************************************* 

AllowedIPs = 10.0.8.0/24

PersistentKeepalive = 25

Endpoint = 服务器IP地址:51820

因为我的nas是威联通Q453Bmini,群辉/Unraid大同小异,所以我就以QTS操作系统来介绍了。

首先登录nas系统,找到"QVPN Server"这个app,没有的可以通过app center下载:


因为我们要建立的是客户端,所以必须选择“VPN连接配置文件” 这个选项:


 打开后,选择加入:


点击“加入”,出现下图,并选择“WireGuard” :


 出现如下对话框,并编辑:



服务器名称:自定义,私钥:选择刚刚下载好的配置文件里的 ‘PrivateKey = ’后面的字符串,并点击生成密钥对用以生成该客户端的公钥,IP地址:填入配置文件里的IP地址,这个IP地址就是nas的地址,侦听端口可以不填,DNS服务器地址:随意,然后Peer Setting(对端配置,相当于配置服务器端的参数),公钥:填入配置文件里“PublicKey =”后面的字符串,断点:填入“Endpoint = ”后面的IP地址和端口号,点开“高级设置”,预共享密钥:填入“PresharedKey =”后面的字符串,允许的IP:填入“AllowedIPs =”后面的字符串,永久有效:随便填,但是不要太大,点击保存。

最后点击连接即可:

可以通过ping命令测试是否联通。

                                                   三、Windows客户端配置

首先在服务器端先创建客户端配置文件,这里我创建的是“PC”,下载到本地,然后下载windows客户端,客户端需要在WireGuard官网下载windows客户端,官网地址:wiregurd (wireguard.com),下载安装后打开如下图所示:


 选择“新建隧道”,在选择窗选定刚刚下载的“PC”客户端配置文件,出现下图,点击“连接”即可:


 

                                                        四、配置手机客户端

首先在服务器端创建手机端配置文件,打开二维码:


 

然后在官网下载安卓或者ios安装文件, 安装好后,打开WireGuard手机客户端,点击“+”号,选择“扫面二维码”即可。

                                                五、Ubuntu客户端的配置

 关于Ubuntu客户端的配置,我个人认为是最难的,因为我对Linux只是处于了解状态,而且ubuntu一般作为服务器端使用,对于客户端的使用也少之又少,所以相关的资料基本没有。

不过,笔者最近安装了Ubuntu的最新操作系统Ubuntu22.04桌面版,感觉很惊艳啊,在micros Egde浏览器的加持下,Ubuntu系统也基本上够用了。所以很想为Ubuntu系统安装一个WireGuard客户端,能在Ubuntu系统上使用VPN访问我的威联通NAS就完美了,虽然没有资源可以使用,但是很多原理是相通的。

Come On!~~!~~!~~Ubuntu22.04  jammy jellyfish!!



所以,按照前面的规则,先在服务器端创建好ubuntu客户端配置文件,然后下载到ubuntu系统本地,将文件名重命名为wg0.conf,并保存在‘etc/wireguard ’文件夹,若没有路径则以以下命令创建:mkdir -p /etc/wireguard,必须要有这一步,因为后面用得到。

WireGuard-Ubuntu客户端可以通过终端安装,也可以从官网下载.deb客户端和wirguard-tool.deb,再通过软件中心安装。

安装好后就可以在终端操作了:

  1. 最高权限登录终端:

    sudo -i

  2. 提示输入密码:

  3. 虽然导入了配置文件,但是直接运行的时候出错了,提示网络错误,服务无法启动。后来查阅各方资料发现对于Linux系统,必须要在配置文件‘wg0.conf’设定本机网络参数,具体请看下文。

  4. 首先需要查看本机网络,对于使用公共 IP 地址通过 SSH 或其他协议访问的远程对等方,需要向对等方的文件添加一些额外的规则。这些规则将确保您在连接系统时仍可以从隧道外部连接到系统。否则,当建立隧道时,通常在公共网络接口上处理的所有流量将无法正确路由以绕过隧道接口,从而导致无法访问的远程系统:

    输入:ip route list table main default

    输出:

          default dev wg0 scope link 

           default via 192.168.45.47 dev wlp1s0 proto dhcp metric 600     

     记下网关突出显示的 IP 地址以供以后使用,并记下网卡号wlp1s0 当然每个人的设备名称可能不同。如果是这样,请在命令中替换它。

  5. 输入:ip -brief address show wlp1s0   

    输出:

    wlp1s0           UP        192.168.45.40/24                  240e:44d:5414:502:58b0:27f0:1da5:492e/64  240e:44d:5414:502:28b8:eb1f:fc41:b387/64 fe80::a547:c15d:61b5:4d78/64

  6. 输入:sudo nano /etc/wireguard/wg0.conf

     编辑 wg0.conf文件将得到的网络信息以固定格式加入:

    PostUp = ip rule add table 200 from xxx.xxx.xxx.xxx(本机IP地址),

    PostUp = ip route add table 200 via xxx.xxx.xxx.xxx(网关IP地址),

    PreDown = ip rule delete table 200 from xxx.xxxx.xxx.xxx(本机IP),

    PreDown = ip route delete table 200 via xxxx.xxx.xxx.xxx(网关IP地址),

    保存,这些线路将创建自定义路由规则,并添加自定义路由以确保到系统的公共流量使用默认网关。

    如以下格式:

    [Interface]

    PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx

    Address = 10.0.9.5/24

    DNS = 114.114.114.114

    PostUp = ip rule add table 200 from 192.168.222.87

    PostUp = ip route add table 200 default via 192.168.208.1

    PreDown = ip rule delete table 200 from 192.168.222.87

    PreDown = ip route delete table 200 default via 192.168.208.1


        [Peer]

       PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

       PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

          AllowedIPs = 10.0.9.0/24

          PersistentKeepalive = 25

          Endpoint = xxx.xxx.xxx.xxx:xxxxx


  7. 如果您通过VPN路由所有流量并设置了DNS转发,则需要在启动隧道之前在WireGuard对等体上安装‘resolvconf‘程序。

    输入:sudo apt install resolvconf     #安装resolvconf 程序

  8. 重启wg0服务:

    输入:sudo wg-quick down wg0         #关闭隧道wg0

    输出: [#] ip link delete dev wg0      [#] resolvconf -d tun.wg0 -f

    输入:sudo wg-quick up wg0           #重新开启隧道wg0

      

8.输入:sudo wg      # 您可以使用此命令检查对等体上隧道的状态               

看到上面的信息基本可以确定客户端已成功开启,也可以通过WireGuard服务器页面查看客户端或者ping命令查看是否正常运行:

最后最好设置开机自启动:

sudo nano /etc/rc.local        #在‘etc’文件夹新建一个rc.local文件,设置开机启动

编辑如下内容并保存:

    ip link add dev wg0 type wireguard

    wg setconf wg0 /etc/wireguard/wg0.conf

    systemctl restart network

这样下来每次开机wg0隧道就能够自动开启了!!!

好了,暂时就写到这了,几大系统配置基本写完了,有不足之处请在评论区指出。。。。。肝了一天的时间,不是一般的累,那后续有机会再更新了。



WireGuard各主流平台的配置教程的评论 (共 条)

分享到微博请遵守国家法律