本文实现三台机器的互联,一台server端,二台客户端,系统均为win,server win10, client 一台win7,一台win10,开源地址:可以下载windows ,mac ,linux ,android各种版本

WireGuard · GitHub

我们下使用的是wireguard-windows版本

windows版本这个既可以当服务端,也可以当客户端来用。首先我们配置一下服务端

配置如下:

服务段配置如下:

[Interface]
PrivateKey = gKyDkJ17/xrc/8X7RQDiJpnVMQoCMGkXGbvonLntxXg=
ListenPort = 55555
Address = 10.254.0.1/24
[Peer]
PublicKey = +iYeKrWo54FskCVmix1rLOXWfnnO4FPnS0J2SNZcWkU=
AllowedIPs = 10.254.0.2/32[Peer]
PublicKey = osB5o/qRjglwcnmCCHEAPk23G23l/XAWJoRCnjfnDAI=
AllowedIPs = 10.254.0.3/32

Client2端如下

[Interface]
PrivateKey = 4Gp4c+SNuZ2HAfD2qQ4JxyTF+OhW+WqE0A/mKLUZa3Y=
Address = 10.254.0.2/32
DNS = 114.114.114.114
[Peer]
PublicKey = wpCeLCeoTsV9Q3VG7vJnklNxf3qAt53S0vyMPSVaGwA=
AllowedIPs = 0.0.0.0/0
Endpoint = 10.10.10.11:55555
PersistentKeepalive = 25

Client3端如下

[Interface]
PrivateKey = qANM2T7N/675+zFyRucuOGBtRIegLoTJphdXoKiJAXo=
Address = 10.254.0.3/32
DNS = 114.114.114.114
[Peer]
PublicKey = wpCeLCeoTsV9Q3VG7vJnklNxf3qAt53S0vyMPSVaGwA=
AllowedIPs = 0.0.0.0/0
Endpoint = 10.10.10.11:55555
PersistentKeepalive = 25

这样当client2,3连通时,他们所有的IP就都走server了。但是发现打开baidu.com打不开,还要在server上面设定一下

1, 管理员 身份打开PowerShell(一定是powershell哦)

2,查找刚创建的虚拟交换机的接口索引。

可以通过运行 Get-NetAdapter 来查找接口索引

你的输出应类似下面的形式:

3,使用 New-NetIPAddress 配置 NAT 网关。

New-NetIPAddress -IPAddress <NAT Gateway IP> -PrefixLength <NAT Subnet Prefix Length> -InterfaceIndex <ifIndex>

若要配置网关,你将需要一些有关你的网络的信息:

  • IPAddress - NAT 网关 IP 指定要用作 NAT 网关 IP 的 IPv4 或 IPv6 地址。
    常规形式将为 a.b.c.1(例如 172.16.0.1)。 尽管最后一个位置不一定必须是.1,但通常是(基于前缀长度)

    通用网关 IP 为 192.168.0.1

  • PrefixLength -- NAT 子网前缀长度定义的 NAT 本地子网大小(子网掩码)。 子网前缀长度将介于 0 到 32 之间的一个整数值。

    0 将映射整个 Internet,32 则只允许一个映射的 IP。 常用值范围从 24 到 12,具体要取决于多少 IP 需要附加到 NAT。

    常用 PrefixLength 为 24 -- 这是子网掩码 255.255.255.0

  • InterfaceIndex -- ifIndex 是你在上一步中确定的虚拟交换机的接口索引。

运行以下内容来创建 NAT 网关:

New-NetIPAddress -IPAddress 10.254.0.2 -PrefixLength 24 -InterfaceIndex 79

这时查看server配置ipv4时 就会有了ip地址

使用 New-NetNat 配置 NAT 网络。

下面是常规命令:

PowerShell复制

New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix>

若要配置网关,你将需要提供一些有关网络和 NAT 网关的信息:

  • Name - NATOutsideName 描述 NAT 网络的名称。 将使用此参数删除 NAT 网络。

  • InternalIPInterfaceAddressPrefix - NAT 子网前缀同时描述上述 NAT 网关 IP 前缀和上述 NAT 子网前缀长度。

常规形式将为 a.b.c.0/NAT 子网前缀长度

综上所述,对于本示例,我们将使用 192.168.0.0/24

对于我们的示例,运行以下命令以设置 NAT 网络

New-NetNat  -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 10.254.0.0/24

