Ubuntu 上的 Wireguard 没有流量

Ubuntu 上的 Wireguard 没有流量

我正在尝试在 Ubuntu 22.04 上使用 Wireguard。相同的服务器客户端配置在 Windows 和 Android 上运行正常,没有任何问题。

我不是服务器端的管理员,但是得到了用户端的以下配置:

[Interface]
Address = 140.22.48.120/24
DNS = 140.22.48.103, 140.22.192.100, 140.22.192.101
PrivateKey = <privatekey

[Peer]
PublicKey = <publickey>
PresharedKey = <presharedkey>
AllowedIPs = 0.0.0.0/0
Endpoint = 140.22.48.100:51820
PersistentKeepalive = 25

使用时sudo wg quick-up wg0,会生成以下输出:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 140.22.48.120/24 dev wg0
[#] ip link set mtu 1460 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63

握手似乎有效。然而,打开任何网页时,连接都会超时。

interface: wg0
  public key: <differentpublickey>
  private key: (hidden)
  listening port: 60246
  fwmark: 0xca6c

peer: <publickey>
  preshared key: (hidden)
  endpoint: 140.22.48.100:51820
  allowed ips: 0.0.0.0/0
  transfer: 0 B received, 3.32 KiB sent
  persistent keepalive: every 25 seconds

第二行的public key与 第 7 行的 不同<publickey>

知道如何让它工作吗?

答案1

Address = 140.22.48.120/24告诉 wireguard 该接口属于一个网络,该网络覆盖 140.22.48.0-140.22.48.255。这意味着任何发往这些 IP 的数据包都可以通过该接口发送,而无需通过路由器。

但是你的 wireguard 服务器是在这个网络里面—— 140.22.48.100。这意味着在 wireguard 启动后,wireguard 会告诉内核可以140.22.48.100通过 wireguard 接口发送数据包来访问。

这是基本的 TCP/IP 网络。/24被称为CIDR 表示法

答案2

哇,这个问题困扰了我近一年之后,我终于找到了解决方案。

而不是Address = 140.22.48.120/24,灵感来自此评论我已尝试通过将其设置为来传递 32 位Address = 140.22.48.120/32,并且它可以正常工作。

我不知道为什么会这样,也许有人可以解释一下?

相关内容