다음 레이아웃을 사용하여 두 개의 서로 다른 네트워크를 연결하려고 합니다.
네트워크 1에는 IP 10.0.0.1의 Linux Router1을 통해 이더넷 인터페이스(eth0)를 통해 연결된 IP 주소 10.0.0.2/24의 컴퓨터/노트북이 있습니다. Linux Router1에서 IP 전달을 활성화한 후 Computer1에서 Linux Router2로 패킷을 전달할 수 있습니다(Computer1에서 Router2를 ping할 수 있음).
또한 네트워크 패킷을 전달하는 Linux Router2를 사용하여 Computer2에서 Router1로 역방향 경로를 수행할 수도 있습니다.
하지만 제가 달성하고 싶은 것은 이 네트워크에서 Computer1과 Computer2 사이에 통신을 설정하는 것입니다.
예를 들어, Computer1에서 Computer2를 ping하고 그 반대의 경우도 마찬가지입니다.
Linux 구성(iptables, 경로 테이블 등)을 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?
답변1
제공하신 경로로는 불가능합니다. (적어도 프록시 arp의 불필요한 복잡성을 모두 포함하려는 경우는 제외됩니다.)
라우터 주소에 오타가 있을 수 있으며 실제로는 서브넷을 공유하지만 그림에 표시된 것처럼 라우터 192.168.0.1/24와 192.168.1.1/24 사이에는 경로가 없습니다. 서브넷 마스크를 /23으로 변경하거나 라우터를 동일한 /24 서브넷에 배치합니다(예: 192.168.1.x/24).
이 문제가 해결되면 10.0.0.x/24의 모든 장치는 10.0.0.1에서 10.0.1.x/24로 또는 그 반대로 라우팅되어야 합니다. 각 라우터는 원격 10.* 네트워크에 도달하기 위해 반대쪽 라우터를 통과하는 경로가 필요합니다.
답변2
간단히 말해서, router1은 아마도 모르고, 10.0.1.0\24
router2도 알지 못할 것입니다 10.0.0.0\24
. 따라서 router1과 router2에 고정 경로를 설정하여 아직 모르는 네트워크 위치로 패킷을 보내도록 지시해야 합니다.
컴퓨터 1은 자신이 모르는 모든 것을 라우터 1로 보내는 것을 이미 알고 있고, 컴퓨터 2는 자신이 모르는 모든 것을 라우터 2로 보내는 것으로 보입니다.
다음 명령을 사용할 수 있습니다.
ip route add ...
10.0.1.0\24
모든 트래픽을 router2(다이어그램의 192.168.1.1)로 보내도록 router1에 지시해야 합니다 .
10.0.0.0\24
모든 트래픽을 router1(그림의 192.168.0.1)로 보내도록 router2에게 지시해야 합니다.