Debian 9/10 安装 WireGuard 备忘
2020-05-17 tech linux kernel wireguard 6 mins 2392 字
不升级内核,或者内核ok但没有头文件,都有可能会遇到这样的错误:
升级内核先参考我先前这篇文章:《debian 升级内核》
安装
sudo apt-get install libmnl-dev linux-headers-$(uname -r) build-essential make git # 安装必要的包
# 如果无法安装headlers,那么应该是内核偏老,先升级到比较新的内核
echo "deb http://deb.debian.org/debian/ unstable main" | sudo tee /etc/apt/sources.list.d/unstable.list
echo -e "Package: *\nPin: release a=unstable\nPin-Priority: 150\n" | tee /etc/apt/preferences.d/limit-unstable
apt-get update
apt-get upgrade
apt-get install wireguard-dkms wireguard-tools
配置
sudo mkdir -p /etc/wireguard
cd /etc/wireguard
sudo umask 077
# 快速生成密钥
sudo wg genkey | tee privatekey | wg pubkey > publickey
新建配置文件 wg0.conf
注意修改监听端口ListenPort,如果启用了防火墙,还需要开通相关端口
[Interface]
PrivateKey = #服务端的密钥
Address = 10.0.0.1/24, fd86:ea04:1115::1/64 #服务端的地址
ListenPort = 28472 #服务端的端口
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
SaveConfig = true
启动
快速启动:
sudo wg-quick up wg0
开机启动:
systemctl enable wg-quick@wg0
查看运行状况:
wg
配置客户端
其实 wireguard 中没有严格的客户端服务端的区别,配置客户端过程和服务端过程一样。只要把服务端的公钥和自己的公钥写入配置文件中,再填好对端的IP,会自动连接配对好。
以下是配置参考:
[Interface]
PrivateKey = #客户端的密钥
Address = 100.100.100.2/32 #客户端的内网地址
MTU = 1420
[Peer]
PublicKey = #服务端的公钥
Endpoint = 12.32.42.52:28472 #服务端的IP和端口
AllowedIPs = 100.100.100.0/24, 10.64.0.0/10, 10.128.0.0/10 #允许走wireguard的目的IP
PersistentKeepalive = 25
把这个配置连同客户端的公钥密钥一起放到客户端的/etc/wireguard文件夹中,就能启动了。
如果希望生成二维码,方便iOS和android刷二维码,还可以使用qrencode命令:
qrencode -t ansiutf8 < wg0.conf
Debian 10安装
-
增加源信息
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable-wireguard.list printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' > /etc/apt/preferences.d/limit-unstable
-
更新源然后安装相关软件,用来编译 wireguard内核模块
apt update apt install wireguard-dkms wireguard-tools
仍然报错
[#] ip link add wg0 type wireguard
RTNETLINK answers: Operation not supported
Unable to access interface: Protocol not supported
[#] ip link delete dev wg0
Cannot find device "wg0"
还是升级内核吧:
apt-get dist-upgrade
update-grub
/sbin/reboot
不过很奇怪,我重启之后内核其实并没有升级,但是 wireguard 能跑起来了。可能是中途某些步骤需要重启系统。下次遇到再补充了。