当再次执行下面命令时

New-NetNat  -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 10.254.0.0/24

会报错,因为已经生成了

使用NetNat可以查看已经建立好的 NAT 网络

使用Remove-NetNat可以清空Nat网络

这样,客户端所有上网的访问都是经过了10.10.10.11来上网了。

如果有些网站不想经过10.10.10.11来使用可以改进

[Interface]
PrivateKey = 4Gp4c+SNuZ2HAfD2qQ4JxyTF+OhW+WqE0A/mKLUZa3Y=
Address = 10.254.0.2/32

[Peer]
PublicKey = wpCeLCeoTsV9Q3VG7vJnklNxf3qAt53S0vyMPSVaGwA=
AllowedIPs = 0.0.0.0/0
Endpoint = 10.10.10.11:55555
PersistentKeepalive = 25

注意替换PublicKey为计算机A的公钥,Endpoint为计算机A的IP地址,PersistentKeepalive为保持连接的时间,单位为秒。

AllowedIPs设置为0.0.0.0/0的含义为路由此计算机的所有流量至私有网络。

PersistentKeepalive该参数可不设置,但设置了该参数,则客户端会在每次连接后发送心跳包,保持连接。

LINUX 版本

服务端:

  1. apt update
  2. apt install wireguard
  3. apt install resolvconf
  4. 验证是否安装成功:
    modprobe wireguard && lsmod | grep wireguard
    
  5. cd /etc/wireguard/
  6. 生成服务端和客户端的公钥私钥
    wg genkey | tee sprivatekey | wg pubkey > spublickey
    wg genkey | tee cprivatekey | wg pubkey > cpublickey
    

    spublickey 是服务端的公钥 sprivatekey是服务端的私钥, cpublickey 是客户端的公钥 cprivatekey是客户端的私钥

  7. 打开防火墙转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

8.生成服务端配置文件

echo "[Interface]
PrivateKey = $(cat sprivatekey)
Address = 10.254.0.1/24
#如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称,可用ens33或者用ip a 命令进行查看
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#端口号55555是随意的,但是要在防火墙上打开
ListenPort = 55555
DNS = 114.114.114.114
MTU = 1420
#[Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号
[Peer]
PublicKey = $(cat cpublickey)
AllowedIPs = 10.254.0.2/32"|sed '/^#/d;/^\s*$/d' > wg0.conf

9,生成客户端配置文件

echo "[Interface]
PrivateKey = $(cat cprivatekey)
Address = 10.254.0.2/24
DNS = 114.114.114.114
MTU = 1420
[Peer]
PublicKey = $(cat spublickey)
# 服务器地址和端口,下面的 X.X.X.X 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口
Endpoint = X.X.X.X:55555
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25"|sed '/^#/d;/^\s*$/d' > client.conf

10,启动Wireguard

wg-quick up wg0

11,停止Wireguard

wg-quick down wg0

12,查看Wireguard状态

wg

13,如果是云服务器,安全规则记得增加对应端口48888

14,配置多用户

#重新生成一对客户端密匙
#cprivatekey1 为客户端私匙,cpublickey1 为客户端公匙

wg genkey | tee cprivatekey1 | wg pubkey > cpublickey1

#服务器上执行添加客户端配置代码(新增一个 [peer]):
#$(cat cpublickey1) 这个是客户端公匙,10.254.0.3/32 这个是客户端内网IP地址,按序递增最后一位(.3),不要重复

wg set wg0 peer $(cat cpublickey1) allowed-ips 10.254.0.3/32
wg-quick save wg0

#生成客户端配置文件1

echo "[Interface]
PrivateKey = $(cat cprivatekey1)
Address = 10.254.0.3/24
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = $(cat spublickey)
Endpoint = X.X.X.X:55555
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25"|sed '/^#/d;/^\s*$/d' > client1.conf

配置后需要重启服务

wg-quick down wg0
wg-quick up wg0

设置开机启动

systemctl enable wg-quick@wg0

取消开机启动

systemctl disable wg-quick@wg0

linux配置wirguard原文链接:https://blog.csdn.net/weixin_43805459/article/details/120163031

另外在腾讯云上使用上面的方法配制时有问题,因为腾讯云的服务器上的eth0对应的IP没有对应真实IP存在问题

