基本环境
公司网段 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 结果
web访问结果
至于 从公司访问家里,需要在 家里的 ubuntu机器上 添加转发规则,并且 在需要访问的节点配置中添加家里的网段,并且在服务器上AllowedIPs 参数中通过该网段。