如何通过运行 IP 表的 Linux 网关访问两个独立的 Web 服务器

如何通过运行 IP 表的 Linux 网关访问两个独立的 Web 服务器

我有两台 Ubuntu 12.04 服务器。服务器 1 使用 IP 表充当防火墙并托管代理服务器。服务器 2 托管 Web 服务器。

我有一个终止于服务器 1 上的 eth1 的外部 IP 地址。IPtables 成功将端口 443 和 80 从 eth1 转发到服务器 2 上的 eth 0。Web 服务器可供外部访问。

我已获得另一个外部 IP 地址,该地址也将终止于 eth1:1 - 我已经设置网络以接受该地址。我想在第二个 IP 地址 (eth1:1) 上接受端口 443 和 80 上的流量,并使用另一个内部 IP 地址将该流量转发到另一台 Web 服务器。

我不确定如何配置 IPtables 将来自 IP 地址 2:443 或 80 的流量转发到另一个 Web 服务器。

内部 IP 地址包括:

服务器 1 - 192.168.1.123 服务器 2 - 192.168.1.120

我已经配置了 eth1 和 eth1:1,并且可以通过两个 IP 地址访问现有的 Web 服务器。

答案1

在这里找到答案:

https://superuser.com/questions/400867/iptables-trouble-nat-with-ip-alias-virtual-interface-not-working

使用虚拟接口时只需使用选项 -d(目标),忽略选项 -i(接口)

而不是:iptables -t nat -A PREROUTING -i eth0 -d 25.25.25.26 -j DNAT --to-destination 172.16.2.1

使用:iptables -t nat -A PREROUTING -d 25.25.25.26 -j DNAT --to-destination


诀窍是在 PREROUTING 链中使用 -d 参数。因此,在本例中,我使用了 -d xxx.xx.xx.18,对于端口 443 - 将其定向到端口 4431。我设置了其他服务器的防火墙以接受 4431,并将 nginx 站点设置为在 4431 上接受 https。

-A PREROUTING -p tcp -m tcp -d xxx.xx.xx.17 --dport 80 -j DNAT --to-destination 191.168.1.120:80

-A PREROUTING -p tcp -m tcp -d xxx.xx.xx.17 --dport 443 -j DNAT --to-destination 191.168.1.120:443

-A PREROUTING -p tcp -m tcp -d xx.xx.xx.18 --dport 80 -j DNAT --to-destination 191.168.1.120:801

-A PREROUTING -p tcp -m tcp -d xxx.xx.xx.18 --dport 443 -j DNAT --to-destination 191.168.1.120:4431

相关内容