赞
踩
本方案适用于本地服务器,公网服务器只做流量转发。配置完成后可将异地的朋友组在同一个局域网下,效果和面对面联机是一样的。
价格方面,截至到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下节点进行流量转发的网络架构,可保证国内任何网络环境都能成功组网。
具体配置过程如下:
选择腾讯云或其他服务器厂商都可,以腾讯云为例选择 SA2.MEDIUM2规格(标准SA2 2核2G),价格为0.05元/h。由于公网服务器只做流量转发,对性能无要求,服务器越便宜越好。选择ubuntu镜像,选择20G系统盘(由于24h收费,选最小规格)。选择弹性公网ip,带宽根据联机人数调整最好不要低于8Mbps。设置好服务器密码后等待示例创建和开机即可。随后进入控制台,在安全组中添加一条开放Udp端口的规则,以9469端口为例,下面会使用该端口。
在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 # ....按照序号递增即可
随后设置配置文件,示例如下,按照人数自行递增即可
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
# 使用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
启动wire后,服务器端即配置完毕。
设置开机自启wireGuard:
sudo chmod +x /etc/rc.d/rc.local
echo "sudo wg-quick up wg0" >> /etc/rc.d/rc.local
服务器端配置完毕,各终端设备安装对应操作系统的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
由于多人联机,另一个人的填写方式如下,注意不要使配置重复使用,应当一人一个配置文件,同时服务器端设置对应的[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
上述改动了PrivateKey和Address两项,继续添加人依次类推,每次只改动这两项即可。
所有配置完成,此时所有客户端同时连接服务器即可通过192.168.1.X 的地址组成局域网,不使用的时候可以将服务器关机不计费节约成本。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。