2 つの Ubuntu 12.04 インスタンスを実行していますが、どちらも相互にアクセスできません。
マシン1:
eth0 - 10.0.0.20
eth1 - 10.0.0.30
netstat -nr:
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
マシン2:
eth0 - 10.0.0.100
eth1 - 10.0.0.40
netstat -nr:
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
両方のマシンはインターネット経由でのみ相互アクセスでき、VPC (つまり LAN) 経由ではアクセスできません。ファイアウォールを無効にしても効果はありません。マシン 1 は 10.0.0.100 のみに ping できます。マシン 2 は 10.0.0.30 のみに ping できます。LAN 経由で TCP/UDP プロトコルでどのマシンにも接続できません。ACL はなく、マシン上のデーモンはすべての IP、すべてのインターフェースでリッスンしています。何が問題なのでしょうか?
編集1:
問題はルーティング テーブルにあったようです。マシン 2 の NIC を 1 つ削除し、いくつかのランダムな操作を実行した後、マシン 1 の問題を解決しました。その結果、DHCP は次のルールを取得しました。
~$ ip rule
0: from all lookup local
32765: from 10.0.0.30 lookup 2
32766: from all lookup main
32767: from all lookup default
~$
これをマシン 2 で再現することはできませんが、次のコマンドでルールとルーティング テーブルを手動で追加できます。
ip route add default via 10.0.0.1 dev eth0
ip route add default via 10.0.0.1 dev eth1 table 2
ip rule add from 10.0.0.167 lookup 2 prio 1000
手動で行うのを避けるにはどうすればよいですか?
答え1
ルートをより具体的に追加してみてください。ルーティングでは、詳細度、メトリック、追加順の順に最初に一致するルートが優先されます。
たとえば、マシン 1 に次のルートを追加します。
ip route add 10.0.0.40/32 dev eth1 src 10.0.0.30
マシン2では次のようになります。
ip route add 10.0.0.30/32 dev eth1 src 10.0.0.40
両方のマシンで eth1 のより一般的なルートを削除したい場合があります。
ip route del 10.0.0.0/24 dev eth1
これらは /24 にあるため、異なるサブネットに配置するようにしてください。たとえば、両方の eth1 が 10.0.1.0/24 にある場合、この問題はまったく発生しません。