我可以将(大)地址块绑定到接口吗?

p-s*_*tic 28 linux ipv6

我知道 ip 工具允许您将多个地址绑定到一个接口(例如,http : //www.linuxplanet.com/linuxplanet/tutorials/6553/1/)。不过现在,我正在尝试在 IPv6 之上构建一些东西,拥有完整的地址块(例如 /64)会非常有用,这样程序就可以从范围中选择任何地址并绑定到那个。不用说,将这个范围内的每个 IP 附加到一个接口需要一段时间。

Linux 是否支持将整个地址块绑定到接口?

Ger*_*mbs 32

Linux 2.6.37 及更高版本通过名为AnyIP的功能支持这一点。例如,如果我跑

ip route add local 2001:db8::/32 dev lo
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 11.04 机器上,它将接受 2001:db8::/32 网络中任何地址的连接。


lar*_*sks 6

是的,Linux 支持将网络地址块绑定到网络接口……但仅限于环回接口。所以你可以这样做:

ip addr add 192.168.5.0/24 dev lo
Run Code Online (Sandbox Code Playgroud)

然后这样做:

$ nmap -sP -oG - 192.168.5.0/24

# Nmap 5.21 scan initiated Tue Dec  7 11:38:28 2010 as: nmap -sP -oG - 192.168.5.0/24 
Host: 192.168.5.0 ()    Status: Up
Host: 192.168.5.1 ()    Status: Up
Host: 192.168.5.2 ()    Status: Up
[...]
Host: 192.168.5.254 ()  Status: Up
Host: 192.168.5.255 ()  Status: Up
# Nmap done at Tue Dec  7 11:38:46 2010 -- 256 IP addresses (256 hosts up) scanned in 0.11 seconds
Run Code Online (Sandbox Code Playgroud)

有了适当的路由,这将满足您的需求……对于 IPv4 地址。您问过 IPv6,而我对 IPv6 没有任何经验,但很有可能它会以相同的方式工作。

我最初在这里读到了这个(在文章的底部)。请注意,本文还讨论了如何使用我以前不知道的 CentOS/Red Hat 功能为接口显式分配多个地址。

  • 不,您不应该向 lo 添加地址。相反,添加一个路由:`ip -6 route add local <ip> dev lo`。 (2认同)