我是一家提供商。我的 IP4 用完了。没有更多可用的 IP4 分配。
但是,我为每位客户使用 4 个 IP,因为光纤网络交换机使用 VLAN 路由到客户。
例如,我怎样才能为 127 个不同的 VLAN 分别分配一个 /25 中的唯一 IP,以便每个 VLAN 都能路由到那里?
假设我的 IP 是 3.8.3.1/25。我该如何将 3.8.3.2 分配给 vlan 3001、将 3.8.3.3 分配给 vlan 3002、……将 3.8.3.127 分配给 vlan 3127?
- 要求 1:这些 IP 必须能够相互通信。
- 要求 2:DHCP
- 要求3:应与流量整形兼容。
我假设这意味着您目前每个 VLAN 使用的是 /30。中间改进是使用 /31(具有两个主机地址和零个保留地址)——并非所有系统都支持它,因为它是一个相对较新的标准化特殊情况,但许多系统已经支持它;虽然它没有您要求的那么密集,但它的效率是传统 /30 的 2 倍,并且比请求更易于实现。
更进一步的做法是使用一对 /32,也就是说,根本没有“子网”,而是有一条到对等地址的明确路由。Linux 支持这种配置,通常称为“pointopoint”配置,大多数 BSD 也支持,并且它经常与多个接口上的相同本地地址一起使用 - 这不会造成问题,因为 /32 不会扩展到任何重叠的子网路由。这将是实现您所要求的两种方法之一 - 假设所有相关系统都支持它。
它实际上是“地址 192.168.5.1/32,以及通过此接口路由 192.168.5.3/32”的缩写,就像子网掩码是设备路由的缩写形式一样。
问题在于我不确定是否可以通过 DHCP 部署相反的配置。(尽管对于 PPP 链接(例如 PPPoE)来说,这相当常见。)
为了使用 DHCP,您需要添加代理 ARP,以便您的客户设备认为它们位于 /25 上,即使您这边没有将其配置为 /25。也就是说,它们可以收到指示 /25 网络掩码的标准 DHCP 租约,并且可以成功地为另一个客户的 IP 地址进行 ARP(而是获取您的网关的 MAC)——而您这边的每个 VLAN 接口上仍然只有 /32,如上例所示。
Linux 具有内置的 Proxy-ARP 作为接口设置(用于“全局”代理)或特殊邻居缓存条目(用于更精确的代理),但用户空间实现也存在;例如,
parpd
由于历史原因,我使用 /26 代理到另一个 VLAN。这应该与 DHCP 服务器基本兼容,尽管租约和路由之间不会有任何自动关联 - 您可能需要手动确保客户 A 的 VLAN 具有正确的 /32 通过它路由(作为“对等”参数或作为正常静态路由,无关紧要)。