为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

相关文章

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

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