我有 rackspace 帐户并希望进行以下设置:
防火墙/网关
eth0-公共 IP(56.XXX)
eth1-私有IP(10.XXX)
Ubuntu 10.10。接受来自互联网的连接并将端口 80 路由到节点 1(10.xxx)
节点1
eth0-已禁用公共 IP(56.XXX)
eth1-私有IP(10.XXX)
Ubuntu 10.10。此服务器是 Web 服务器。
问题:
我反复搜索如何实现这一点,但不确定需要采取哪些步骤。Rackspace 将这些 IP 提供给我,我无法控制(此时)这些节点的 IP 是什么,但它们在 eth0 上都有一个公共 IP,在 eth1 上都有一个私有 IP。
如何成功转发来自防火墙/网关到节点1?
编辑: 这是我的 iptables 设置
# Generated by iptables-save v1.4.4 on Fri Jun 17 18:09:39 2011
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [1:452]
:POSTROUTING ACCEPT [1:452]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.182.33.191:80
COMMIT
# Completed on Fri Jun 17 18:09:39 2011
# Generated by iptables-save v1.4.4 on Fri Jun 17 18:09:39 2011
*filter
:INPUT ACCEPT [154:11452]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [81:9672]
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
COMMIT
# Completed on Fri Jun 17 18:09:39 2011
答案1
iptables
您可以在防火墙主机上使用一些规则来执行此操作。我假设您已经使用 iptables,因为您将其称为“防火墙”主机:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 10.x.x.x:80
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -i eth0 -j ACCEPT
第一条规则为到达 eth0 端口 80 的数据包设置端口转发。它将数据包转发到 10.xxx:80(在此处输入您的 node1 IP)。第二条规则允许在 eth0 端口 80 上进行新的传入连接。当然,您需要这条规则才能真正允许数据包到达防火墙。
不要忘记保存 iptables 配置并在系统启动时加载它。我使用这个包iptables-persistant
来实现这个目的,但 Ubuntu 没有标准的方法来保存和加载防火墙,这有点烦人。