Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
92 lines (59 sloc) 2.51 KB

3.用 wg 在命令行运行 WireGuard

如果不是使用 wg-quick 调用 wg0.conf 启动 WireGuard,还可以通过命令行的方式,用 wg 命令直接配置并启动 WireGuard 网络。

1. 创建与配置虚拟网卡

  1. 创建虚拟网卡

    sudo ip link add dev wg0 type wireguard
    

    这行命令创建了名为 wg0 的 wireguard 虚拟网卡。

  2. 配置虚拟网卡

    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 地址、监听端口以及配置了私钥。

  3. 添加节点

    sudo wg set wg0 peer FCXYovwMFf2oMHrQjbhTYk1TU/Wi1ElwzPJfzXtC9HQ= allowed-ips 0.0.0.0/0 endpoint 172.105.221.122:39814
    

    这行命令添加了一个外部节点,并定义了外部节点的公钥、内网地址以及公网 ip 地址及监听端口。

  4. 启动此虚拟网卡

    这行命令事此虚拟网卡处于运行状态:

    sudo ip link set up dev wg0
    

    执行以下命令可以关闭虚拟网卡:

    sudo ip link set down dev wg0
    

    有点奇怪的是,执行后在 ifconfig 检测不到了,但是通过 sudo wg 仍然存在 ,需要用 wg-quick down wg0 才能彻底卸载。

2. 路由规则

在服务器端执行以下命令可以启动或关闭路由规则。

  1. 启动规则:

    iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
  2. 关闭规则:

    iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    

3. 把命令行配置固化为 wg0.conf

  1. 命令行方式的配置也可以通过一个命令保存为配置文件,编辑配置文件也很方便,并且在需要多次操作的情况下会很容易。

    # wg showconf wg0 > /etc/wireguard/wg0.conf
    # wg setconf wg0 /etc/wireguard/wg0.conf
    

4. 删除节点

删除无效节点:

sudo wg set wg0 peer xxxxxxxx remove

5. 把 wg 设为系统进程

可以通过 Systemctl 管理 wg 进程:

  1. 重载守护进程:sudo systemctl daemon-reload
  2. 设置为自动启动 wg0:sudo systemctl enable wg-quick@wg0
  3. 禁用服务:sudo systemctl disable wg-quick@wg0
  4. 启动服务:sudo systemctl start wg-quick@wg0
  5. 重启服务:sudo systemctl restart wg-quick@wg0
  6. 查看服务状态:sudo systemctl status wg-quick@wg0