WireGuard

WireGuard

Tips

# 内核模块
apk add wireguard-$(uname -r | sed -r 's/.*?-(.*)$/\1/')
# 用户空间工具
apk add wireguard-tools
# 配置 A 端
# ==========
# 生成密钥和公钥
wg genkey | tee wg0.pri | wg pubkey > wg0.pub
# 配置网卡
ip link add wg0 type wireguard
ip addr add 10.0.0.1/24 dev wg0
wg set wg0 listen-port 51820 private-key wg0.pri
ip link set wg0 up
# 配置 B 端
# ==========
# 生成密钥和公钥
wg genkey | tee wg0.pri | wg pubkey > wg0.pub
# 配置网卡
ip link add wg0 type wireguard
ip addr add 10.0.0.2/24 dev wg0
wg set wg0 listen-port 51820 private-key wg0.pri
ip link set wg0 up
# A -> B
# ==========
# 在 B 执行 - 将输出结果在 A 执行
# 如果 B 没有 A 能直接访问的地址 - 则忽略 endpoint
echo wg set wg0 peer $(cat wg0.pub) persistent-keepalive 25 allowed-ips 10.0.0.2/32 endpoint <主机B地址>:51820
# B -> A
# ==========
# 在 A 执行 - 将输出结果在 B 执行
# 如果 A 没有 B 能直接访问的地址 - 则忽略 endpoint
echo wg set wg0 peer $(cat wg0.pub) persistent-keepalive 25 allowed-ips 10.0.0.1/32 endpoint <主机A地址>:51820
# 在 B 能访问 A
ping 10.0.0.1

FAQ

桥接或DHCP

  • wg 只支持 L3 通道
  • 桥接的网路可以考虑通过路由实现 - 例如
  • 如果需要桥接可以考虑 tinc 的 switch 模式或者 l2tp