Я пытаюсь настроить переадресацию портов в Linux-сервере на веб-сервер IIS во внутренней сети. Веб-сервер находится на Windows 2003 Server.
В моем Linux-боксе есть:
Мой веб-сервер находится на интерфейсе eth2 (192.168.0.6)
Я делаю переадресацию порта для порта 80 безрезультатно. Я использую тот же набор правил для перенаправления на другой веб-сервер, и он работает.
Веб-приложение доступно во внутренней сети, но не для внешних пользователей.
iptables -t nat -A PREROUTING -p tcp -i eth0 -d $PUBLIC_IP --dport 80 -j DNAT --to 192.168.0.6:80
iptables -A FORWARD -p tcp -i eth0 -o eth2 -d 192.168.0.6 --dport 80 -m state --state NEW -j ACCEPT
iptables -A FORWARD -t filter -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -t filter -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Любые идеи?
Спасибо всем за ответы. Проблема была обнаружена в конфигурации сети на сервере IIS. По какой-то причине шлюз по умолчанию не был настроен ... ну, Лисон узнал, не верьте тому, что вам говорят другие.
Правила, которые я использовал изначально, работают.
Мне всегда везло с IIS и iptables, используя следующий скрипт:
$ IPTABLES -P INPUT DROP $ IPTABLES -P OUTPUT DROP $ IPTABLES -P FORWARD DROP
$ IPTABLES -t nat -A PREROUTING -j DNAT -p tcp -d $ EXT_IP --dport $ WWW_PORT --to-destination $ WWW_IP $ IPTABLES -t nat -A POSTROUTING -o $ EXT_IFACE -j MASQUERADE
$ IPTABLES -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT $ IPTABLES -A INPUT -p all -i $ LO_IFACE -j ACCEPT $ IPTABLES -A INPUT -p all -s $ LO_IP -j ACCEPT
$ IPTABLES -A OUTPUT -m состояние --state УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ
$ IPTABLES -A FORWARD -m состояние! --state NEW -j DROP $ IPTABLES -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT $ IPTABLES -A FORWARD -p tcp -i $ EXT_IFACE -s $ ANY -d $ WWW_IP --dport $ WWW_PORT - j ПРИНЯТЬ
$ IPTABLES -A FORWARD -p all -i $ INT_IFACE -j ACCEPT
Я не думаю, что вам нужно использовать MASQUERADE. Попробуйте вместо этого использовать SNAT.
возможно, это не соответствует вашей модели безопасности, но вы можете изучить возможность установки apache и использования его прокси-модуля для маршрутизации трафика на ваш веб-сервер IIS. Кроме того, вы можете настроить его для фильтрации всех URL-адресов, кроме строго определенных вами, что сделает вашу установку IIS более безопасной.
Файл конфигурации Apache:
<Proxy *>
# deny most all requests
Order deny,allow
# allow from your internal network
Allow from 192.168.x.x
</Proxy>
ProxyPass /yoursite http://internal_site/yoursite