私はすべてのインターフェイス(ソケットは0.0.0.0にバインドする必要があります)上のローカルアプリケーションからの接続を受け入れる小さなソケットサーバープロキシアプリケーションを作成する必要があります。すべてのインターフェイスでローカルクライアントからソケットを受け取ります。 rejcctリモートクライアント
これを達成する方法はわかりません(127.0.0.1へのバインディングを防止する追加要件があります)。
次ず、この最初の試み:s.src_addrがある(場合
バインド(0.0.0.0) ... S =() を受け入れる... //リモート接続 を拒否します )(クローズlocal_interfaces)に... は//ローカルconenctionで正常に進まない
この実装は、リモートアプリケーションへの副作用を持っている - 彼らは近い/受け入れ組み合わせを参照してください。このシステムは、リモート・アプリケーションは、「何もない」ことを認識するように動作するために必要とされています - > SYN < --RST/ACK
を私はSO_CONDITIONAL_ACCEPTののWinsock APIの組み合わせを使用し、この行動とWSAAcceptコールバックを(実装するにはLPCONDITIONPROC lpfnCondition)を使用して、元のインターフェイスに基づいて接続を受け入れるか拒否するか(つまり、ローカルアドレスの1つであるかどうか)を指定します。
これは、望ましい機能的動作をもたらします。リモートアプリケーションは必要なWSAECONNREFUSEDエラーを受け取ります。
SO_CONDITIONAL_ACCEPTには特定の副作用(MSDNを参照)がありますが、もっと重要なことに、LINUXの実装が必要であり、後でこれを他のUNIXに移植する必要があります。
私の最優先事項は、LINUXソリューションです。ソケットAPIを超えても構わないことに注意してください。
まあ、私は展開の指示にファイアウォールを指定する必要はありません。私はエンタープライズ環境のクライアントマシンでこれを実行する必要があり、そのようなアプローチを強制することはできません。 –