Linux ルーティング テーブルによると、パケットが間違ったインターフェイスから送信されるのはなぜですか?

Linux ルーティング テーブルによると、パケットが間違ったインターフェイスから送信されるのはなぜですか?

私は Wi-Fi リンクを備えた Ubuntu Bionic マシンを持っており、そこに 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

外部アドレスに ping または 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 -nip route showip route show table all51820

関連情報