
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
このボックスで終了し、サーバー プログラムが起動します。