У меня есть машина Ubuntu Bionic с подключением по Wi-Fi; и я настроил на ней туннель Wireguard:
# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 5502 bytes 545376 (545.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5502 bytes 545376 (545.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1420
inet 10.0.0.3 netmask 255.255.0.0 destination 10.0.0.3
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 22980 bytes 2777236 (2.7 MB)
RX errors 75 dropped 0 overruns 0 frame 75
TX packets 23467 bytes 12255956 (12.2 MB)
TX errors 0 dropped 362 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.218 netmask 255.255.0.0 broadcast 192.168.255.255
ether dc:85:de:f3:3f:65 txqueuelen 1000 (Ethernet)
RX packets 103227 bytes 54970550 (54.9 MB)
RX errors 0 dropped 103695 overruns 0 frame 0
TX packets 41654 bytes 15633577 (15.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Раньше я перенаправлял весь трафик через туннель Wireguard, но теперь я изменил это, чтобы позволить пиру пересылать через этот хост. Однако, похоже, что мои пакеты по какой-то причине все еще хотят маршрутизироваться через туннель.
Вот моя таблица маршрутизации:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 wlan0
10.0.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wg0
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.1.1 0.0.0.0 255.255.255.255 UH 600 0 0 wlan0
192.168.100.1 192.168.1.1 255.255.255.255 UGH 0 0 0 wlan0
Если я пытаюсь пинговать или curlить внешний адрес, он всегда зависает. Traceroute показывает, что он пытается направить пакеты через туннель (в настоящее время узел настроен на их отбрасывание):
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 10.0.0.1 (10.0.0.1) 68.393 ms 74.587 ms 74.328 ms^C
Но если заставить traceroute 8.8.8.8 -i wlan0
traceroute использовать wlan0, как того требует таблица маршрутизации выше, то это работает.
Что может происходить? Разве таблица маршрутизации не говорит, что пакеты, направленные на 8.8.8.8, должны выходить из wlan0 на 192.168.1.1 для пересылки?
(Если это важно, то сейчас у меня только iptables -A FORWARD -i wg0 -j ACCEPT
и -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
)
решение1
Кажется, что wg-quick up
добавляет маршруты в другую таблицу, которая не отображается с помощью route -n
или ip route show
. Если вы запустите ip route show table all
, вы можете увидеть это. В этом случае это было в таблице с именем 51820
и имело приоритет над таблицей по умолчанию.