0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在 Ubuntu 上搭建 WireGuard 服务器,实现远程登录

瑞科慧联(RAK) 2022-08-25 16:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在本文中,我将向大家展示如何在 Ubuntu上搭建 WireGuard服务器,从而实现远程登录。

首先,我们先来了解一下,什么是 WireGuard?

WireGuard 简介

WireGuard 是一款非常简单快捷的 VPN工具,采用了最先进的加密技术。它的目标是比 IPsec 更快,更简单,更精简易用,同时避免大规模配置的麻烦。WireGuard被设计为通用 VPN,用于在嵌入式接口和超级计算机上运行,适用于多种不同环境。WireGuard 最初是为 Linux 内核发布的,现在已经可广泛部署并且跨平台支持(Windows,macOS,BSDiOSAndroid)。WireGuard 目前发展迅速,并且已经被认为是业内最安全,最易用和最简单的 VPN 解决方案。

WireGuard 基本概念

WireGuard 中涉及到几个基本概念:

  • Peer:WireGuard 中的节点。
  • 私钥(Private key):每个节点自己的私钥,可以使用wg genkey 生成。
  • 公钥(Public key):每个节点自己的公钥,可以使用wg pubkey 生成。
  • AllowedIPs:定义每个节点允许通过的IP地址段。
Wireguard服务器原理

下面是 WireGuard的配置步骤:

1、创建虚拟网卡 eth0

2、使用私钥和对端的公钥对其进行配置建立连接

3、通过接口开始交换数据包

以上为建立一个 WireGuard VPN 链接的过程,建立好后,A 设备与 B 设备互相需要保证虚拟网卡的 IP 在相同网段中,并且这个网段被 WireGuard 的配置文件 AllowedIPs 所允许通过,最后,在 WireGuard 中的所有数据报文,都采用UDP的方式发送。

WireGuard 安装

前期准备

云端服务器 x 1

系统:Ubuntu Server 18.04.1 LTS 64bit

可访问网络的 PC x 1

系统:Windows11

Ubuntu服务器 IP地址 42.192.113.207

WireGuard主端虚拟IP地址172.16.1.11

PC

WireGuard对端虚拟地址:172.16.1.14

安装 WireGuard服务器

sudo apt install -y wireguard

安装Wireguard服务器

配置 WireGuard服务器

进入 wireguard目录

cd /etc/wireguard/


使用命令生成一对公钥与私钥

wg genkey | tee privatekey | wg pubkey > publickey && cat privatekey && cat publickey

生成公钥与私钥

注意查看 WireGuard 生成的 PublicKey 是

q/fe0sDI0BUzs5OwiLfyqjN5Y40LTHk01rgLkHBDgRM=

WireGuard PC对端客户端配置

PC端Wireguard客户端

新建空隧道

新建Wireguard空隧道

获得对端 PublicKey

QjvFxlqoQYnToTT6snhhly2D8ZASb6GzuO81ALSIG3E=

文件配置:

[Interface] 

PrivateKey=IIDs0Jv/iCn08+mXvoXRTuiIzhUziIeyF6hlOEq63lw=

Address=172.16.1.14/32

 [Peer] 
 
 PublicKey=q/fe0sDI0BUzs5OwiLfyqjN5Y40LTHk01rgLkHBDgRM=
 
 AllowedIPs=172.16.1.11/24
 
 Endpoint=42.193.113.207:51820
 
 PersistentKeepalive=25

WireGuard主端文件配置

创建服务器配置文件 wg0.conf

nano wg0.conf

[Interface]
Address = 172.16.1.11/24   #服务器虚拟地址
ListenPort = 51820         #监听端口
PrivateKey = IJ6niaDAl2/UXVApMIBAX8QjMgApDRTBtNHBsVi9z3o=  #服务器 PrivateKey
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE

[Peer]
PublicKey =QjvFxlqoQYnToTT6snhhly2D8ZASb6GzuO81ALSIG3E=    #对端 Publickey
AllowedIPs = 172.16.1.14/32     #对端虚拟IP地址
PersistentKeepalive = 25        #上传心跳包间隔

创建网卡配置文件,文件名为 wg0

ip link add dev wg0 type wireguard
ip address

网络接口配置虚拟IP 地址(此虚拟 IP地址为前期准备中的 172.16.1.11/24)

