무선 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를 수행해도 여전히 하나의 홉을 얻습니다. 하지만 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 리디렉션 패킷을 직접 보내도록 지시할 수 있습니다. 둘 다 동일한 네트워크에 있기 때문에 이것이 가능하다는 것을 알고 있습니다.

나는 세 대의 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를 0으로 설정하고 라우팅을 재설정한 후 모든 트래픽이 mach3을 통과했습니다.

이제 스위치 네트워크(및 VM)에서 이것을 테스트했기 때문에 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(별도의 네트워크 인터페이스는 필요하지 않음). 그런 다음 다른 모든 호스트가 해당 호스트를 통해 패킷을 라우팅하도록 할 수 있습니다.

그러나 이것이 최선의 방법인지는 확신할 수 없습니다. 당신이 달성하고 싶은 것이 무엇인지 설명해주세요.

관련 정보