如果不是使用 wg-quick 调用 wg0.conf 启动 WireGuard,还可以通过命令行的方式,用 wg 命令直接配置并启动 WireGuard 网络。
-
创建虚拟网卡
sudo ip link add dev wg0 type wireguard
这行命令创建了名为 wg0 的 wireguard 虚拟网卡。
-
配置虚拟网卡
sudo ip address add dev wg0 10.0.0.1/24 sudo wg set wg0 listen-port 39815 sudo wg set wg0 private-key ./private.key
这三行命令配置了 wg0 网卡的内网 ip 地址、监听端口以及配置了私钥。
-
添加节点
sudo wg set wg0 peer FCXYovwMFf2oMHrQjbhTYk1TU/Wi1ElwzPJfzXtC9HQ= allowed-ips 0.0.0.0/0 endpoint 172.105.221.122:39814
这行命令添加了一个外部节点,并定义了外部节点的公钥、内网地址以及公网 ip 地址及监听端口。
-
启动此虚拟网卡
这行命令事此虚拟网卡处于运行状态:
sudo ip link set up dev wg0
执行以下命令可以关闭虚拟网卡:
sudo ip link set down dev wg0
有点奇怪的是,执行后在
ifconfig
检测不到了,但是通过sudo wg
仍然存在 ,需要用wg-quick down wg0
才能彻底卸载。
在服务器端执行以下命令可以启动或关闭路由规则。
-
启动规则:
iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
-
关闭规则:
iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
-
命令行方式的配置也可以通过一个命令保存为配置文件,编辑配置文件也很方便,并且在需要多次操作的情况下会很容易。
# wg showconf wg0 > /etc/wireguard/wg0.conf # wg setconf wg0 /etc/wireguard/wg0.conf
删除无效节点:
sudo wg set wg0 peer xxxxxxxx remove
可以通过 Systemctl 管理 wg 进程:
- 重载守护进程:
sudo systemctl daemon-reload
- 设置为自动启动 wg0:
sudo systemctl enable wg-quick@wg0
- 禁用服务:
sudo systemctl disable wg-quick@wg0
- 启动服务:
sudo systemctl start wg-quick@wg0
- 重启服务:
sudo systemctl restart wg-quick@wg0
- 查看服务状态:
sudo systemctl status wg-quick@wg0