
私は自分の設定にとても混乱していました。
私のサーバーには 2 つのインターフェースがあります:
eth0: 192.168.1.22 gw 192.168.1.1
eth2: 10.2.1.6 gw 10.2.1.1
静的ルートを書きました:
ip r a 8.8.8.8 via 192.168.1.1
worked great!!
then I deleted it and
ip r a 8.8.8.8 dev eth0
From 192.168.1.22 icmp_seq=1 Destination Host Unreachable
なぜ?????
答え1
2 番目の形式 ( ip r a 8.8.8.8 dev eth0
) ではゲートウェイを指定していないので、パケットはどのルーターに転送されるのでしょうか。ゲートウェイがわからないため、サーバーは単に「宛先ホストに到達できません」と応答します。
インターフェースを指定すると、次の 2 つの理由で役立ちます。
- リモートホストが同じゲートウェイを経由してルーティングされている場合、それ自体は二
dev
異なるインターフェースを使用すると、同じゲートウェイに対して異なる2つのルートを作成できます。その後、metric
またはを使用して2つのルートの優先順位を設定できます。ECMPルーティング何らかの負荷分散を実現するため; - ポイントツーポイント インターフェース (VPN または tun インターフェースなど) の場合、すべてのトラフィックは指定されたインターフェースによって「キャプチャ」されます (ゲートウェイは重要ではありません)
答え2
ip r a 8.8.8.8 dev eth0
これは「8.8.8.8 は eth0 インターフェースに直接接続されている」ことを意味します。Linux カーネルは ARP 要求で 8.8.8.8 の MAC アドレスを解決しようとしますが、応答がないため、「宛先ホストに到達できません」というエラーを報告します。