アップデート1

アップデート1

実験の一環としてミニネット、私のIPv4ネットワークには、2つのルータを介して接続されている2つのホストの次のトポロジがあります。 (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以下は、いくつかの結果を示すping到達可能性マトリックス(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

ルーターのルーティングテーブルには、2つのリンクエントリ(両方のインターフェイス用)と1つのネクストホップエントリを含める必要があります。しかし、すべてのアイテムは同じように見えます。

その理由は、各ルータのルーティング設定が欠落しているためです。誰もが(他の)アイテムを必要とします

  • 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

関連情報