2

尽管其目的很简单,但我根本无法设置wireguard,以便客户端可以通过wireguard VPN访问互联网(WAN)。我已经用谷歌搜索了几天,但没有任何效果。我在下面有我的配置,任何人都可以看到可能有什么问题吗?

  • 服务器上的wireguard配置
  • 如您所见,我尝试将 AllowedIPs 设置为 0.0.0.0/0 也无济于事。看起来虽然使用 0.0.0.0/0 到 facebook 的 IP (176.13.69.63) 的跟踪路由有效,但我无法访问它。
    root@hattusa:~# cat /etc/wireguard/wg0.conf
    [Interface]
    PrivateKey = ***
    Address = 10.6.0.1/24
    ListenPort = 8765

    ### begin android ###
    [Peer]
    PublicKey = ***
    PresharedKey = ***
    #AllowedIPs = 0.0.0.0/0
    AllowedIPs = 10.6.0.2/32
    ### end android ###
  • 线卫客户端配置
    root@hattusa:~# cat /etc/wireguard/configs/android.conf
    [Interface]
    PrivateKey = ***
    Address = 10.6.0.2/24
    DNS = 8.8.8.8, 8.8.4.4

    [Peer]
    PublicKey = ***
    PresharedKey = ***
    Endpoint = ***:8765
    AllowedIPs = 0.0.0.0/0, ::0/0
  • 启用了 IPv4 转发
    root@hattusa:~# sysctl net.ipv4.ip_forward
    net.ipv4.ip_forward = 1
  • 我尝试了不同的 iptables 规则,我现在添加的是;我没有运行防火墙
    root@hattusa:~# iptables --list-rules
    -P INPUT ACCEPT
    -P FORWARD ACCEPT
    -P OUTPUT ACCEPT
    -A INPUT -i eth0 -p udp -m udp --dport 8765 -j ACCEPT
    -A INPUT -i wg0 -j ACCEPT
    -A FORWARD -i wg0 -o eth0 -j ACCEPT
    -A FORWARD -i eth0 -o wg0 -j ACCEPT
  • 我也有一个伪装规则,但它没有出现。这是
    iptables -t nat -I POSTROUTING 1 -s 10.6.0.2/24 -o eth0 -j MASQUERADE
  • 客户端可以成功连接,正在发送和接收数据,并且来自客户端的 ping 也可以工作(所以 DNS 解析没问题,但即使 DNS 不工作,我也应该能够通过 IP 直接访问主机)
    root@hattusa:~# wg
    interface: wg0
      public key: ***
      private key: (hidden)
      listening port: 8765

    peer: ***=
      preshared key: (hidden)
      endpoint: ***:31053
      allowed ips: 10.6.0.2/32
      latest handshake: 12 minutes, 32 seconds ago
      transfer: 1.32 MiB received, 2.13 MiB sent
  • 在 raspbian 上运行 debian buster,端口 8765 在路由器上打开 UDP 和 TCP(否则客户端将无法外部连接)
4

1 回答 1

0

根据您的云提供商,您可能需要更改 MTU,Wireguard 默认 MTU 为 1420,而 Google Cloud MTU 为 1460。因此,如果您使用 google Cloud,通过添加MTU = 1460到客户端和服务器的接口将 MTU 设置为 1460 将解决问题。

如果有任何问题,你可以查看我在 Github 上的完整教程。

于 2021-05-24T19:48:02.503 回答