무선 Ad-hoc 네트워크에서 3대의 컴퓨터를 어떻게 라우팅합니까?

무선 Ad-hoc 네트워크에서 3대의 컴퓨터를 어떻게 라우팅합니까?

192.168.2.1, 192.168.2.2, 192.168.2.4 등 3대의 컴퓨터가 무선 임시 네트워크에 연결되어 있습니다. 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에서 Traceroute를 하면 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 사이에서 직접 이동합니다.

리디렉션은 반대 방법으로 사용될 수 있기 때문에 약간 수상쩍은 것으로 간주될 수 있습니다. 즉, 중간자(man-in-the-middle)인 세 번째 시스템을 통해 트래픽을 전송하는 것입니다. 예를 참조하십시오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을 통과하도록 했습니다.

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

다시 말하지만 이것이 최선의 방법인지는 확실하지 않습니다. 당신이 달성하려는 것이 무엇인지 설명해주세요.

관련 정보