WireGuard 配置
最近在进行家庭网络改造时,有需要随时可以访问家庭局域网的需求,因而学习如何配置 WireGuard 。。。
前置
家庭网络中 debian 作为服务器,个人 mac 作为客户端进行连接。 注:WireGuard 是对等VPN,不使用C/S模型。
debian 安装 WireGuard
1 | sudo apt update |
mac 安装 WireGuard
1 | brew install wireguard-tools |
配置
wg
和wg-quick
命令行可以快速配置和管理WG网络。 WG网络中的每个设备[peer]都需要具有公钥[publickey]和私钥[privatekey];预共享密钥[sharekey]对于整个网络是可选项,预共享密钥只需要生成一次,然后每个设备的预共享密钥是相同的。
配置 debian
创建配置密钥
1
2
3wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
wg genpsk > /etc/wireguard/sharekey # opt
sudo vim /etc/wireguard/wg0.conf复制以下内容到
/etc/wireguard/wg0.conf
文件中,注意替换ens192
1
2
3
4
5
6
7
8
9[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = {{SERVER_PRIVATE_KEY}}
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens192 -j MASQUERADE
[Peer]
PresharedKey = {{sharekey}}Interface 就是定义了当前设备在网络中的
Address
和ListenPort
, SERVER_PRIVATE_KEY 是前面生成的 privatekey。
替换ens192
的字符串可以通过ip -o -4 route show to default | awk '{print $5}'
查找到当前联网的接口。启动服务
1
sudo wg-quick up wg0
该命令显示信息
1
2
3
4
5] ip link add wg0 type wireguard
] wg setconf wg0 /dev/fd/63
] ip -4 address add 10.0.0.1/24 dev wg0
] ip link set mtu 1420 up dev wg0
] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE检查服务
1
sudo wg show wg0
该命令显示信息
1
2
3
4interface: wg0
public key: ****************
private key: (hidden)
listening port: 51820设置开机自启动
1
sudo systemctl enable wg-quick@wg0
配置IP转发
1
sudo vim /etc/sysctl.conf
添加或者取消注释
1
net.ipv4.ip_forward=1
然后启动属性
1
sudo sysctl -p
配置 mbp
生成公私钥
1
2wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
sudo vim /etc/wireguard/wg0.conf添加以下内容
1
2
3
4
5
6
7
8
9[Interface]
PrivateKey = CLIENT_PRIVATE_KEY #mbp生成的私钥
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY # debian端生成的公钥
Endpoint = SERVER_IP_ADDRESS:51820 # debian 对应的公网ip
PresharedKey = sharekey # debian 端生成的预共享密钥
AllowedIPs = 0.0.0.0/0启动服务
1
sudo wg-quick up wg0
将mbp加入到debian中
1 | sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2 |
关闭WG
1 | sudo wg-quick down wg0 |
安全
在 mbp 和 debian 中将文件权限设置正确
1 | sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf} |
常见问题
- debian 和 mbp 的WG都正常启动,相互之间可以ping到对方,但是无法正常上网.
解决方法:debian 和 mbp 都可以ping到对方,说明WG网络建立完成,无法上网原因很可能是 debian 端 ip转发 不成功。- 首先通过
sysctl net.ipv4.ip_forward
检查 ip转发是否开启,如果等于 1 说明已经开启,否则sysctl net.ipv4.ip_forward=1
来临时开启。 - 通过
sudo iptables -t filter -L FORWARD
检查policy是否为ACCEPT,如果policy是DROP,则根据前文配置ip转发后重启机器,再检查policy状态。
- 首先通过