假设我有一个很小的networking,有很多个VLAN,如下所示:
VLAN1 10.1.1.0/24
VLAN2 10.1.2.0/24
VLAN3 10.1.3.0/24
VLAN路由由核心交换机负责,交换机不执行基于策略的路由(Dell PowerConnect 6224F),因此它将仅为所有其他stream量超出上述VLAN之外的其他stream量采用默认路由。 (即0.0.0.0/0)。
现在假设我有两个互联网连接,每个连接在VLAN1上都有一个NAT DSL调制解调器(比如10.1.1.16和10.1.1.17),我希望VLAN2上的设备使用一个互联网连接,VLAN3上的设备使用另一个,我想使用Linux的盒子来实现这一点。
假设我configuration了一个Linux机箱(10.1.1.8),并将核心交换机上的默认网关configuration为指向10.1.1.8,那么是否可以在Linux机器上configurationIPTables来执行我所需要的操作?
大多数如何设置基于Linux的路由器的操作指南有两个两个networking接口作为要求,但我不认为这是必要的,因为这个Linux机器将简单地与DSL调制解调器位于同一个VLAN中。 (加上我目前没有任何备用的网卡放在我有的服务器上),所以我的问题是,(假设有可能)任何人都可以提供一些指导来创build一些IP表规则来处理这个问题吗?
我也可能在将来像所有的HTTP连接都被透明地代理,理想的情况是通过一个共享的squid实例,但是仍然将请求路由到合适的DSL连接。
编辑:
我不需要在VLAN之间进行路由,因为核心交换机已经很好了。 我可能没有得到正确的术语,但是如果我将核心交换机上的0.0.0.0/0的默认路由configuration为10.1.1.8,我可以configurationLinux机器将数据包redirect到正确的DSL网关,具体取决于包的来源?
我试图实现的一个例子…
PC上的VLAN3(10.1.3.123)将数据包发送到1.2.3.4。 PC上的默认网关是10.1.3.1(即VLAN3上的路由接口),然后交换机将此数据包通过10.1.1.1路由到10.1.1.8(交换机configuration为使用此IP作为0.0.0.0的下一跳/ 0)。 然后Linux机器通过DSL调制解调器10.1.1.17路由/redirect该数据包,因为源IP在VLAN 3(10.1.3.0/24)内。 如果数据包来自10.1.2.0/24,则Linux机器将通过10.1.1.16路由/redirect
VLAN 1 (10.1.1.0/24) 10.1.1.16 (DSL1) ------+ | 10.1.1.17 (DSL2) ------+ | 10.1.1.8 (Linux) ------+ | +-------------+ VLAN 2 -------| Core Switch |------- VLAN 3 (10.1.2.0/24) +-------------+ (10.1.2.0/24)
进一步编辑:
我想我没有很好地解释我想在这里实现的目标,但请在这里忍受一下,因为我不是networking专家(以防万一你还没有发现这个!)。
我不想在linux上创build多个接口,因为我不希望它在VLAN之间做任何路由,我只想让这个盒子坐在其中一个VLAN(单个接口)上并转发(或路由?)数据包通过DSL1或DSL2,这取决于数据包的来源。 如果10.1.1.8是我们networking上的默认路由0.0.0.0/0,那么可以这样做吗?
你提出的build议当然是可能的,事实上,一个非常常见的networkingconfiguration是让第三层交换机完成大部分内部路由,并提供一些基本的访问控制,然后将更复杂的stream量卸载到边缘/内核。
您的Linux边缘路由器需要知道交换机后面的所有子网 – 您可以使用静态路由来完成此操作,例如:
route add -net 10.1.1.0/16 gw <switch IP>
或者,Dell交换机( 来自google )支持RIP和OSPF,所以如果您使用Quagga或类似的工具来接收广告,您可以自动将其路由通告给Linux。
您的客户端只需要configuration其默认网关(VLAN上的交换机接口),并在交换机上configuration适当的ACL,以允许其stream量进入边缘。
不幸的是,我没有在Linux上完成PBR,所以不能给你任何魔法规则,只能真正指向谷歌发现的文章 – 看起来相关。 不要太多地挂在多个接口上,通过创build别名( ifconfig eth0:25 <ipaddr> )或VLAN( ifconfig eth0.25 <ipaddr> )很容易在Linux上将一个接口变为多个接口。
我想你可以为你的网卡创build额外的networking地址 – 每个VLAN一个,然后使用route来创build静态路由。
对于大多数用途来说,Linux机箱上的每个vlan接口都像“真实”的接口一样工作,所以当你阅读教程时,只需用“eth0.123”和“eth0.456”将“eth0”replace成“eth0”。
我build议你禁用交换机中的所有路由select。 这似乎只会造成混乱和复杂性。
正如别人评论,我同意build议不要使用VLAN 1的“真正的交通”。 使用另一个VLAN ID(有很多…)更清楚地表明端口已被明确和有意地configuration。