本文适用于 FreeBSD 13.2+
从 FreeBSD 13.2 开始,WireGuard 驱动已经集成到系统里了,wg 命令默认是可用的。
只需要另外安装 wireguard-tools
就可以轻松配置 WireGuard 了:
$ sudo pkg install wireguard-tools
生成所需的密钥
私钥:
$ wg genkey
CJGUcc1TUZztJr8iI59qIlAOHnPuEwazN9nvFn+Lt0E=
公钥:
$ echo CJGUcc1TUZztJr8iI59qIlAOHnPuEwazN9nvFn+Lt0E= | wg pubkey
+ehIzEdIA3vnKoFeIZ3HIQrr+I8hWYpM+cM/KAqDmD0=
PSK:
$ wg genpsk
9z9HLJ8kowp4lpBMqLUGtPzJj4PXqxR2QxBY3pV81LI=
其中私钥自己保管,公钥和 PSK 是分发给其他 Peer 的,其中 PSK 是为了增加安全性。
创建虚拟接口配置文件
网络接口名称和配置名称保持一致,好维护一些,待会要使用的网络接口是 wg0
,所以配置文件名称也叫 wg0.conf
:
[Interface]
PrivateKey = CJGUcc1TUZztJr8iI59qIlAOHnPuEwazN9nvFn+Lt0E=
Address = 10.10.10.1/32
ListenPort = 55189
MTU = 1280
MTU 配置为 1280,比较保守,但是适应更多的网络环境,其他的 Peer 也需要配置为一样的 MTU 值才能正确连接。
设置 wg0
网卡的地址是 10.10.10.1
,后面的掩码 /32
也需要,不然待会启动服务会有警告:ifconfig: WARNING: setting interface address without mask is deprecated
。
保存到 /usr/local/etc/wireguard/wg0.conf
配置 WireGuard 服务
开机时自动启动 wireguard
服务:
$ sudo service wireguard enable
设置 wireguard 的接口,现在只有一个 wg0
:
$ sudo sysrc wireguard_interfaces=wg0
启动 wireguard
服务,配置正确的话应该可以顺利启动:
$ sudo service wireguard start
[#] ifconfig wg create name wg0
[#] wg setconf wg0 /dev/stdin
[#] ifconfig wg0 inet 10.10.10.1/32 alias
[#] ifconfig wg0 mtu 1280
[#] ifconfig wg0 up
[+] Backgrounding route monitor
作为中转服务器
如果 FreeBSD 是作为中转服务器使用,需要打开 IP 转发功能才可以支持端点之间互相访问。
编辑 /etc/rc.conf
:
gateway_enable="YES"