我的 WireGuard 设置存在缺陷,但我看不到它。任何有助于调试的建议都将不胜感激。
设置:本地 pi ( 192.168.1.2/24
) 运行 WireGuard,位于 ISP 网关后面。远程 pi ( 192.168.2.1/24
) 是网关/wifi ap,也运行 WireGuard。远程 Pi iptables 过滤器会暂时刷新。本地 pi 上未安装 iptables。
期望状态:LAN 到 LAN L3 桥接。
问题:我无法从远程网络上的任何计算机 ping 本地网络上的计算机。我可以从本地计算机 ping/ssh 到远程网络上的任何计算机。我可以从远程计算机 ping 到运行 Wireguard (ping 192.168.1.2
有效 ) 的本地 pi,但不会超出其他本地机器的范围(ping 192.168.1.180
不起作用)。
更正:我总是可以从远程网络上的常规客户端 ping/ssh 到本地网络上的任何机器。只能从远程网络上 ping/ssh 到本地网络上除问题所在的192.168.2.1
WireGuard 服务器之外的任何机器。192.168.1.2
似乎我在本地 pi 上遇到了路由问题。如能提供任何有关调试的指导,我将不胜感激。
dhcpcd.conf
在interfaces
本地 pi 上有不是被触动了。
timemachine@pibackup4:/etc/wireguard $ ip route list
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.2 metric 202
10.8.0.0/24 dev wglink2 proto kernel scope link src 10.8.0.1
192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.2 metric 202
192.168.2.0/24 via 10.8.0.2 dev wglink2
timemachine@pibackup4:/etc/wireguard $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:03:fe:6f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 74276sec preferred_lft 63476sec
inet6 fe80::f2a8:7662:6de:5b4e/64 scope link
valid_lft forever preferred_lft forever
10: wglink2: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.8.0.1/24 scope global wglink2
valid_lft forever preferred_lft forever
timemachine@pibackup4:/etc/wireguard $ cat wglink2.conf
[Interface]
# LAN Address: 192.168.1.2/24
# Wireguard Address: 10.8.0.1
PrivateKey = xxxxxx
Address = 10.8.0.1/24
ListenPort = 51820
Table = off
PostUp = ip route add 192.168.2.0/24 via 10.8.0.2 dev wglink2
PreDown = ip route del 192.168.2.0/24 via 10.8.0.2 dev wglink2
[Peer]
# LAN Address: 192.168.2.1/24
# Wireguard Address: 10.8.0.2
PublicKey = xxxxxx
AllowedIPs = 10.8.0.2/32, 192.168.2.0/24
PersistentKeepalive = 25
timemachine@pibackup4:/etc/network $ sudo wg
interface: wglink2
public key: xxxxxx
private key: (hidden)
listening port: 51820
peer: xxxxxx
endpoint: 192.168.1.1:39915
allowed ips: 10.8.0.2/32, 192.168.2.0/24
latest handshake: 8 seconds ago
transfer: 37.14 KiB received, 42.57 KiB sent
persistent keepalive: every 25 seconds
答案1
如果您发现这个问题并且想知道发生了什么,请继续阅读。
远程 pi(网关、WiFi AP、WireGuard 客户端)上的路由表设置为将发往本地网络的任何内容传递到 IP 地址为 的192.168.1.0/24
接口。因此,ICMP ping 数据包的源 IP 地址为。ICMP 数据包到达本地网络上的目标机器并发送回 的回复。但是,本地网络网关没有 的条目,因此它被发送到 ISP,从此再也没有收到过任何消息。wglink2
10.8.0.2
10.8.0.2
10.8.0.2
10.8.0.2
tcpdump
从本地网络上的目标机器192.168.1.180
查看来自远程 pi(网关、Wi-Fi AP、WireGuard 客户端)的 ping:
20:32:01.375555 IP (tos 0x0, ttl 63, id 64374, offset 0, flags [DF], proto ICMP (1), length 84)
10.8.0.2 > 192.168.1.180: ICMP echo request, id 11, seq 1, length 64
20:32:01.375738 IP (tos 0x0, ttl 64, id 34197, offset 0, flags [none], proto ICMP (1), length 84)
192.168.1.180 > 10.8.0.2: ICMP echo reply, id 11, seq 1, length 64
tcpdump
从本地网络上的目标计算机192.168.1.180
查看来自远程网络上的常规客户端的 ping:
20:31:21.059165 IP (tos 0x0, ttl 62, id 11367, offset 0, flags [none], proto ICMP (1), length 44)
192.168.2.163 > 192.168.1.180: ICMP echo request, id 56286, seq 38228, length 24
20:31:21.059294 IP (tos 0x0, ttl 64, id 41939, offset 0, flags [none], proto ICMP (1), length 44)
192.168.1.180 > 192.168.2.163: ICMP echo reply, id 56286, seq 38228, length 24
一切都按预期进行,只是不像我预期的那样。