用Shorewall路由到二级局域网

我正在设置Shorewall(4.4.26.1),并且一直试图弄清楚下午大部分时间在两个LAN段之间的路由。 现在是时候寻求帮助了。

((INTERNET)) | | [shorewall] | | | | (LAN1) (LAN2) 

我有三个NIC:WAN(Internet),LAN1和LAN2。 WAN到LAN通过NAT进行入站,通过DNAT进行出站(在masq中进行设置)。 LAN2不应该(现在也不能)访问互联网,但它应该可以从LAN1访问。 我目前能够从防火墙到LAN2,但不能从LAN1的服务器(这是问题)。 必要的规则已经到位,但显然路由不起作用(当我禁用防火墙规则时,在LAN1上的服务器上,SSH连接上立即出现“连接被拒绝”;当启用规则时,SSH挂起并且traceroute不会超越防火墙)。 LAN1位于172.0.0.0地址空间,LAN2位于10.0.0.0地址空间。

我目前有:

 $LAN2_IF 10.0.0.0/24 

..在masq中,但这是行不通的($ LAN2_IFparsing为eth2这是LAN2接口)。

我的问题是: 什么是最简单的Shorewallconfiguration转发两个不同地址连接到单独的NIC网段之间的stream量? 指向文档或其他参考的指针会有所帮助,但是一个简单的configuration示例会更好。 我一直在浏览有关Shorewall文档的路由,但还没有find匹配的描述(例如,我宁愿不必桥接LAN接口,因为它们需要保持分离:LAN2应该不能访问互联网或LAN1)。

感谢您的任何build议!

看起来你有一个路由问题,这与Shorewall没有任何关系。 禁用Shorewall并首先获取路由。

网关应在每个局域网段上都有一个IP地址,并在该接口上有一个局域网范围的路由。 例如:

 $ 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)。 检查两个局域网中的客户端是否可以ping通网关上的两个 IP。 然后尝试ping不同局域网中的客户端之间的ping。

一旦路由工作,您可以设置Shorewall。 您希望将两个LAN放在不同的区域(例如, lan1包含eth0, lan2包含eth1)。 然后configuration适当的策略:

 fw all ACCEPT lan1 all ACCEPT lan2 fw ACCEPT lan2 lan1 ACCEPT all all REJECT 

LAN1和LAN2之间不应有任何伪装。

我意识到这不是威乐的问题,但三界面示例configuration(包含在Shorewall发行版中)可能是您的问题的标准答案。 它将lan&dmz设置为区域名称,但是您可以将它们设置为任何您想要的名称(本例中为lan&lan2)。