为Ubuntu22.04系统配置WireGuard客户端

2024-03-13 03:50

本文主要是介绍为Ubuntu22.04系统配置WireGuard客户端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于Ubuntu客户端的配置,我个人认为是最难的,因为我对Linux只是处于了解状态,而且ubuntu一般作为服务器端使用,对于客户端的资料基本没有,但是笔者最近安装了Ubuntu的最新操作系统Ubuntu22.04桌面版,感觉很惊艳啊,在micros Egde浏览器的加持下,Ubuntu系统也基本上够用了,所以很想为Ubuntu系统安装一个WireGuard客户端。

 

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

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

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

  1. 最高权限登录终端:

    sudo -i

  2. 提示输入密码:

    [sudo] mrhou 的密码:

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

  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 = xxxxxxxxxxxxxxxxxxxxxxxxxxxAddress = 10.0.9.5/24DNS = 114.114.114.114PostUp = ip rule add table 200 from 192.168.222.87PostUp = ip route add table 200 default via 192.168.208.1PreDown = ip rule delete table 200 from 192.168.222.87PreDown = ip route delete table 200 default via 192.168.208.1[Peer]PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxPresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAllowedIPs = 10.0.9.0/24PersistentKeepalive = 25Endpoint = 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命令查看是否正常运行:

 

 

这篇关于为Ubuntu22.04系统配置WireGuard客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/803559

相关文章

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

Ubuntu22.04回退系统内核

文章目录 起因回退操作卸载内核禁止内核升级 起因 最近因为系统内核自动升级,导致显卡驱动检测不到,炼丹环境被破坏。无奈只能重装驱动,于是跟着手册操作发现驱动要求的是内核版本是5.15.0-25-generic,而我通过uname -r发现这时候的内核版本是6.8.0-40-generic,看来只能回退了。 我搜索了网上很多的文章,没有一篇文章能够完全解决这个问题,所以在我多次尝

Redis 客户端Jedis使用---连接池

Jedis 是Redis 的Java客户端,通过一段时间的使用,jedis基本实现redis的所有功能,并且jedis在客户端实现redis数据分片功能,Redis本身是没有数据分布功能。 一、下载jedis 代码 jedis 代码地址:https://github.com/xetorthio/jedis 再次感受到开源的强大。呵呵,大家有时间可以看看源码。 二、项目中如何使用Jedi

Java Socket服务器端与客户端的编程步骤总结

一,InetAddress类: InetAddress类没有构造方法,所以不能直接new出一个对象; 可以通过InetAddress类的静态方法获得InetAddress的对象; InetAddress.getLocalHost(); InetAddress.getByName(""); 类主要方法: String - address.getHostName(); String - addre

9.7(UDP局域网多客户端聊天室)

服务器端 #include<myhead.h>#define SERIP "192.168.0.132"#define SERPORT 8888#define MAX 50//定义用户结构体typedef struct{struct sockaddr_in addr;int flag;}User;User users[MAX];//用户列表void add_user(struct s

【知识分享】MQTT实战-使用mosquitto客户端连接emqx服务器

一、简介     MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的通信协议,旨在实现物联网设备之间的低带宽、高延迟的通信。MQTT协议设计简洁,使用TCP/IP协议进行通信,适用于各种网络环境,尤其适合在有限的网络带宽和不稳定的网络连接条件下进行通信。     MQTT的工作原理是基于发布/订阅模式的消息传递,它包括两个主要

【深入解析】AI工作流中的HTTP组件:客户端与服务端执行的区别

在当今快速发展的技术环境中,AI工作流的设计和实现变得愈发重要。尤其是在处理HTTP组件时,前端执行与后端执行之间的区别,往往会对系统的安全性和数据的准确性产生深远的影响。今天,我们就来深入探讨这一话题,揭示前端执行如何有效避免风控,以及它在获取本地数据方面的优势。 AI工作流+各种大模型=能用AI-工作流传送门:https://www.nyai.chat/chat?invite=nyai_