web-dev-qa-db-ja.com

別のサブネット上のネイバーと通信するようにBIRDルーターを構成するにはどうすればよいですか?

前書き

BIRDルーティングデーモン を実行している2つのホスト間でRIPv2プロトコルとの基本的な通信をセットアップしようとしています。

アドレスHost Aを持つインターフェースenp0を備えた10.0.1.50/24があります。
アドレスHost Bを持つインターフェースenp1を持つ別のホスト10.1.1.25/24があります。これらのインターフェースはケーブルで直接接続されています。両方のマシンに静的ルートを追加すると、両方のマシン間でpingを実行できます。

構成ファイル

bird.confに次のHost Aがあります。

protocol kernel {
        learn;                  # Learn all alien routes from the kernel
        persist;                # Don't remove routes on bird shutdown
        scan time 20;           # Scan kernel routing table every 20 seconds
        export all;             # Default is export none
}

protocol device {
    scan time 10;           # Scan interfaces every 10 seconds
}

protocol direct {
        interface "enp0"
}

protocol rip MyRIP {    
    export all;
    import all;
    interface "enp0" { mode multicast;};
}

bird.confHost Bは、enp0enp1に置き換えられていることを除いて同じです。

初期結果

両方のホストでbirdデーモンを起動した後、tcpdump -ni enp0 -vvを実行できます。

13:21:41.943537 IP (tos 0xc0, ttl 1, id 4933, offset 0, flags [none], proto UDP (17), length 132)
    10.1.1.25.520 > 224.0.0.9.7742: [udp sum ok] UDP, length 104
13:21:41.943704 IP (tos 0xc0, ttl 1, id 150, offset 0, flags [none], proto UDP (17), length 272)
    10.0.1.50.520 > 224.0.0.9.7742: [bad udp cksum 0xec48 -> 0x1219!] UDP, length 244

birdclコマンドラインに飛び乗ってshow rip neighborsを実行し、空のテーブルを取得できます。

それを機能させる

アドレスを同じサブネット上に設定すると、show rip neighborsを実行でき、ネイバーのリストに10.0.1.50が表示されます。

要約

リンクの両端が同じサブネット上にない場合、これらのルーターをネイバーとしてリストするにはどうすればよいですか?

ネットワークがどのように機能するかについて、ある種の誤ったイメージを持っている必要があります。ルーターは、常に同じサブネット上にないネイバーと通信する必要はありませんか?

私はBIRD固有の答えにこだわっていません。

1
karobar

TCP/IPよりも多くのプロトコルがネットワーク上にあった古代に、私はRIPを実行しました。当時はRIPv1で、ブロードキャストを使用していました。ネットワークトポロジは次のようになりました。

[10.0.0.0/24] <-- router --> [10.0.1.0/24] <-- router --> [10.0.2.0/24]
[10.0.3.0/24] <-- router ------^        ^---- router  --> [10.0.4.0/24]
[10.0.5.0/24] <-- router -------^      ^----- router  --> [10.0.6.0/24]

すべてのルーターが、ルーターのみが存在するサブネットを共有する場合。 2ルーターのセットアップの場合、あなたがしているように、それらの間に1本のケーブルが張られていました。大規模なセットアップの場合、サブネットを実行している高速ネットワークデバイスがあります(スイッチであることが望ましいですが、常にではありません)。そうすれば、すべてが2ホップ離れており、ルートの収束は簡単に進みました。それは私たちが当時持っていたものです。

次に、RIPv2とマルチキャストが登場し、ホップ数が多いほど収束の問題が発生しにくくなりました。マルチキャストTTLがホップの直径に対して+1に設定されている場合、各ルーターは他のすべてのルーターに直接アナウンスしていたため、収束が速くなりました。

ただし、考慮すべき重要な点は、TCPDUMP出力の送信元アドレスを確認することです。

 10.1.1.25.520 > 224.0.0.9.7742
 10.0.1.50.520 > 224.0.0.9.7742

ルーター10.0.1.50は、10.1.1.25のルーターのサブネットが10.1.1.0/24ローカルであると通知されました。ただし、10.0.1.50のルーターにはアドレス10.1.1.25へのルートがないため、テーブルに追加されません。マルチキャストはアナウンスチャネルですが、ルーティングされたトラフィックを伝送することはできません。

すべてが失われるわけではありません。

何らかの理由で1本のケーブルに制限されている場合は、仮想インターフェイスを定義できます。ここで、enp0.0は10.3.1.0/ 24にあり、enp0.1は10.0.1.0/24にあります。そうすれば、10.3.1.0/24を「ルーティングネットワーク」として使用できます。

3
sysadmin1138