Fedora33下搭建WireGuard虚拟专用网

Stella981
• 阅读 683

点击上方"walkingcloud"关注,并选择"星标"公众号

Fedora33下搭建WireGuard虚拟专用网

Fedora33下搭建WireGuard虚拟专用网

一、wireguard简单介绍

什么是 WireGuard? 

WireGuard 是一个易于配置、快速且安全的开源 Virtual Private Network,它利用了最新的加密技术。目的是提供一种更快、更简单、更精简的通用 Virtual Private Network,它可以轻松地在树莓派这类低端设备到高端服务器上部署。

IPsec 和 OpenV*_P*_N 等大多数其他解决方案是几十年前开发的。安全研究人员和内核开发人员 Jason Donenfeld 意识到它们速度慢且难以正确配置和管理。

这让他创建了一个新的开源Virtual Private Network 协议和解决方案,它更加快速、安全、易于部署和管理。

WireGuard 最初是为 Linux 开发的,但现在可用于 Windows、macOS、BSD、iOS 和 Android。除了可以跨平台之外,WireGuard 的最大优点之一就是易于部署。配置和部署 WireGuard 就像配置和使用 SSH 一样容易 

WireGuard 受到 Linus 本人的推荐,将整合到最新版Linux Kernel中,安装部署更方便。WireGuard 总共几千行代码,只需十分钟就能搞定一台WireGuard服务器。

Wireguard安全性高。极佳的Virtual Private Network 漫游特性,设备支持广泛。内核级别的端对端隧道加密技术,拥有良好的加密特性。Wireguard配置文件由两部分组成:interface和peer。服务器端、客户端互为平等关系。支持预共享密钥preshared key加密,防攻击

当将 WireGuard 安装为内核模块时,基本上需要你自行修改 Linux 内核并向其添加代码。从 5.6 内核开始,你无需手动添加内核模块。默认情况下它将包含在内核中

Fedora33下搭建WireGuard虚拟专用网

所以下面使用Fedora Server 33版本来配置Wireguard 

(内核版本5.8.15,默认就支持wireguard)

参考如下连接完成

https://www.linode.com/docs/guides/set-up-wireguard-vpn-on-ubuntu/ 

拓扑如下 

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

  1. 左侧内网A Fedora33机器的IP 192.168.233.128作为wireguard Server端 

  2. 在左侧出口路由器上映射192.168.233.128的TCP 22(SSH)和UDP 51820(WireGuard Server通信端口),映射后公网为10.20.90.193(模拟公网IP)

  3. 右侧内网B Fedora33机器的IP 192.168.198.131作为wireguard Client端

二、Wireguard Server端配置

1、Server端安装wireguard

内网IP 192.168.233.128

dnf install wireguard-tools

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

2、创建密钥对

`1、服务端的私钥
wg genkey | tee /etc/wireguard/server.key
yAQFm+E6gVBCG7c72lhRngaCZy+gVzCCpRbudPmuKms=

2、服务端的公钥
cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub
BRPmId4mnGBfCgmniDf3Ar+1cvXcS85pntqYH1w0jlM=

3、客户端的私钥
wg genkey | tee /etc/wireguard/client.key
8F3bI2FydYhh8Ps9Xi2IenrdQrH9xXw6wzJaVrRSSHE=

4、客户端的公钥
cat /etc/wireguard/client.key | wg pubkey | tee /etc/wireguard/client.pub
hXhveUdRmz6uQEr+7fQOh1YQ1c56sTiIXfzHVTmeBGs=
`

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

3、创建wg0的接口配置文件

ip addr或者ifconfig

先确认目前的网络接口名称 

如下图所示网络接口名称 为ens33 

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

接下来编辑wg0.conf

`vi /etc/wireguard/wg0.conf
#添加如下内容
[Interface]
# specify generated private key for server
PrivateKey = yAQFm+E6gVBCG7c72lhRngaCZy+gVzCCpRbudPmuKms=
# IP address for VPN interface
Address = 172.16.100.1
# UDP port WireGuard server listens
ListenPort = 51820

possible to set any commands after WireGuard starts/stops

set routing rules like follows to access to local network via VPN session

[wg0] ⇒ VPN interface name

[eth0] ⇒ Ethernet interface name

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE

[Peer]
# specify public key for client
PublicKey = hXhveUdRmz6uQEr+7fQOh1YQ1c56sTiIXfzHVTmeBGs=
# clients' VPN IP addresses you allow to connect
# possible to specify subnet ⇒ [172.16.100.0/24]
AllowedIPs = 172.16.100.5`

4、内核开启IPv4转发

`vi /etc/sysctl.conf
添加一行
net.ipv4.ip_forward=1

生效配置
sysctl -p
`

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

5、启动wg-quick服务

systemctl enable wg-quick@wg0 systemctl start wg-quick@wg0.service ip addr

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

三、路由器端口映射配置

1)映射192.168.233.128的TCP 22(SSH)——方便调试

2)UDP 51820(WireGuard Server通信端口)

映射后公网为10.20.90.193(模拟公网IP)

由于是使用VMwareWorkstation虚拟机NAT模式搭建的环境,端口映射的配置方式如下

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

四、WireGuard客户端配置

1、安装wireguard-tools

dnf install wireguard-tools 

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

2、添加wg0.conf配置文件

`vi /etc/wireguard/wg0.conf

cat /etc/wireguard/wg0.conf
添加如下配置
[Interface]
# specify private key for client generated on WireGuard server
PrivateKey = 8F3bI2FydYhh8Ps9Xi2IenrdQrH9xXw6wzJaVrRSSHE=
# IP address for VPN interface
Address = 172.16.100.5

[Peer]
# specify public key for server generated on WireGuard server
PublicKey = BRPmId4mnGBfCgmniDf3Ar+1cvXcS85pntqYH1w0jlM=
# IP addresses you allow to connect
# on the example below, set WireGuard server's VPN IP address and real local network
AllowedIPs = 172.16.100.1, 192.168.233.0/24
# specify server's global IP address:port
# (acutually, example of IP below is for private range, replace to your own global IP)
EndPoint = 10.20.90.193:51820
`

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

3、nc探测端口是否通

nc -vuz 10.20.90.193 51820

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

4、若端口可通,启动wg0接口

wg-quick up wg0 #关闭则用wg-quick down wg0

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

5、wg show查看连接状况并测试是否可以访问到Server端的网络

wg show

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

如下图所示,测试OK,WireGuard虚拟专用网搭建成功

Fedora33下搭建WireGuard虚拟专用网

(图片可放大查看)

Tips

若Server端没有关闭firewalld防火墙,可能会导致客户端无法访问Server端的LAN网络 

需要在Server端关闭firewalld防火墙并重启wg-quick服务

本文分享自微信公众号 - WalkingCloud(WalkingCloud2018)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
GitHub 上有哪些适合新手跟进的优质项目?
!(https://oscimg.oschina.net/oscnet/011f28e3bc332010e1442e6c00ed344805d.jpg)点击上方“迈微电子研发社”,选择“星标★”公众号重磅干货,第一时间送达!(https://oscimg.oschina.net/oscnet/cd44ba75f
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
3年前
ClickHouse大数据领域企业级应用实践和探索总结
点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源!(https://oscimg.oschina.net/oscnet/bb00e5f54a164cb9827f1dbccdf87443.jpg)!(https://oscimg.oschina.net/oscnet/dc8da835ff1b4
Stella981 Stella981
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
可莉 可莉
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这