基本环境

公司网段 10.42.170.222/24;家里网段192.168.2.0/24;

使用到的设备和系统 公司 ubuntu22.04主机 ip 10.42.170.222/24, 家里 ubuntu22.04主机192.168.2.22/24

测试用的一个win11 192.168.2.x/24

安装wireguard

ubuntu(脚本要求系统18.04以上)

下载安装脚本

wget -O wireguard.sh https://get.vpnsetup.net/wg

安装, 根据提示安装

sudo bash wireguard.sh --auto

如果是公网服务器,打开端口 默认 UDP/51820 可以修改自定义的

在服务器端 运行 sudo bash wireguard.sh  添加客户端,一般有类似 client.conf 这样的文件生成。

ubuntu 中 wireguard 默认配置文件 在

vim /etc/wireguard/wg0.conf #编辑次文件一般需要root权限

ubuntu常用管理wireguard命令 需要root权限

sudo su             #获取root权限
wg-quick down wg0  #停止wg0网卡
wg-quick up wg0    #开启wg0虚拟网卡,注意观察界面返回值,是否正常开启了
ip addr             #查看网络接口
wg show             #查看 wg0虚拟网卡接口情况
wg genkey           #生成密钥key,具体用法可以网络检索


windows 安装 去网上找 wireguard-amd64-0.5.3.msi 下载,安装后导入隧道文件client.conf


关于配置

利用wireguard.sh脚本在ubuntu中安装的时候 它会 帮助开启linux内核转发 以及更新iproute2软件包

并且优化tcp-Size(Optimize sysctl settings such as TCP buffer sizes),建议使用脚本在ubuntu上安装wireguard


server配置文件  服务器须有公网ipv4地址或域名指向也行

[Interface]
Address = 10.7.0.1/24, fddd:2c4:2c4:2c4::1/64
PrivateKey = <自定义的prvatekey脚本会自动生成>
ListenPort = 51280  #默认使用的UDP端口,记得在防火墙上放行

# 允许来自wg0和发往wg0的包通过  #转发规则
PostUp   = iptables -t filter -A FORWARD -i wg0 -j ACCEPT; iptables -t filter -A FORWARD -o wg0 -j ACCEPT
PostDown = iptables -t filter -A FORWARD -i wg0 -j ACCEPT; iptables -t filter -A FORWARD -o wg0 -j ACCEPT

# client-home-win11  #测试机器 物理网卡配置 192.168.2.X/24
[Peer]
PublicKey = <自定义,脚本会自动生成>
PresharedKey = <自定义脚本自动生成> # 这个参数貌似是 与路由表相关
AllowedIPs = 10.7.0.2/32, fddd:2c4:2c4:2c4::2/128

# router-office-ubs # 这个机器没有ipv6 对应主机的物理网卡配置10.42.170.222/24
[Peer]
PublicKey = <>
PresharedKey = <和10.42.170.222/24这个机器上的这个key要一样>
#一定要配置允许这个机器所在的网段能够通过
AllowedIPs = 10.7.0.3/32, 10.42.170.0/24

公司ubuntu(10.42.170.222/24)机器的wg0配置文件

[Interface]
Address = 10.7.0.3/28
PrivateKey = <脚本自动生成的私有key>

# 当路由使用的时候,配置虚拟网卡wg0和物理网卡enp2s0的数据包可以转发通过
# 数据进入路径
PostUp  = iptables -t filter -A FORWARD -i enp2s0 -o wg0 -j ACCEPT
PostDown = iptables -t filter -A FORWARD -i enp2s0 -o wg0 -j ACCEPT
# 数据出路径
PostUp  = iptables -t filter -A FORWARD -i wg0 -o enp2s0 -j ACCEPT
PostDown = iptables -t filter -A FORWARD -i wg0 -o enp2s0 -j ACCEPT

# 与服务器对应的节点配置
[Peer]
PublicKey = <共有key>
PresharedKey = <和server服务器端的这个key要一样>
# 添加要访问的对方网段 192.168.2.22/24,
AllowedIPs = 10.7.0.3/28, 192.168.2.22/24, fddd:2c4:2c4:2c4::3/64 
#服务器ip地址端口,为了能同时利用IPv4和IPv6 使用域名和端口也是可以的
Endpoint = domain:51280
PersistentKeepalive = 25

测试用 win11 的配置文件client.conf

[Interface]
Address = 10.7.0.2/24, fddd:2c4:2c4:2c4::2/64
# 只是访问对方网段的话 不需要dns的
# DNS = 8.8.8.8, 8.8.4.4
PrivateKey = <私有key>
[Peer]
PublicKey = <共有key>
PresharedKey = <注意一致>
AllowedIPs = 10.7.0.2/28, 10.42.170.0/24, fddd:2c4:2c4:2c4::2/64
Endpoint = domain:51280
PersistentKeepalive = 25

看看效果

ping 结果

wireguard.png

web访问结果

wireguard2.png


至于 从公司访问家里,需要在 家里的 ubuntu机器上 添加转发规则,并且 在需要访问的节点配置中添加家里的网段,并且在服务器上AllowedIPs 参数中通过该网段。