相关软件

tailscale

替代的开源 server headscale

FAQ

wireguard + archlinux 安装方法

注意:

  1. 正确安装方法: wireguard-tools + openresolv:

    • 原因: wireguard 依赖的 resolveconf 命令需要使用 openresolv 包来安装, wireguard + systemd-resolve 会破坏系统的 dns 解析功能,造成 dig www.baidu.com 可以使用,而 ping www.baidu.com 无法解析域名

wireguard + udp2raw

注意:

  1. 需要把 MTU 设置成 1200

    • 否则会造成可以 ping 通,也可以 telnet,但是 curl 或者 ssh 到服务器失败
  2. udp2raw 两种模式

    • --raw-mode faketcp 需要配合 -a 一起使用, -a 是为了添加 iptables
    • --raw-mode easy-faketcp 不需要添加 -a, 它可以跳过 iptables 设置,但是会有一定的性能损失

wireguard + udp2raw 网速太慢问题

  1. 通过 udp2raw --fix-gro 方法修复

    • 测试有效
  2. 使用 UDPSpeeder 加速

wireguard + NetworkManager 造成 DNS 冲突问题

arch linux

问题表现:

  1. 重启电脑后, wireguard 不能使用
  2. sudo systemctl start wg-quick@wg0.service 无效
  3. sudo wg-quick up wg0 有效

    • 或者通过命令 sudo resolvconf -u 重新生成 /etc/resolv.conf 后可以临时使用

解决办法:

Ubuntu 24.04

  1. 方法一:

    • 直接禁用 wireguard 中的 DNS

      1
      2
      3
      4
      5
      
      [Interface]
      PrivateKey = oHuvJ4rxRvwkhccInVs36f0WrfqdfdfXft8wkaTdJdfdf4=
      Address = 10.0.18.3/24
      # DNS = 10.0.18.2,114.114.114.114
      MTU = 1200
  2. 方法二:

    • 修改 systemd-resolve 的配置

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      
      # file: /etc/systemd/resolved.conf
      [Resolve]
      # Some examples of DNS servers which may be used for DNS= and FallbackDNS=:
      # Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
      # Google:     8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
      # Quad9:      9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
      #DNS=
      # wireguard -----
      DNS=114.114.114 223.5.5.5
      DNSStubListener=no
      # wireguard fix ---
      • 注意:

        1. dns 优先级:

          1. NetworkManager 手动设置(自动的没有测试)
          2. resolved.conf DNS= 设置
          3. wireguard DNS= 设置
        2. 如果想要使用 wireguard 中的 DNS 配置,需要取消 NetworkManager 和 resolved.conf 中的配置