У меня есть сервер IIS с несколькими веб-сайтами, каждый со своим IP-адресом. Он отлично работает для маршрутизации входящего трафика на нужный сайт. Однако исходящий трафик, похоже, исходит с IP-адреса физического компьютера, а не с отдельных сайтов. Они должны выглядеть для внешнего мира как отдельные IP-адреса, потому что служба, с которой они общаются, различается только по IP-адресу.
Может, кто-то настраивал для этого NAT сервер? Любые идеи? Спасибо!
Я не думаю, что вы получите эту функциональность только с помощью IIS. Вы можете установить какой-то интерфейсный NAT-бокс (скажем, Linux-машину с iptables), запускать различные сайты на разных TCP-портах в IIS-боксе и выполнять NAT для разных IP-адресов на Linux-машине в качестве быстрого и-грязное решение. Однако IIS и Windows не будут делать то, что вы хотите.
Правила iptables для выполнения того, что вы ищете, были бы довольно простыми. NAT маршрутизатора Cisco и множество других встроенных реализаций NAT тоже могут это сделать.
Когда вы общаетесь, на каком вы уровне? Если вы находитесь на уровне TCP, вы можете настроить используемый интерфейс.
Это зависит от того, какие исходящие запросы вы делаете. Если средство, которое вы используете для выполнения запросов, поддерживает его, вы можете попросить его привязать к определенному адресу вместо адреса по умолчанию.
Я почти уверен, что вы не можете сделать это с помощью обычных методов IIS (например, с помощью библиотеки WinHTTP).
В других инструментах / библиотеках найдите параметр "адрес привязки", например, взятый на странице руководства wget:
--bind-address=ADDRESS
When making client TCP/IP connections, bind to ADDRESS on the local
machine. ADDRESS may be specified as a hostname or IP address. This
option can be useful if your machine is bound to multiple IPs.
Убедитесь, что ваши дополнительные IP-адреса не просто перенаправляются на один IP-адрес, прежде чем он попадет к вам. Вы можете сделать это, подключившись к той же VLAN, что и сервер, и выбрав вторичный IP-адрес.
В IIS это может показаться разборчивым, но веб-сайты не передают исходящие сообщения; приложения, размещенные в контейнере веб-сайта, делают.
Запрограммируйте свое приложение на использование определенного IP-адреса, и это произойдет. IIS не предоставляет напрямую API исходящей связи, поэтому вам это не поможет.