IBM Cloud Orchestrator バージョン 2.5.0.1

Linux 仮想マシンの複数の NIC がデプロイされている場合に、アドレスのいずれかに到達できない

2 つ目の IP アドレスのルーターは、仮想マシンで自動的には設定されません

原因

この問題は、Linux でデフォルト・ゲートウェイが 1 つのみであるために発生します。つまり、ネットワーク・パケットが 2 つ目の NIC に到達可能な場合でも、応答パケットが引き続きデフォルト・ゲートウェイを使用します。この時点で、応答パケットは送信側に到達できなくなります。

問題の解決方法

以下の手順を実行して、別のルーティング・テーブルを手動で追加します。
  1. デフォルト・ゲートウェイと、経路テーブルを追加する必要がある NIC を判別します。以下のコマンドを実行します。
    ip addr show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host  
    valid_lft forever preferred_lft forever
    
    2: eth0
    <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1454 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:cd:c3:17 brd ff:ff:ff:ff:ff:ff    
    inet 192.0.1.145/24 brd 192.0.1.255 scope global eth0
    inet6 fe80::f816:3eff:fecd:c317/64 scope link 
    valid_lft forever preferred_lft forever
    eth1:
    <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1454 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:f8:a4:f2 brd ff:ff:ff:ff:ff:ff    
    inet 192.0.2.4/24 brd 192.0.2.255 scope global eth1    
    inet6 fe80::f816:3eff:fef8:a4f2/64 scope link        
    valid_lft forever preferred_lft forever
    ここで、仮想マシンには 2 つの NIC があります。つまり、eth0 (192.0.1.145) と eth1 (192.0.2.4) です。
    経路テーブルを確認します。
    route -n 
          
     Kernel IP routing table  Destination Gateway  Genmask          Flags Metric Ref  Use Iface 
     169.254.169.254          192.0.2.3            255.255.255.255  UGH   0       0   0   eth1 
     192.0.1.0                0.0.0.0              255.255.255.0    U     0       0   0   eth0 
     192.0.2.0                0.0.0.0              255.255.255.0    U     0       0   0   eth1 
     169.254.0.0              0.0.0.0              255.255.0.0      U     1002    0   0   eth0 
     169.254.0.0              0.0.0.0              255.255.0.0      U     1003    0   0   eth1 
     192.0.2.1                0.0.0.0                               UG    0       0   0   eth1   
    NIC eth1 には、外部から到達できるデフォルト・ゲートウェイがありますが、eth0 にはデフォルト・ゲートウェイがないため、他のネットワークから到達できません。
  2. eth0 のための別の経路テーブルを追加する必要があります。次のコマンドを使用します (eth0 は経路テーブルの名前です。各自でわかりやすい名前を指定することもできます)。
    echo "1 eth0" >> /etc/iproute2/rt_tables 
  3. テーブル eth0 のルーティング・ルールを構成します。
    ip route add 192.0.1.0/24 dev eth0 src 192.0.1.145 table eth0 
    ip route add default via 192.0.1.1 dev eth0 table eth0
    ip rule add from 192.0.1.145/32 table eth0
    ip rule add to 192.0.1.145/32 table eth0