如何分配多个公网 IP 地址

如何分配多个公网 IP 地址

我有一台服务器(Ubuntu 14.04)并且想要分配这些多个公共 IP 地址。

预期的:

  • 我想要 ping 从 XXX.XXX.XXX.128 到 XXX.XXX.XXX.143 的所有 IP 地址

当前设置:

  • IP 地址 XXX.XXX.XXX.128/28 (255.255.255.240)
  • 我只能 ping XXX.XXX.XXX.128
  • 接口配置(/etc/network/interfaces):

    auto eth0:0
    iface eth0:0 inet static
        address XXX.XXX.XXX.128
        netmask 255.255.255.240
    

答案1

您只需在接口文件中定义同一设备上的多个接口即可指定多个 IP 地址。例如:

auto eth0
iface eth0 inet static
  address 192.168.0.129
  netmask 255.255.255.240
iface eth0 inet static
  address 192.168.0.130
  netmask 255.255.255.240

等等。在旧版本中,您需要使用 eth0:0、eth0:1、eth0:2 等语法来定义接口,但我确信 14.04 无需这些语法即可支持。

执行相同操作的其他方法包括使用 iface 节中的“up”行在启动接口时添加额外的 IP,如下所示:

auto eth0
iface eth0 inet static
  address 192.168.0.129
  netmask 255.255.255.240
  up /sbin/ip address add 192.168.0.130/28 dev eth0
  down /sbin/ip address delete 192.168.0.130 dev eth0

建议使用 down 子句,以确保接口在关闭或断开连接时能够干净地关闭。您可以指定多个 up 或 down 命令,或者在您拥有大量要添加到接口的 IP 列表的情况下,调用使用 ip 命令添加/删除所需 IP 的脚本。

请记住,在您定义的子网中,.128 和 .143 被保留为网络和广播地址,因此您不应将它们分配给接口。您还没有为传出流量指定默认网关。子网掩码不用于声明“我想要所有这些 IP”,它是有关接口所在网络的信息,允许系统确定它是否可以直接将流量发送到 IP(如果它在其本地子网中)或需要通过网关路由(在接口上使用“网关 ABCD”行定义)。如果 /28 不准确,您应该找出您的网络的实际子网掩码和网关详细信息。

答案2

ip addr add <ip address/netmask> dev <devicename>例如,你可以从 CLI 使用

ip addr add XXX.XXX.XXX.129/28 dev eth0

您可以使用简单的 for 循环来循环最后一个八位字节。还请不要忘记 xxx128/28 只有 14 个可用地址,因为 .128 是网络地址,而 .143 是广播地址,因此不可用。

答案3

除了Iain的回答之外:

  • 您正在使用的语法 ( eth0:0) 是旧的并且已被弃用。

  • 如果您想要永久使用 IP,请参考以下内容了解如何使用/etc/network/interfaces

    auto eth0
    iface eth0 inet static
        [insert your current settings]
        up   ip addr add XXX.XXX.XXX.129/28 dev $IFACE label $IFACE:0
        down ip addr del XXX.XXX.XXX.129/28 dev $IFACE label $IFACE:0
        up   ip addr add XXX.XXX.XXX.130/28 dev $IFACE label $IFACE:1
        down ip addr del XXX.XXX.XXX.130/28 dev $IFACE label $IFACE:1
        [continue for all your IPs accordingly]
    

相关内容