当前位置:   article > 正文

【WireGuard/虚拟局域网/联机/低成本】使用WireGuard组建虚拟局域网联机的低成本可行方案

虚拟局域网联机

概述

本方案适用于本地服务器,公网服务器只做流量转发。配置完成后可将异地的朋友组在同一个局域网下,效果和面对面联机是一样的。
价格方面,截至到2024-3-25,腾讯云按量计费,选最便宜的cpu和20G硬盘,16Mbps公网带宽情况下,使用费用一小时0.07元,流量费用0.8元/GB。cpu费用可以在不玩时将服务器关进一步节约成本,需要注意,硬盘费用是需要24h收取的,即使在关机情况下,其费用包含0.07元/h中的0.02元/h,也就是一个月完全关机的固定的14元左右的费用。
该方案为了保证兼容性和简化配置难度,没有使用UDP nat穿透的P2P技术,因为虽然P2P高效延迟低、速率快,但其致命缺陷是只有部分例如完全锥形nat才能穿透,不能保证联机网络一定能实现P2P。于是本方案使用简单粗暴的办法,使用公网服务器对nat下节点进行流量转发的网络架构,可保证国内任何网络环境都能成功组网。
具体配置过程如下:

1.租用服务器

选择腾讯云或其他服务器厂商都可,以腾讯云为例选择 SA2.MEDIUM2规格(标准SA2 2核2G),价格为0.05元/h。由于公网服务器只做流量转发,对性能无要求,服务器越便宜越好。选择ubuntu镜像,选择20G系统盘(由于24h收费,选最小规格)。选择弹性公网ip,带宽根据联机人数调整最好不要低于8Mbps。设置好服务器密码后等待示例创建和开机即可。随后进入控制台,在安全组中添加一条开放Udp端口的规则,以9469端口为例,下面会使用该端口。

2.完成服务端配置

在windows系统下win + R运行cmd,打开命令行,输入ssh <默认用户名>@<服务器公网ip>命令,其中默认用户名按上述镜像为ubuntu,公网ip在腾讯云控制台查看,注意复制公网IP地址(而不是私网ip)。
随后选择信任服务器输入yes,输入上一步设置的服务器密码(默认输入隐藏不显示,输完直接回车即可)
联接上ssh后输入如下命令完成配置:

# 安装
sudo apt update
sudo sudo apt upgrade
sudo apt-get install wireguard openresolv -y
# 设置root密码
sudo passwd root
# 使用su 命令进入root用户模式,输入上述密码
su
# 设置ip转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 创建并进入WireGuard文件夹
mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard
cd /etc/wireguard
umask 077
exit
# 生成服务器端密钥对
wg genkey | tee server_privatekey | wg pubkey > server_publickey
# 生成客户端密钥对,此处有几个人就生成几个
wg genkey | tee client1_privatekey | wg pubkey > client1_publickey
wg genkey | tee client2_privatekey | wg pubkey > client2_publickey
wg genkey | tee client3_privatekey | wg pubkey > client3_publickey
# ....按照序号递增即可
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

随后设置配置文件,示例如下,按照人数自行递增即可

sudo echo "
[Interface]
PrivateKey = $(cat server_privatekey) # 填写本机的privatekey 内容
Address = 192.168.1.1/24 #该地址即为服务器的局域网地址
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
ListenPort = 9469 # 注意该端口是UDP端口,需要在安全组中开放该端口
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = $(cat client1_publickey) # 填写对端的publickey 内容
AllowedIPs = 192.168.1.2/32
[Peer]
PublicKey = $(cat client2_publickey) # 注意这里有几个客户端就写几个peer
AllowedIPs = 192.168.1.3/32 # 记得同时递增该局域网地址,该地址即为虚拟局域网联机时各端的地址。
[Peer]
PublicKey = $(cat client2_publickey) # 填写对端的publickey 内容
AllowedIPs = 192.168.1.4/32" > wg0.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
# 使用screen 保持后台运行
sudo apt install screen
screen -S wirdGuard
# 下面几条是启动/关闭wireGuard命令
# 启动WireGuard
sudo wg-quick up wg0
# 停止WireGuard
sudo wg-quick down wg0
# 查看状态
sudo wg show wg0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

启动wire后,服务器端即配置完毕。
设置开机自启wireGuard:

sudo chmod +x /etc/rc.d/rc.local
echo "sudo wg-quick up wg0" >> /etc/rc.d/rc.local
  • 1
  • 2

3.客户端配置

服务器端配置完毕,各终端设备安装对应操作系统的wireGuard客户端,可自行搜索下载安装
下面详解一下客户端的配置文件填写
以下是示例文件:

[Interface]
PrivateKey = client1_PrivateKey # 这里查看服务器生成的客户端私钥,可用sudo cat /etc/wireguard/client1_PrivateKey 查看
Address = 192.168.1.2/24 # 这里的地址要和client1_PrivateKey对于,详情可翻看服务器端配置文件的[peer]内容
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = server_publickey # 这里统一填写服务器端公钥
AllowedIPs = 0.0.0.0/0 # 表示本机所有流量都通过服务器转发,为节约开销,不要在联机服务器的时候下载大文件
Endpoint = 服务器公网ip:9469 # 服务器的公网ip和安全组设置的允许的UDP端口
PersistentKeepalive = 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

由于多人联机,另一个人的填写方式如下,注意不要使配置重复使用,应当一人一个配置文件,同时服务器端设置对应的[peer],

[Interface]
PrivateKey = client2_PrivateKey # 这里查看服务器生成的客户端私钥,可用sudo cat /etc/wireguard/client2_PrivateKey 查看
Address = 192.168.1.3/24 # 这里的地址要和client2_PrivateKey对应,详情可翻看服务器端配置文件的[peer]内容
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = server_publickey # 这里统一填写服务器端公钥
AllowedIPs = 0.0.0.0/0 # 表示本机所有流量都通过服务器转发,为节约开销,不要在联机服务器的时候下载大文件
Endpoint = 服务器公网ip:9469 # 服务器的公网ip和安全组设置的允许的UDP端口
PersistentKeepalive = 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

上述改动了PrivateKey和Address两项,继续添加人依次类推,每次只改动这两项即可。
所有配置完成,此时所有客户端同时连接服务器即可通过192.168.1.X 的地址组成局域网,不使用的时候可以将服务器关机不计费节约成本。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/490799
推荐阅读
相关标签
  

闽ICP备14008679号