ip address add dev wg0 172.16.1.11/24 ip address

配置虚拟IP

创建一个私钥,用于 WireGuard 使用,并配置权限禁止他人访问

wg genkey | tee /tmp/private-key chmod 600 /tmp/private-key wg set wg0 private-key /tmp/private-key listen-port 51820

创建私钥

启动网络接口

ip link set wg0 up ip address

启用网络接口

此时我们创建好了本地节点,需要配置哪些节点是我们的对端,才能建立网络连接。

通过 PC安装的 WireGuard客户端连接 WireGuard服务器

客户端配置生效

点击连接

客户端连接Wireguard服务器

wg查看连接状态

查看连接状态

备注:其他相关命令

1、启动 WireGuard

wg-quick up wg0

2、停止 WireGuard

wg-quick down wg0

3、查看 WireGuard运行状态

Wg

4、WireGuard 配置说明

[Interface]
Address = 172.16.1.11/24    #本机地址与掩码位数 (IPV4)
ListenPort = 51820         #本机监听 WireGuard 端口
PrivateKey = IJ6niaDAl2/UXVApMIBAX8QjMgApDRTBtNHBsVi9z3o=  #本机加密私钥
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
#启动前操作
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE
 #停止后操作
[Peer]
PublicKey =QjvFxlqoQYnToTT6snhhly2D8ZASb6GzuO81ALSIG3E=    #本机加密的对端公钥(加密后数据仅对端可以解密)
AllowedIPs = 172.16.1.14/32     #本机允许的对端设备的 IP 地址段,其实就是在本机中这个虚拟网卡接收到对端发来的源地址都允许有哪些设备 IP 地址(多 peer 不可重复)
PersistentKeepalive = 25         #当会话存在一端 IP 地址为 NAT 地址或虚假公网 IP 地址时,由该方阶段性每 25 秒发送 keepalive 报文保持会话的可用性,防止被设备终止。

在上文的基础上,大家需要额外注意以下这些内容:

1、如果你存在多个 [Peer] ,则在下面直接增加一个新的 [Peer] 栏目;

2、如果多个 Peer 存在不同的 IP,请不要让 AllowedIPs 存在重叠的 IP 地址段(比如配置多个相同 /24 只有一个生效);

3、Endpoint 既支持以域名的方式访问,也支持以 IP 的方式访问;

4、会话链接的建立只要保证两端数据在一台设备上成功协商,即使动态 IP 地址变更也不会影响 VPN 的稳定性;

5、ListenPort 不添加会自动生成高位端口用来 peer,以及主从结构下,从端不填写 listenport;

6、Table 参数可以使用 auto 和 off,两者分别对应"自动注入路由"和"禁止注入"。不配置采用 auto;

7、如果你是主从结构,需要让从端在配置中将从端的"AllowedIPs ="补写一条内容 0.0.0.0/0,::0 以允许所有流量;

