这是我的设置:
所有节点均运行 Ubuntu 10.04 LTS
我有一台机器,节点1,充当专用网络的代理服务器。它将端口 80 和 443 上的所有传入连接转发到我的网络服务器,节点2,其私有IP为10.182.33.141
,没有公有IP。
我还有其他几个节点:节点3是数据库服务器,节点4是memcached服务器等等,它们都有私有IP,没有公网IP。
我想节点1充当防火墙,同时仍将端口 80 和 443 转发至节点2。
配置的最佳方法是什么节点1开始充当防火墙?有哪些方法可以测试防火墙的安全性?
非常感谢任何指导!如果之前有人问过这个问题,我很抱歉,我确实搜索过,但没有找到我想要的东西。
参考:(iptables -t nat -L)
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere node1 tcp dpt:www to:10.182.33.141:80
DNAT tcp -- anywhere node1 tcp dpt:https to:10.182.33.141:443
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
iptables -L 当前是空的。
答案1
几个月前,我曾尝试建立类似的设置。最终我放弃了这个想法,并恢复了以前使用的旧防火墙,这种防火墙不太灵活。我可以给你一些建议,但我无法轻易回答这么广泛的问题。
- 了解伪装、源 NAT 和目标 NAT 之间的区别。
- 了解每个 Netfilter 表的用途以及每个表中包含哪些链
- 允许所有传出流量(如果您信任您的用户)
- 使用 contrak 或 state 模块允许现有连接的数据包继续
- DNAT 将传入流量发送到您想要向世界公开的服务器/端口
- 确保您的防火墙(节点1)允许数据包转发:
echo >/proc/sys/net/ipv4/ip_forward 1
这就是我停下来的地方;我无法让这个盒子与我们网络上的另一台机器共存,这就是为什么我不能说我有一个解决方案。