wireguard windows\linux版本client\server的配置相关推荐

  1. 【Tableau server 日常运维19】Linux版本Tableau Server视图出现如下图乱码解决方案

    Linux版本Tableau Server视图出现如下图乱码解决方案 第一步检查linux系统当前语言包及已安装语言环境 如果是en_us.UTF-8,请安装为下图zh_cn.UTF-8 重启服务器如 ...

  2. Redis在Windows+linux平台下的安装配置(转)

    window平台Redis安装 下载地址: http://code.google.com/p/servicestack/wiki/RedisWindowsDownload Redis文件夹有以下几个文 ...

  3. linux下sqlmap安装教程,(转)Sqlmap官网下载与安装教程[windows/linux版本]

    转自:http://www.vuln.cn/2000 sqlmap的功能与强大性不必多言,方便大家下载,给大家整理了下sqlmap最新版的官网与github下载地址. 官网下载地址 github下载 ...

  4. 配置Linux版本teamviewer

    背景 如公司无法提供VPN,且需要远程连办公网,teamviewer一定是最适合该场景,本人长期使用,当然是windows系统下,有些场景,例如给系统合作方提供远程连接,以方便他们对自家产品提供配置. ...

  5. MySQL在Windows和Linux平台上多版本多实例安装配置方法(5.5、5.6、5.7、8.0)

    MySQL在Windows和Linux平台上多版本多实例安装配置方法(5.5.5.6.5.7.8.0) Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 参考: http:// ...

  6. windows linux 共享鼠标,在Ubuntu/Windows下配置Synergy-键盘鼠标共享

    Synergy能做什么 Synergy是一款能够让使用者仅用一套键盘鼠标,在包括 Windows . Linux . Mac OS 等不同的系统上安装它,并且在设定好主从关系后,就能够同时操控多个电脑 ...

  7. Windows Server 2016 配置指南 全系列

    配置 和 Linux 平台不一样,往往我们使用 Windows Server 都会选择有 GUI 的图形化版本(高手用 Core 也不用看我半吊子的教程了),而且 Windows 又自身占了一部分内存 ...

  8. windows + Linux 自定义模板配置 怎么使用自定义规范管理器

    转载: https://www.cnblogs.com/itfat/p/8342938.html win2008以上的系统,在vmware esxi5.5里怎么使用自定义规范管理器?sysprep 经 ...

  9. Linux环境——MySQL安装及配置(5.7版本)

    数据库安装包下载地址:https://dev.mysql.com/downloads/mysql/ 选择适合自己的版本,我的环境是Linux  Red Hat Enterprlse Linux (64 ...

最新文章

  1. 005_Spring的属性注入
  2. noip模拟赛 Chtholly Nota Seniorious
  3. 图像识别 43个模型
  4. Qt Linguist基于文本ID的翻译
  5. 【maven install报错】Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
  6. 吴恩达机器学习之单变量线性回归实现部分
  7. Python基础——isupper()方法和islower()方法
  8. DNSPOD实现DDNS动态域名解析功能
  9. centos7 mysql dump还原_CentOS 7.6使用mysqldump备份恢复MariaDB
  10. nginx 配置基于域名的虚拟主机
  11. 临别给《生活大爆炸》做个台词数据分析,你猜谢耳朵最爱说什么?
  12. GnomeSort(侏儒排序)——C语言实现
  13. [telink sig mesh] 周期Publish
  14. java获取文件后缀_Java获取文件后缀的两种方式
  15. 简析穷举算法,及其简单应用
  16. html中定义动画anima,css中animation怎么用
  17. 【渝粤题库】陕西师范大学111119 统计学作业
  18. Markdown语法002:引用
  19. 安搭Share:三星接班人李在镕或成韩方最富股东,持有票市值近百亿美元
  20. linux系统的烤机软件,NVIDIA英伟达 GeForce8/9/100/200/300/400/500/GeForce 600系列显卡Linux驱动...

热门文章

  1. java 登录牵手_java初探(1)之登录总结
  2. 简介------Comparable接口介绍及冒泡排序
  3. 竞争激烈的智能音箱市场 华为靠什么杀出重围
  4. 使用rome实现RSS 订阅
  5. 积跬步以至千里 中睿天下正式发布XDR解决方案
  6. 2010上海工博会上的宜科展台
  7. 互联网自媒体平台大全,你知道多少?
  8. python类例子(开枪)
  9. docker部署Portainer
  10. 赶紧收藏:画廊恒温恒湿,原来这么重要