
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
(별도의 네트워크 인터페이스가 필요하지 않음). 그런 다음 다른 모든 호스트가 해당 호스트를 통해 패킷을 라우팅하도록 할 수 있습니다.
다시 말하지만 이것이 최선의 방법인지는 확실하지 않습니다. 당신이 달성하려는 것이 무엇인지 설명해주세요.