random tips on coding, ops, ...

Linux 下的多 IP 地址配置方法

Linux 各种发行版本采用 iproute2 方法在一个网卡上分配多 ip 地址的配置方法如下。 需要注意的是,采用 iproute2 方法配置的多 ip 地址需要使用 ip addr 命令才能 正常看到,传统的 ifconfig 方法只能看到一个 ip 地址。如果需要 ifconfig 能看到 所有的地址,则需要使用网卡别名(如 eth0:1)的方式来进行配置。

Gentoo:配置 /etc/conf.d/net

config_eth0="192.168.0.1/24
192.168.0.2/24"

Ubuntu:参考这里,配置 /etc/network/interfaces

auto eth0
iface eth0 inet static
    address 192.168.0.1
    netmask 255.255.255.0

iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0

CentOS/RHEL:配置 /etc/sysconfig/network-scripts/ifcfg-eth0

ONBOOT=yes
DEVICE=eth0

IPADDR=192.168.0.1
NETMASK=255.255.255.0

IPADDR0=192.168.0.2
NETMASK0=255.255.255.0

更多的地址使用 IPADDR1, IPADDR2 等。相关的代码请参考 /etc/sysconfig/network-scripts/network-functions:

expand_config ()
{
    local i=0 val
    for idx in '' {0..255} ; do
        ipaddr[$i]=$(eval echo '$'IPADDR$idx)
        if [ -z "${ipaddr[$i]}" ]; then
           [ "$idx" ] && [ $idx -gt 2 ] && break
           continue
        fi

     ......
}

comments powered by Disqus