Вот в чем проблема. У меня на DEV-машине два сетевых подключения.
LAN - Подключается к сети здания и Интернету. IP назначается DHCP и имеет вид 192.168.30.XX.
ЛОКАЛЬНЫЙ - Подключается к коммутатору, на котором есть одна тестовая машина. IP-адрес 192.168.25.100. Тестовая машина находится по адресу 192.168.25.2.
Сейчас я удаленно перезагружаю тестовую машину, а затем отправляю команду ping, чтобы узнать, загрузится ли она снова.
Проблема в том, что вчера кто-то (вероятно, случайно) добавил в локальную сеть здания машину с IP-адресом 192.168.25.2, так что теперь, когда моя тестовая машина перезагружается и я отправляю на нее команду ping, я получаю ответ от этой удаленной машины в локальной сети. Мое программное обеспечение думает, что тестовая машина снова включена, и пытается войти в систему. Это, очевидно, не удается, потому что это не тестовая машина отвечает и она все еще находится в процессе перезагрузки.
Мой вопрос в том, как мне:
- запретить всем запросам на 192.168.25.2 выходить через локальную сеть, или
- заставить все запросы на 192.168.25.2 выходить через LOCAL
ОБНОВЛЯТЬ: Я думаю, что наилучшим решением будет изменить таблицу маршрутизации так, чтобы пакеты на 192.168.25.2 блокировались на одном интерфейсе и статически маршрутизировались на другом.
Дело в том, что я могу добавить статический маршрут, используя это:
route add 192.168.25.100 mask 255.255.255.255 192.168.25.2
Однако Windows по-прежнему будет автоматически переходить обратно в локальную сеть и пытаться выполнить ping туда, если статический маршрут даст сбой.
Есть ли способ заблокировать трафик на определенный интерфейс или шлюз в таблице маршрутизации?
решение1
Не знаю, почему я не подумал об этом раньше, но самое простое решение — просто создать пользовательское правило в брандмауэре Windows, чтобы блокировать соединения с/на указанный IP-адрес, на определенном интерфейсе или типе соединения.
ОБНОВЛЕНИЕ: На самом деле это тоже не решает проблему. Это просто приводит к тому, что пинги возвращаются как "Общий сбой", а не как тайм-аут или недоступность назначения. "Общий сбой" вызывает исключение в C#, и мне пришлось бы написать обработчик, чтобы его перехватить.
Опять же, я МОГ бы написать обработчик исключений, но это не очень элегантно.
решение2
Если кто-то «добавил машину» в сеть и дал ей статический IP-адрес вне области действия DHCP, то, вероятно, у него есть и другие проблемы... Невозможность подключиться к принтерам/другим машинам/другие странные проблемы из-за нахождения в другой подсети. Выясните, кто этот человек, и правильно настройте его ПК (т. е. на DHCP!).
Проверьте сервер, что область DHCP установлена правильно, затем посмотрите, есть ли аренда для «мошеннического» ПК. Если найдете, истечет срок ее действия. Затем добавьте исключения DHCP для ПК, которые вы хотите использовать в другой подсети, если их еще нет. Может быть хорошей идеей очистить DNS на сервере после выполнения любого из этих действий.
ЕСЛИ вы не являетесь администратором сети, то привлеките их к этому процессу — люди не должны настраивать компьютеры в вашей сети, если они не знают, как это сделать!
Как вы уже поняли, лучший способ заблокировать IP-адрес — добавить его в брандмауэр, вы также можете добавить исключения в брандмауэр...