8、PreUp,PostUp,PreDown,PostDown 这四个命令参数,是作为 wg-quick 快速设置/删除接口之前/之后由 bash(1)执行的四条命令,常用于配置自定义 DNS 或防火墙规则。 特殊字符串 %i 作为变量替代所控制的 INTERFACE 配置名。每个命令参数都支持多条命令,参数内的多条命令将按前后顺序依次执行,分隔符为 ; 分号。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Ubuntu
    +关注

    关注

    5

    文章

    603

    浏览量

    32861
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    服务器远程连接超时以及拒绝连接的真实缘由和解决办法

    ,这类问题在Linux的SSH、Windows的RDP、数据库连接以及API接口访问中都挺常见。 最常见的情形包含:SSH没办法连接服务器、RDP不能远程登录Windows、数据库端口访问超时、内网
    的头像 发表于 11-19 15:34 426次阅读

    飞凌嵌入式ElfBoard-常用的网络服务搭建之SSH服务搭建

    SSH为Secure Shell的缩写,由IETF的网络小组(Network Working Group)所制定的建立应用层基础的安全协议。SSH是较可靠,专为远程登录会话和其他网
    发表于 10-24 08:48

    飞凌嵌入式ElfBoard-常用的网络服务搭建之NFS服务搭建

    :~/nfs_rootfs$ sudo /etc/init.d/nfs-kernel-server restart2.验证开发板验证nfs服务器,执行完以下命令将nfs服务器挂载到
    发表于 10-22 09:23

    SSH 远程连接内网 Linux 服务器

    。 前提条件 使用 ZeroNews SSH 远程连接 Linux 服务器之前,请确认您的 Linux 服务器已开启远程连接
    的头像 发表于 09-17 19:52 276次阅读
    SSH <b class='flag-5'>远程</b>连接内网 Linux <b class='flag-5'>服务器</b>

    怎样阿里ECS服务器架设自己的OpenVPN服务器

    需要自己架设服务器,让现场的IR615路由连接自己的服务器。能通过自己的服务器进行数据采集和远程运维。
    发表于 08-06 06:56

    恒讯科技分析:Ubuntu服务器数据共享高效方案

    在当今云计算时代,企业对于数据共享的需求日益增长,尤其是使用Ubuntu服务器的场景下,如何实现高效、安全的数据共享成为关键问题。本文将为您详细介绍几种主流的
    的头像 发表于 07-09 21:40 1180次阅读

    恒讯科技分析:云储存服务器搭建教程

    搭建云存储服务器是一个相对复杂但极具实用性的项目,以下是一个简化的搭建教程,帮助你快速入门。 一、明确需求 搭建云存储
    的头像 发表于 07-07 11:07 1061次阅读

    存储服务器怎么搭建?RAKsmart实战指南

    搭建存储服务器需兼顾硬件性能、数据冗余与安全访问。以RAKsmart服务器为例,整体流程可分为五步:需求评估→硬件选型→RAID配置→系统部署→网络设置。以下是小编对RAKsmart存储服务器
    的头像 发表于 04-01 10:09 965次阅读

    服务器怎么搭建

    服务器搭建是一个涉及多个方面的复杂过程,从硬件选择到软件配置,再到安全防护和日常维护,每一步都需细心规划与实施。下面,小库为您简要介绍服务器搭建的基本步骤。
    的头像 发表于 03-04 13:04 1197次阅读

    windows搭建ftp服务器的步骤

    Windows系统搭建FTP(文件传输协议)服务器通常涉及一系列步骤,包括安装必要的服务、配置服务器
    的头像 发表于 02-01 15:49 2167次阅读

    ftp服务器怎么搭建

    搭建FTP(文件传输协议)服务器是一个涉及多个步骤的过程,这些步骤包括选择合适的FTP服务器软件、安装软件、配置服务器以及测试连接等。 一、选择合适的FTP
    的头像 发表于 02-01 15:43 1396次阅读

    采用华为云 Flexus 云服务器 X 实例部署 MQTT 服务器完成设备

    一、前言 1.1 开发需求 这篇文章讲解: 采用华为云最新推出的 Flexus 云服务器 X 实例 EMQX 服务器搭建 MQTT 服务器,完成设备
    的头像 发表于 12-26 18:12 990次阅读
    采用华为云 Flexus 云<b class='flag-5'>服务器</b> X 实例部署 MQTT <b class='flag-5'>服务器</b>完成设备<b class='flag-5'>上</b>云

    搭建云电脑的成本,搭建云电脑的成本有哪些因素?

        服务器远程连接是指通过网络技术,远程位置控制和访问服务器。通过远程连接,用户可以在任何
    的头像 发表于 12-24 13:40 1042次阅读
    <b class='flag-5'>搭建</b>云电脑的成本,<b class='flag-5'>搭建</b>云电脑的成本有哪些因素?

    如何远程登录路由

    已经连接到互联网,并且能够通过局域网内的设备(如电脑、手机等)进行访问。 其次 ,需要远程访问的设备(如手机、电脑等),访问节点小宝的官方网站下载并安装节点小宝,登录账号 三 、添
    的头像 发表于 12-18 12:01 1554次阅读
    如何<b class='flag-5'>远程</b><b class='flag-5'>登录</b>路由<b class='flag-5'>器</b>

    如何实现NFS服务搭建

    共享资源挂载到本地机器的目录上。 企业生产集群为什么需要共享存储 这个共享存储对于中小企业,也就是使用服务器配置NFS网络文件共享系统实现。 什么是共享存储     简单说就是将很多台服务器的数据,都可以保存在同一个存储
    的头像 发表于 12-10 10:10 1194次阅读
    如何<b class='flag-5'>实现</b>NFS<b class='flag-5'>服务</b><b class='flag-5'>搭建</b>