ワイヤレスAd Hocネットワークで3台のコンピュータをどのようにルーティングしますか?

ワイヤレスAd Hocネットワークで3台のコンピュータをどのようにルーティングしますか?

192.168.2.1、192.168.2.2、192.168.2.4など、3台のコンピュータがワイヤレスAd-hocネットワークに接続されています。 192.168.2.3と通信するときは、192.168.2.1のすべてのトラフィックが192.168.2.2を通過するようにしたいと思います。オリジナル

192.168.2.1 <---> 192.168.2.2 <---> 192.168.2.3

ルーティングテーブルを変更するには?

私は試した:

[email protected]:   sudo ip route add 192.168.2.3 via 192.168.2.2 dev wlan0

[email protected]:   sudo ip route add 192.168.2.1 via 192.168.2.2 dev wlan0 

192.168.2.2で転送を有効にしましたが、機能しました。ところで、192.168.2.1でルートを追跡すると、192.168.2.3に直接行くように見えます。これで、いくつかのノードを追加し(以下の192.168.2.1のルートテーブルを参照)、Tracerouteを実行してもまだ1つのホップを取得します。ただし、192.192.2.2にログインして192.168.2.5パスを追跡すると、正しいホップ数が表示されます。

**ROUTE TABLE OF 192.168.2.1**

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     303    0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.2.3     192.168.2.2     255.255.255.255 UGH   0      0        0 wlan0
192.168.2.4     192.168.2.2     255.255.255.255 UGH   0      0        0 wlan0
192.168.2.5     192.168.2.2     255.255.255.255 UGH   0      0        0 wlan0


**ROUTE TABLE OF 192.168.2.2**

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     303    0        0 wlan0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.2.4     192.168.2.3     255.255.255.255 UGH   0      0        0 wlan0
192.168.2.5     192.168.2.3     255.255.255.255 UGH   0      0        0 wlan0

ノードはキャッシュを実行できますか?

編集する。これで合計10個のノードがあり、これが私のTracerouteの出力です。

traceroute -4 192.168.2.10

traceroute to 192.168.2.10 (192.168.2.10), 30 hops max, 60 byte packets
1  192.168.2.2 (192.168.2.2)  10.140 ms  10.324 ms  10.398 ms
2  192.168.2.3 (192.168.2.3)  17.292 ms  17.483 ms  17.564 ms
3  192.168.2.4 (192.168.2.4)  25.646 ms  25.708 ms  26.110 ms
4  192.168.2.5 (192.168.2.5)  34.156 ms  34.416 ms  34.501 ms
5  192.168.2.6 (192.168.2.6)  44.131 ms  44.479 ms  44.560 ms
6  192.168.2.7 (192.168.2.7)  51.382 ms  43.074 ms  46.144 ms
7  192.168.2.8 (192.168.2.8)  46.129 ms  43.374 ms  53.956 ms
8  192.168.2.9 (192.168.2.9)  58.156 ms  83.625 ms  83.642 ms
9  192.168.2.10 (192.168.2.10)  83.565 ms  84.008 ms  89.355 ms

答え1

ルータは他のルータにICMPリダイレクトパケットを直接送信するように指示できます。どちらも同じネットワークにあるので、これが可能であることを知っています。

私は3つのLinuxマシン(mach1 <-> mach3 <-> mach2)の間にあなたと同じパスを設定し、pingを使ってテストしました。

mach1# ping mach2 
PING mach2 (x.x.x.237) 56(84) bytes of data.
From mach3 (x.x.x.238): icmp_seq=1 Redirect Host(New nexthop: mach2 (x.x.x.237))
64 bytes from mach2 (x.x.x.237): icmp_seq=1 ttl=63 time=0.537 ms

mach3 および mach2 の Tcpdump は、mach3 が mach1 にリダイレクトを送信し、すべてのトラフィックが mach1 と mach2 の間で直接移動することを示します。

リダイレクトは逆の方法で使用できるため、少し不思議と見なすことができます。つまり、3番目のシステム(中間者)を介してトラフィックを送信する方法です。たとえば、参照してください。https://askubuntu.com/questions/118273/what-are-icmp-redirects-and-should-they-be-blocked

リダイレクトの送受信は、いくつかのsysctlsを使用して制御できます。

net.ipv4.conf.*.accept_redirects
net.ipv4.conf.*.send_redirects

ルータでnet.ipv4.conf.eth0.send_redirectsを0に設定し、ルーティングをリセットした後、すべてのトラフィックがmach3を通過しました。

これでスイッチネットワーク(およびVM)でこれをテストしたので、WLANを使用すると状況が変わるかどうかはわかりません。マシンがイーサネットアドレスに向かうフレームだけを処理する場合、私はこれを行うべきではないと思います。しかし、理論的には空からすべてのフレームを引き出すことが可能です。

答え2

まず、次のような音がします。XYの問題。何してるの?このように、ネットワークトラフィックをルーティングすることが問題に対する良い解決策になる可能性はほとんどないと確信しています。

それでも、

ルーティングテーブルにはまだパスがあります192.168.2.0/24。つまり、192.168.2.12つのルートが到着するため、192.168.2.2カーネルルーティングサブシステムは両方のルートを考慮して、1つは直接ルートで、もう1つはそうでないものを見つけて直接ルートを使用します(この方法はより安価でなければなりません)。

これを望まない場合は、2つのオプションがあります。

  • ルーティングテーブルエントリが削除されました192.168.2.0/24。これは、ルーティングテーブルエントリを生成する必要があることを意味します。みんなネットワーク上のホスト - 直接アクセスするホストを含​​みます。
  • 2つの/ 24ネットワークスコープを作成し、現在の両方のスコープに属するIPアドレスをホストに提供します192.168.2.2(別のネットワークインターフェイスは必要ありません)。その後、他のすべてのホストにそのホストを介してパケットをルーティングさせることができます。

しかし、これが最善の方法であるかどうかはわかりません。あなたが達成したいものが何であるかを説明してください。

関連情報