Linux 下的多 IP 地址配置方法

@2013-11-16 新版功能: 创建

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
    
         ......
    }