我试图了解 VLAN 如何工作以及如何在连接到它的交换机和 Linux 机箱中配置 VLAN。
基本上,我从理论上了解了交换机如何处理 VLAN 和中继。不过,我在几个方面感到困惑。
为了便于说明,假设我有以下场景:
- 路由器 R 带有 DHCP 服务器,运行在 eth0 上,IP 为 1.1.1.1
- 交换机 S,有 A 至 D 端口,共 4 个
- S:A 连接到 R:eth0
- 有三个用户连接到S:BD,分别是U1,U2,U3
- U1属于VLAN1,IP:2.2.2.2/24
- U2属于VLAN2,IP:3.3.3.3/24
- U3 属于 VLAN1 和 2,IP:2.2.2.3/24 和 3.3.3.4/24
- 假设路由器和所有用户都是类 Debian 系统
问题是:
- 如何配置路由器,使两个 VLAN 都可以访问它并可以相互路由数据包?
- 我该如何配置三个用户?特别是对于 User3,因为它属于两个 VLAN。(我是否应该简单地将多个 IP 地址分配给同一个物理接口?)
- 如果所有 IP 都不是静态的而应该通过 DHCP 分配,并且我希望 VLAN1 范围从 2.2.2.2-10,VLAN2 范围从 3.3.3.3-11,我应该如何配置路由器中运行的 DHCP 服务器?
- 单个 if 上的 VLAN、虚拟接口和多个 IP 地址有什么区别?
我将非常感激您的回答或其他材料的指点。
提前致谢!
答案1
1. How do I configure the router that both VLANs can have access to it and can route packets to each other?
这取决于您的特定路由器。通常用来描述这种情况的术语是“单根路由器”。如果不知道路由器的具体品牌/型号,我们无法告诉您如何配置它。
2. How do I configure three Users? Especially for User3 since it belongs to both VLAN. (Should I simply assign multiple IP address to the same physical interface?)
您没有为 VLAN 配置用户。您将交换机端口配置为特定 VLAN 的成员。交换机不知道哪个用户是哪个用户。它只知道哪些端口是哪个 VLAN 的成员。交换机端口不能是多个 VLAN 的成员。交换机端口可以是中继端口,可以承载多个 VLAN 的流量,但不能是多个 VLAN 的成员。因此,对于 User3,您需要将 User3 的计算机连接到的端口配置为中继端口,以便承载 VLAN1 和 VLAN2 的流量。User3 的计算机 NIC 必须支持 VLAN 标记才能正常工作。
3. If all IPs are not static and should be assigned via DHCP, and I want VLAN1 be ranging from 2.2.2.2-10, and VLAN2 be 3.3.3.3-11, how should I configure the DHCP server running in the router?
您将为每个 VLAN 的 IP 范围创建一个 DHCP 作用域。然后,您通常需要在路由器上配置 DHCP 中继代理(DHCP 帮助程序或 ip-helper),但对于“单板路由器”,则无需这样做。
4. What's the difference among VLAN, virtual interface and multiple IP addr on single if?
询问它们的区别是什么就是要求对这三者进行比较,但它们是完全不同的东西,执行不同的功能,所以你不会比较它们。你想要的是每个的定义和每个的用例示例。谷歌是开始研究的好地方。
答案2
顾名思义,VLAN 是一种虚拟网络。它与单独的物理网络各方面完全相同,只是它覆盖在另一个物理网络之上。
VLAN 具有自己的网络接口,并且可以与单独的物理接口完全相同地处理。
在 Linux 中配置 VLAN 接口非常简单。这里有一份很好的分步指南在网络城市。
总结:创建一个别名接口(例如 eth0.1)并用您的 VLAN 的 ID 对其进行“标记”,并为其分配您的 VLAN 的 IP 地址。对计算机想要通信的每个 VLAN 执行此操作。
一旦配置了 VLAN 接口,并且正确配置了 DHCP 服务器等在其上监听的内容,那么接下来就“仅仅”是设置路由的问题了。
只要您打开了 IP 转发,并且您的 VLAN 集中器是您的默认路由器(两者可能都是正确的),那么它就应该可以正常工作。
如果你想继续进行更高级的路由,我建议斑驴作为路由引擎。它支持所有主要的路由协议,并且几乎与使用思科路由器,因此技能在很大程度上是可转移的。
答案3
因此你基本上具有以下物理设置:
R -------(Port A)(VLANx)|
|
U1 ------(Port B)(VLAN1)|
|-S
U2 ------(Port C)(VLAN2)|
|
U3 ----(Port D)(VLAN1&2)|
首先,VLAN 是虚拟第 2 层网络(将其视为单独的以太网网络),您可以通过各种方式将它们互连,但它仍然只是第 2 层(以太网)
它是一个单一的以太网广播域。源自一个 VLAN 的内容将保留在其中(ARP、DHCP 请求等)它比同一 LAN/VLAN 上的多个 IP 网络更易于使用/故障排除,因为一个 VLAN 上的 IP 流量不会在另一个 VLAN 上找到
如果您希望各种第 3 层网络 (IP) 能够相互通信,则需要进行路由。这可以通过路由器和/或第 3 层交换机(具有路由功能的交换机)来完成。如果您的交换机不是 L3 交换机,那么您必须使用路由器进行路由,使用多个接口(每个 VLAN 一个)
第二。如果您希望在单个路由器/交换机/服务器端口上使用多个 VLAN,则必须使用标记(又称 802.1Q),它将向以太网帧添加标头以标识它们是哪个 VLAN(以及一些其他内容,如 CoS 优先级等)。
最后,根据您的设置,您的路由器不是 VLAN 的一部分,这意味着默认情况下它应该是交换机上的 VLAN 1。这意味着您在同一个 VLAN 上有 1.1.1.0/24 和 2.2.2.0/24。不一定坏的但仍然不是最佳选择
我假设你没有支持 L3 的交换机
R -(802.1Q)-------(Port A)(802.1Q)|
|
U1 ---------------(Port B)(VLAN20)|
|-S
U2 ---------------(Port C)(VLAN30)|
|
U3 -(802.1Q)------(Port D)(802.1Q)|
我使用过 VLAN 10/20/30/40...这始终是一个好习惯不是使用 VLAN 1,因为它通常是交换机中的默认(未配置)VLAN。
R 在每个 VLAN 上配置 802.1Q 一个 IP 接口 *VLAN 10 1.1.1.0/24 *VLAN 20 2.2.2.0/24 *VLAN 30 3.3.3.0/24 *VLAN 40 4.4.4.0/24,等等...
它还为所需的任何接口配置了多个池的 DHCP 服务器(例如,在谷歌上搜索“debian dhcp multiple subnets”,因为它不是一个一行的解释
交换机端口 A 和 D 配置有 802.1Q 标记,端口 A 允许所有 VLAN,端口 D 至少允许 VLAN 30 和 40
U3 已配置 802.1Q 标记
如果您拥有支持 L3 的交换机,那么您可以执行以下操作:
R ----------------(Port A)(VLAN10)|
|
U1 ---------------(Port B)(VLAN20)|
|-S
U2 ---------------(Port C)(VLAN30)|
|
U3 -(802.1Q)------(Port D)(802.1Q)|
在 R 的情况下,U1 和 U2 已正常配置,U3(以及面向它的交换机端口)已配置 802.1Q 标记,并且交换机上还有其他接口(2.2.2.0/24、3.3.3.0/24 和 4.4.4.0/24)。
请注意,除 VLAN10 之外的任何其他 VLAN 都不会启用 DHCP(DHCP 请求不会跨越路由边界,除非在路由设备上配置了 DHCP 转发,并且服务器配置为服务多个子网)。