我有一台服务器(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]