ルーターとしてのLinux:ICMPv4メッセージ「Network unreachable」および「Host unreachable」を送信する

ルーターとしてのLinux:ICMPv4メッセージ「Network unreachable」および「Host unreachable」を送信する

私は、 GNU / Linuxベースのルーターが少なくとも次net unreachableのICMPv4メッセージを送信すると予想しています。host unreachable特にホストに接続できないというメッセージが私にとって重要です。ルーターが宛先ホストと同じネットワーク上にあるがIPを解決できない場合、つまりホスト自体に接続できないことを意味するため、ルーターはホストに接続できないメッセージを送信する必要があります。

今はルールを作らなければなりませんiptables。しかし、定義どおりにこのメッセージを送信したいと思います。RFC、自動的に次のことを意味します。データグラムのインターネット宛先フィールドで指定されたネットワークにゲートウェイルーティングテーブルの情報に基づいて到達できない場合(たとえば、そのネットワークまでの距離が無限)、ゲートウェイはデータグラムのインターネットソースホストに宛先到達不能メッセージを送信するできます。 。データグラム。また、一部のネットワークでは、ゲートウェイがインターネットターゲットホストに接続できないかどうかを確認することもできます。宛先ホストに接続できない場合、これらのネットワークのゲートウェイは宛先に接続できないメッセージをソースホストに送信できます。ところで、関連するルーティングプロトコルはありません。デフォルトでは、各ルータは最大3つのサブネットのゲートウェイです。

私は何をすべきですか?

答え1

さて、質問を編集して範囲を変更してください。何を言うのか分からないが:

ルーターが宛先ホストと同じネットワーク上にあるがIPを解決できない場合(つまり、ホスト自体に接続できないことを意味)、ルーターはホストに接続できないというメッセージを送信する必要があります。

予感があります。ルーターが同じネットワークセグメントにある場合は、定義に従って宛先に到達できます。 「IPを確認できません」という言葉が何を意味するのかは明確ではありません。

ただし、ターゲットホストがダウンすると、ルータは次のように動作します。正確に標準に従って説明する方法です。だからあなたが望むものが標準的な動作と異なるかどうかはわかりません...

ルータの応答に応じて、上位レベルのソフトウェアがどのように対処するかは別の話です。しかし、標準によると、あなたが要求しているように見える動作を得る必要があります。


元の答え

この問題を解決するにはiptables(あなたの問題が何であるかわからない)、以下を設定する必要があります。空のパス(返品ブラックホールパス)。しかし、必要なICMPメッセージを返すので、前者が欲しいかもしれません。

トリックは、iptables許容される値の1つを使用することです。

... -j REJECT --reject-with ...

引用するどのように:

 REJECT
    This module has the same effect as `DROP', except that the
    sender is sent an ICMP `port unreachable' error message.  Note
    that the ICMP error message is not sent if (see RFC 1122):


    o  The packet being filtered was an ICMP error message in the
       first place, or some unknown ICMP type.

    o  The packet being filtered was a non-head fragment.

    o  We've sent too many ICMP error messages to that destination
       recently (see /proc/sys/net/ipv4/icmp_ratelimit).

    REJECT also takes a `--reject-with' optional argument which
    alters the reply packet used: see the manual page.

したがって、マニュアルページ(「拒否(IPv6固有)」および「拒否(IPv4固有)」検索):

  • IPv6:icmp6-no-route、no-route、icmp6-adm-prohibited、adm-prohibited、icmp6-addr-unreachable、a​​ddr-unreach、icmp6-port-unreachable、またはport-unreach(またはtcp-reset)
  • IPv4:icmp-net-unreachable、icmp-host-unreachable、icmp-port-unreachable、icmp-proto-unreachable、icmp-net-prohibited、icmp-host-prohibited、またはicmp-admin-prohibited(またはtcp-reset)

IPv4の場合は、質問に従って別々に見つけてくださいicmp-net-unreachableicmp-host-unreachable

関連情報