На сервере Windows 2016 мне нужно установить собственный маршрут, чтобы соединения с определенным IP-адресом назначения всегда использовали определенный IP-адрес источника. Но пока route add
позволяет мне указать интерфейс, но не позволяет указать исходный IP.
Сервер имеет один сетевой интерфейс с несколькими IP-адресами, например обе 10.0.0.10
и 10.0.0.20
привязаны к этому сетевому интерфейсу, и к серверу можно получить доступ по IP:
c:>ipconfig
Ethernet adapter myAdapter:
IPv4 Address. . . . . : 10.0.0.10
Subnet Mask . . . . . : 255.255.255.0
IPv4 Address. . . . . : 10.0.0.20
Subnet Mask . . . . . : 255.255.255.0
Default Gateway . . . : 10.0.0.1
По умолчанию все исходящие соединения используют 10.0.0.10
как исходный IP.
Мне нужен маршрут, чтобы все подключения к одному конкретному удаленному адресу (10.123.123.123
) всегда поступают со второго локального ip (10.0.0.20
), потому что устройство на 10.123.123.123
настроен на прием подключений только от 10.0.0.20
не из 10.0.0.10
:
c:>telnet 10.123.123.123 111
This tcp connection should use 10.0.0.20 as the origin IP
Я могу добавить маршрут с помощью
route ADD 10.123.123.123 MASK 255.255.255.255 10.0.0.1 METRIC 1 IF 1
Однако это не меняет исходный IP-адрес. 10.0.0.20
. Исходящие соединения по-прежнему исходят с IP 10.0.0.10
.
Как я могу указать, какой IP-адрес должен использовать маршрут, если оба IP-адреса имеют одинаковый номер интерфейса?
Только подключения к IP 10.123.123.123
должны быть затронуты этим маршрутом.
Все остальные соединения должны продолжать использовать исходный IP 10.0.0.10
.
Поскольку это сложная устаревшая система, я ищу решение с минимальным риском влияния на другие соединения и без изменений существующего программного обеспечения.
Поэтому я бы предпочел не изменять глобальные метрики для этого интерфейса и не разделять интерфейсы, если это вообще возможно. Конкретный маршрут, влияющий только на ip 10.123.123.123
было бы идеально.