在 Linux 中将端口转发至 IIS

在 Linux 中将端口转发至 IIS

我正在尝试在 Linux 机器上设置端口转发到我内部网络上的 IIS Web 服务器。Web 服务器位于 Windows 2003 Server 上。

我的Linux机器上有:

  • eth0——互联网连接
  • eth1-内部子网(10.10.10.x)
  • eth2-第二个内部子网 (192.168.0.x) dhcp 接口

我的网络服务器位于 eth2 接口(192.168.0.6)

我正在对端口 80 进行端口转发,但没有成功。我使用同一套规则将端口转发到不同的 Web 服务器,并且成功了。

该 Web 应用程序可在内部网络上使用,但不可供外部用户使用。

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

有任何想法吗?

答案1

感谢大家的回答。问题出在 IIS 服务器的网络配置上。由于某种原因,默认网关未配置……哎呀,Leason 明白了,不要相信别人告诉你的话。

我最初使用的规则确实有效。

答案2

也许这不适合你的安全模型,但你可能想要考虑安装 apache 并使用它的代理模块将流量路由到你的 IIS Web 服务器。最重要的是,你可以将其配置为过滤掉除你严格定义的 URL 之外的所有 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

答案3

我认为您不需要使用 MASQUERADE。请尝试使用 SNAT。

答案4

我总是使用以下脚本来成功使用 IIS 和 iptables:

$IPTABLES -P 输入删除 $IPTABLES -P 输出删除 $IPTABLES -P 前向删除

$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 状态 --状态 ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -m state ! --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 ACCEPT

$IPTABLES -A FORWARD -p 全部 -i $INT_IFACE -j ACCEPT

相关内容