업데이트 1

업데이트 1

실험의 일환으로미니넷, 내 IPv4 네트워크에는 두 개의 라우터를 통해 연결된 두 호스트에 대한 다음 토폴로지가 있습니다. (Ubuntu 22.04.02 가상머신에서 Mininet을 실행하고 있습니다.)

  N.0.103              N.0.1  N.2.1                N.2.2  N.1.1                N.1.2
h1 ------------------------ r1 ------------------------ r2 ------------------------ h2
           N.0.0/24                    N.2.0/24                    N.1.0/24

맨 위 행은 인터페이스 주소이고 맨 아래 행은 N = 192.168인 네트워크 주소입니다.

특히 호스트 'h1'의 구성은 다음과 같습니다.

h1-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.103  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::70e9:dfff:fe2c:6242  prefixlen 64  scopeid 0x20<link>
        ether 72:e9:df:2c:62:42  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1076 (1.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

호스트 "h2"의 구성은 다음과 같습니다.

h2-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::f429:9fff:fe6a:5211  prefixlen 64  scopeid 0x20<link>
        ether f6:29:9f:6a:52:11  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1076 (1.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

라우터 "r1"의 구성은 다음과 같습니다.

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r1-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::10dc:6cff:feb2:1688  prefixlen 64  scopeid 0x20<link>
        ether 12:dc:6c:b2:16:88  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1076 (1.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r1-eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.1  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::8cd5:99ff:fedf:e2a8  prefixlen 64  scopeid 0x20<link>
        ether 8e:d5:99:df:e2:a8  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1146 (1.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

라우터 "r2"의 구성은 다음과 같습니다.

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r2-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::87d:6aff:fee9:477  prefixlen 64  scopeid 0x20<link>
        ether 0a:7d:6a:e9:04:77  txqueuelen 1000  (Ethernet)
        RX packets 21  bytes 1398 (1.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1146 (1.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r2-eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.2  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::cc40:70ff:fe31:f96d  prefixlen 64  scopeid 0x20<link>
        ether ce:40:70:31:f9:6d  txqueuelen 1000  (Ethernet)
        RX packets 15  bytes 1146 (1.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1146 (1.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

두 호스트가 다른 호스트에 연결할 수 있도록 실험적인 토폴로지를 설정하려고 합니다. 이는 물론 라우팅 테이블을 구성하여 달성할 수 있습니다.

나는 다음 단계를 수행했습니다.

우수한r1 터미널(xterm):

    ifconfig r1-eth0 192.168.0.1 netmask 255.255.255.0  
    ifconfig r1-eth1 192.168.2.1 netmask 255.255.255.0  
    ip route add 192.168.0.0/24 dev r1-eth0   
    ip route add 192.168.1.0/24 via 192.168.2.2

우수한r2 터미널(xterm):

    ifconfig r2-eth0 192.168.1.1 netmask 255.255.255.0
    ifconfig r2-eth1 192.168.2.2 netmask 255.255.255.0  
    ip route add 192.168.0.0/24 via 192.168.2.1   
    ip route add 192.168.2.0/24 dev r1-eth1 

우수한h1 터미널(xterm)

    ifconfig h1-eth0 192.168.0.103 netmask 255.255.255.0
    route add default gw 192.168.0.1
    ip route add 192.168.1.0/24 via 192.168.0.1

우수한h2 터미널(xterm)

    ifconfig h2-eth0 192.168.1.2 netmask 255.255.255.0
    route add default gw 192.168.1.1
    ip route add 192.168.0.0/24 via 192.168.1.1

h1, h2, r1, r2의 업데이트된 라우팅 테이블은 다음과 같습니다.

h1 경로:

    Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 h1-eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 h1-eth0
192.168.1.0     192.168.0.1     255.255.255.0   UG    0      0        0 h1-eth0

h2 경로:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 h2-eth0
192.168.0.0     192.168.1.1     255.255.255.0   UG    0      0        0 h2-eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 h2-eth0

r1 라우팅 테이블:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 r1-eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 r1-eth1
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 r1-eth1

r2 라우팅 테이블:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 r2-eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 r2-eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 r2-eth1

"h1"에서 "h2"로 ping을 시도하면(또는 그 반대로) "대상 호스트에 연결할 수 없음" 오류가 발생합니다.

pingall다음은 몇 가지 결과를 보여주는 핑 도달 가능성 매트릭스(Mininet CLI에서 생성됨)입니다 .

 r1 -> r2 h1 X 
 r2 -> r1 X X 
 h1 -> r1 r2 X 
 h2 -> r1 r2 X 

이는 다음과 같이 해석될 수 있습니다.

Ping 작업을 통해

  1. r1그것은 달성될 수 있지만 r2그렇지 h1는 않습니다 h2.
  2. r2도달할 수 있지만 r1         도달할 수 없고 h1도달할 수 없습니다 h2.
  3. h1그것은 달성될 수 있지만 r1그렇지 r2는 않습니다 h2.
  4. h2그것은 달성될 수 있지만 r1그렇지 r2는 않습니다 h1.

실제 매트릭스로서,

다음 노드는 다른 노드를 ping할 수 있습니다. r1 r2 h1 2시간
  r1 -
  r2 -
  h1 -
  2시간 -

내가 어디서 잘못됐나요? 내가 한 단계 건너뛴 걸까? 어떤 통찰력이나 도움을 주시면 감사하겠습니다.

답변1

r1 및 r2에서 전달이 활성화되지 않았을 수 있습니다.

sysctl -w net.ipv4.ip_forward=1

이 명령을 실행하기 전(또는 후에) 현재 상태를 확인할 수 있습니다.

sysctl net.ipv4.ip_forward

0은 활성화되지 않았음을 의미하고, 그렇지 않으면 1을 의미합니다.

답변2

오타가 있습니다:

# On the h1 terminal (xterm)
[...]
ip route add 192.168.1.0/24 via 192.168.1.1

당신이 입력하고 싶은 것 (h2와 일치)은 다음과 같습니다.

ip route add 192.168.1.0/24 via 192.168.0.1

이 항목은 전혀 쓸모가 없기 때문에 이 오류는 특히나 슬픈 일입니다. 두 경우 모두 기본 경로가 이를 재정의합니다.

일반적으로 이런 종류의 문제가 있는 경우 tcpdump모든 호스트에서 실행하여 패킷이 얼마나 멀리 이동했는지 확인해야 합니다.

다음 명령을 사용하여 로컬 라우팅 구성을 테스트할 수 있습니다.

ip route get 1.2.3.4 # tells you what would happen with a packet to that address

업데이트 1

라우터의 라우팅 테이블이 잘못된 것 같습니다. 익숙하지 않아서 알아차리는 데 시간이 좀 걸렸습니다 . and 대신 and 를 route사용해야 합니다 .ip addressip linkifconfigip routeroute

라우터의 라우팅 테이블에는 두 개의 링크 항목(두 인터페이스 모두에 대한)과 하나의 다음 홉 항목이 포함되어야 합니다. 그러나 모든 항목은 동일하게 보입니다.

그 이유는 각 라우터의 라우팅 구성이 누락되었기 때문입니다. 모든 사람은 (다른) 항목이 필요합니다

  • 192.168.0.0/24
  • 192.168.0.1/24
  • 192.168.0.2/24

r1다 쓴:

ip route add 192.168.2.0/24 dev r1-eth1

r2다 쓴:

ip route add 192.168.1.0/24 dev r2-eth0

관련 정보