Xinetd はインターフェースに割り当てられていない IP アドレスをリッスンします

Xinetd はインターフェースに割り当てられていない IP アドレスをリッスンします

Xinetd (または他のソリューション) を使用して、インターフェースに割り当てられていない IP アドレスの着信パケットをリッスンし、デーモン (Xinetd など) を起動することは可能ですか?

私の Linux マシンはデフォルトの GW であり、すべてのパケットはそこに送信されます。インターフェイスにバインドされていない宛先 IP を持つ特定のパケットを認識し、それに反応します (デーモンを起動します)。

ありがとう!

答え1

はい、net.ipv4.ip_nonlocal_bind設定を有効にします:

echo "net.ipv4.ip_nonlocal_bind = 1" > /etc/sysctl.d/enable-nolocal-bind.conf"
sysctl net.ipv4.ip_nonlocal_bind=1

(後者は「今すぐ有効にする」で、最初の行はこれを永続化するためのものです)。これで、デーモンを任意の IP アドレスにバインドできます。

ただし、これは期待どおりに動作しない可能性があります。同じ LAN 内のコンピューターは、通信にデフォルトの gw を使用しません。パケットを直接送信します。たとえば、パケットを送信するシステムの MAC アドレスを見つけるために ARP クエリを実行します。応答がない場合、パケットをデフォルトの gw に送信する状態に戻りません。代わりにエラーが発生して失敗します。

答え2

Linuxでは、localタイプのルートはループバックであり、localhostに配信されます。あらゆるIP

必要なだけ大きなプレフィックスをルーティングします。 IPv6 を使用する場合は、この目的のために /64 全体を予約しておくとよいでしょう2001:db8:bdd2:c0e::/64。これをこのホスト (Linux ボックス) にルーティングし、Linux ボックスでローカルに送信します。

目的のポートをリッスンするように xinetd を設定します。

最終結果として、そのネット上の任意の IP (たとえば ) が2001:db8:bdd2:c0e::138このボックスで終了し、サーバー プログラムが起動します。

関連情報