如何将一系列 IP 绑定到 ubuntu 接口

如何将一系列 IP 绑定到 ubuntu 接口

我正在尝试在 Ubuntu 服务器上绑定一系列 IP(总共 2048 个),我知道的唯一方法是将其逐个添加到接口文件中,然后像这样重新启动网络服务:

### /etc/network/interfaces ###
auto enp2s0:1
iface enp2s0:1 inet static
address 200.20.39.1
netmask 255.255.255.255

auto enp2s0:2
iface enp2s0:2 inet static
address 200.20.39.2
netmask 255.255.255.255

etc etc.

这种方法的问题在于,当我重新启动网络以应用这些更改并检查 ifconfig 命令时,它只添加了 8 或 9 个 ip,所以我必须再次重新启动服务以添加另外 8 个 ip,依此类推,所以我需要 30 个小时才能添加这些 ip。

我知道在基于 Redhat 的系统上您可以选择轻松添加范围,如下所示:

/etc/sysconfig/network-scripts/ifcfg-eth0-range0
IPADDR_START=192.168.0.100
IPADDR_END=192.168.0.200
CLONENUM_START=0

有没有什么办法可以在 Ubuntu 上做到这一点?或者还有其他更快的方法?

答案1

如果你不介意的话不是具有接口别名(即 等:0) ,您可以在事件上使用以下命令:1添加任意数量的 IP 地址:enp2s0ip addr addup

auto enp2s0
iface enp2s0 inet static
address 200.20.39.1
netmask 255.255.248.0
up ip addr add 200.20.39.1/21 dev enp2s0
up ip addr add 200.20.39.2/21 dev enp2s0
...
up ip addr add 200.20.39.254/21 dev enp2s0
...

等等。

以编程方式生成 2048 行应该非常容易,然后一个简单的ifdown enp2s0/ifup enp2s0就可以让您做好准备,而无需多次重新启动网络服务。

免责声明

请记住,ifdown只有在本地连接或通过远程连接时才应该这样做其他接口,因为如果连接 enp2s0

答案2

如果您在接口中添加子网lo,Linux 将响应该子网内的任何地址。

为了说明这一点,假设您的以太网接口上的 IP 地址为 192.168.1.99。现在将 10.1.2.0/21 添加到您的 lo 接口:

ip addr add 10.1.2.0/21 dev lo

现在,它将对该范围内的任何 IP 地址的任何 arp 请求做出反应,无论该 IP 地址位于哪个接口上。

为了能够从 192.168.1.0/24 范围内的其他系统访问这些 IP 地址,您需要在这些系统上通过其主地址(即本例中的 192.168.1.99)设置到该子网的路由。或者将此路由添加到默认网关,它应该在必要时向该主机发送 ICMP 重定向。

相关内容