如何在無線自組織網路中路由 3 台電腦?

如何在無線自組織網路中路由 3 台電腦?

我有 3 台電腦:192.168.2.1、192.168.2.2、192.168.2.4 連接到無線 ad-hoc 網路。我希望來自 192.168.2.1 的所有流量在與 192.168.2.3 通訊時都經過 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 時,我仍然得到一跳。但如果我登入 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 -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 重定向封包。由於它們都位於同一網路上,因此它知道這應該是可能的。

我在三台 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 之間傳輸。

重定向可以被認為有點可疑,因為可以以相反的方式使用重定向:透過第三台機器(中間人)發送流量。參見例如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 設為零並重設路由後,我讓所有流量都通過 mach3。

現在,我在交換網路(以及虛擬機器)上對此進行了測試,因此我不確定在 WLAN 上是否會改變情況。如果機器只處理發送到其乙太網路位址的幀,我認為不應該這樣做。但從理論上講,有可能從空中摘取每個畫面。

答案2

首先,這聽起來像是一個XY問題。你想做什麼?我確信以這種方式路由網路流量不太可能成為解決您的問題的好方法。

話說回來,

您的路由表仍然有 的路由192.168.2.0/24。這意味著192.168.2.1有兩個路由到達192.168.2.2,因此核心路由子系統會考慮這兩個路由,發現一個是直接路由,另一個不是,並使用直接路由(因為這應該更便宜)。

如果您不希望這樣,您有兩個選擇:

  • 刪除 的路由表條目192.168.2.0/24。這確實意味著您必須為以下內容建立路由表條目全部網路上的主機-包括您想要直接存取的主機。
  • 建立兩個 /24 網路範圍,並為目前屬於這兩個範圍的 IP 位址的主機提供192.168.2.2(不需要單獨的網路介面)。然後,您可以讓所有其他主機通過該主機路由資料包。

不過,我再次不確定這是最好的前進方式。請解釋一下您想要實現的目標是什麼。

相關內容