Добрый день.
Прошу объяснить принцип работы маршрутизации в данном случае. В конфигурации ниже все работает, но я хочу понять причину, почему оно вообще работает.
Есть ПК на Windows (он же сервер видеонаблюдения). В сервер установлено две сетевых карты.
Была поставлена следующая задача:
Выдать на этот сервер два IP-адреса из подсетей 10.10.10.0/24 и 10.10.118.0/24. Пользователи должны иметь возможность ходить на сервер по двум айпишникам из любых подсетей организации (допустим из 10.10.0.0/16)
В итоге, на сервер были прописаны следующие IP:
10.10.10.26
10.10.118.2
А также указаны соответствующие шлюзы по умолчанию 10.10.10.1 и 10.10.118.1 (без них не работает маршрутизация в 10.10.0.0/16)
Хоть винда и ругнулась при добавлении второго шлюза - все нормально заработало.
Пинговать можно как по первому айпишнику, так и по второму.
На сервере получилась следующая таблица маршрутизации:
Проблема в том, что я не понимаю почему оно вообще работает. Как сервер работает с маршрутизацией в данном случае, и каким образом выбирается нужный интерфейс для отправки?
Мои рассуждения следующие:
1. Допустим пользователь с ip адресом 10.10.14.112 пингует сервер по 10.10.10.26.
2. Пакет приходит на сервер
3. Серверу необходимо ответить на 10.10.14.112. Он лезет в свою таблицу маршрутизации и видит, что для ответа необходимо отправлять пакет на шлюз 10.10.118.1 (так как у него ниже метрика) с интерфейса 10.10.118.2. Однако, каким-то "волшебным" способом, сервер выбирает правильный маршрут (нужный интерфейс 10.10.10.26) и нормально отвечает.
Получается, что винда каким-то образом запоминает интерфейс на который пришел пакет и уже потом руководствуясь таблицей маршрутизации пытается отвечать?
По моей логике пинг должен быть возможен только по ip 10.10.118.2.