問題はここにあります。私の DEV マシンには 2 つのネットワーク接続があります。
LAN - 建物のネットワークとインターネットに接続します。IP は DHCP によって割り当てられ、192.168.30.XX です。
ローカル - 1 台のテスト マシンがあるスイッチに接続します。IP は 192.168.25.100 です。テスト マシンは 192.168.25.2 にあります。
現在、TEST マシンをリモートで再起動し、ping を実行して、マシンが復旧したかどうかを確認しています。
問題は、昨日誰かが (おそらく誤って) 建物の LAN に IP 192.168.25.2 を持つマシンを追加したことです。そのため、TEST マシンを再起動して ping を実行すると、LAN 上のこのリモート マシンから応答が返ってきて、ソフトウェアは TEST マシンが復旧したと判断し、ログインしようとします。これは明らかに失敗します。応答しているのは TEST マシンではなく、まだ再起動中だからです。
私の質問は、どうすればいいのかということです:
- 192.168.25.2へのすべてのリクエストがLAN経由で送信されないようにする、または
- 192.168.25.2 へのすべてのリクエストを LOCAL 経由で送信するように強制する
アップデート: 最善の解決策は、ルーティング テーブルを変更して、192.168.25.2 へのパケットが 1 つのインターフェイス上でブロックされ、他のインターフェイス上で静的にルーティングされるようにすることだと思います。
問題は、これを使用して静的ルートを追加できることです。
route add 192.168.25.100 mask 255.255.255.255 192.168.25.2
ただし、静的ルートが失敗した場合、Windows は自動的に LAN にフェールバックし、そこで ping を試みます。
ルーティング テーブル内の特定のインターフェイスまたはゲートウェイへのトラフィックをブロックする方法はありますか?
答え1
なぜもっと早く思いつかなかったのか分かりませんが、最も簡単な解決策は、Windows ファイアウォール内にカスタム ルールを作成し、特定のインターフェイスまたは接続タイプで指定された IP との間の接続をブロックすることです。
更新: 問題が実際に解決されるわけではありません。これにより、ping がタイムアウトまたは宛先に到達できないのではなく、「一般的なエラー」として返されるだけです。「一般的なエラー」は C# で例外を引き起こし、それをキャッチするためのハンドラーを作成する必要があります。
繰り返しますが、例外ハンドラを記述することもできますが、あまりエレガントではありません。
答え2
誰かがネットワークに「マシンを追加」し、DHCP スコープ外で静的 IP アドレスを割り当てた場合は、おそらく他の問題も発生しています... 異なるサブネット上にあるために、プリンターや他のマシンに接続できない、その他の奇妙な問題などです。この人物が誰であるかを調べ、その人の PC を正しく (つまり、DHCP で) 設定してください。
サーバーで DHCP スコープが正しく設定されていることを確認し、次に「不正な」 PC のリースがあるかどうかを確認します。見つかった場合は期限切れにします。次に、別のサブネットで使用する PC の DHCP 例外を追加します (まだ存在しない場合)。これらのいずれかを実行した後は、サーバーの DNS をフラッシュすることをお勧めします。
あなたがネットワーク管理者でない場合は、ネットワーク管理者を関与させてください。やり方がわからない人は、ネットワーク上で PC をセットアップすべきではありません。
すでにお分かりのとおり、IP アドレスをブロックする最善の方法は、それをファイアウォールに追加することです。また、ファイアウォールに例外を追加することもできます...