route add xxxx via gatewayip と route add dev interface の違いは何ですか?

route add xxxx via gatewayip と route add dev interface の違いは何ですか?

私は自分の設定にとても混乱していました。

私のサーバーには 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 アドレスを解決しようとしますが、応答がないため、「宛先ホストに到達できません」というエラーを報告します。

関連情報