我正在设置 Shorewall (4.4.26.1),并花了大半个下午的时间试图找出两个 LAN 段之间的路由。是时候寻求帮助了。
((INTERNET))
|
|
[shorewall]
| |
| |
(LAN1) (LAN2)
我有三个网卡:WAN(Internet)、LAN1 和 LAN2。WAN-to-LAN 通过 NAT 入站,通过 DNAT 出站(在 masq 中设置)工作。LAN2 不应(目前也不应)访问 Internet,但应该可以从 LAN1 访问。我目前能够从防火墙访问 LAN2,但不能从 LAN1 中的服务器访问(这就是问题所在)。必要的规则已到位,但显然路由不起作用(当我禁用防火墙规则时,我在从 LAN1 中的服务器进行 SSH 连接时立即收到“连接被拒绝”的提示;当启用规则时,SSH 只是挂起,跟踪路由不会超出防火墙)。LAN1 位于 172.0.0.0 地址空间,LAN2 位于 10.0.0.0 地址空间。
我目前有:
$LAN2_IF 10.0.0.0/24
..在 masq 中,但那不起作用($LAN2_IF 解析为 eth2,即 LAN2 接口)。
我的问题是:用于在连接到单独 NIC 的两个不同地址的 LAN 段之间转发流量的最简单的 Shorewall 配置是什么?指向文档或其他参考资料的指针会有所帮助,一个简单的配置示例会更好。我一直在仔细阅读有关路由的 Shorewall 文档,但尚未找到匹配的描述(例如,我宁愿不必桥接 LAN 接口,因为它们需要保持分离:LAN2 应该不是可以访问 Internet 或 LAN1)。
谢谢您的任何建议!
答案1
看起来您遇到了路由问题,这与 Shorewall 无关。请先禁用 Shorewall 并正确设置路由。
网关应在每个 LAN 段上都有一个 IP 地址,并且该接口上应有一个 LAN 范围的路由。例如:
$ ip -one addr
2: eth0 inet 172.16.0.1/24
3: eth1 inet 10.0.0.1/24
$ ip route
172.16.0.0/24 dev eth0
10.0.0.0/24 dev eth1
LAN1 和 LAN2 中的客户端应将网关上的相应 IP 设置为其默认网关(LAN1 中的客户端为 172.16.0.1,LAN2 中的客户端为 10.0.0.1)。检查两个 LAN 中的客户端是否都可以 ping 通两个都网关上的 IP。然后尝试在不同的 LAN 中的客户端之间进行 ping 操作。
一旦路由工作正常,您就可以设置 Shorewall。您需要将两个 LAN 放在不同的区域中(例如lan1
包含 eth0 和lan2
包含 eth1)。然后配置适当的策略:
fw all ACCEPT
lan1 all ACCEPT
lan2 fw ACCEPT
lan2 lan1 ACCEPT
all all REJECT
LAN1 和 LAN2 之间不应存在任何伪装。
答案2
我意识到这不是 Ville 的问题,但三接口示例配置(包含在 Shorewall 发行版中)可能是您问题的典型答案。它将 lan 和 dmz 设置为区域名称,但您可以将其设置为您想要的任何名称(在本例中为 lan 和 lan2)。