Linux 单网卡配置多 IP

在 Linux 下给一块网卡配置多个 IP,基本逻辑就是给一个网卡起一个别名,在别名的逻辑网卡上配置 IP 地址。

临时方法

使用以下两种工具可以临时配置 IP,但是每次重启网络服务后配置会消失。

工具

Linux 上管理网络的工具有两种,一个是 net-tools中提供的ifconfig,一个是 iproute2提供的ip addr。net-tools 起源与 BSD,自2001年起,Linux 社区就停止了对这个工具的维护,而 iproute2旨在取代这个工具,并提供一些新功能。

net-tools 通过procfs(/proc)ioctl系统调用去访问和改变内核网络配置,而 iproute2则通过netlink套接字接口与内核通信。

net-tools 中工具名字比较杂乱,而 iproute2相关规范,基本是ip <subcmd>的格式。

但是基于 net-tools 的广泛使用,还是两种命令都掌握比较好。

ifconfig

增加IP

使用 ifconfig 配置 ip,命令如下:

1
ifconfig <网卡名> <ip 地址> netmask <子网掩码>

例如在网卡eth0上增加 ip192.168.0.2/24:

1
ifconfig eth0:1 192.169.0.2 netmask 255.255.255.0

删除IP

使用 ifconfig 删除 ip,命令如下:

1
ifconfig <网卡名> down

如删除刚配置的 ip:

1
ifconfig eth0:1 down

ip addr

增加IP

命令如下:

1
ip addr add <ip> dev <网卡名>

同上,在网卡eth0上增加 ip192.168.0.2/24:

1
ip addr add 192.168.0.2/24 dev eth0

删除IP

命令如下:

1
ip addr delete <ip> dev <网卡名>

删除刚配置的ip:

1
ip addr delete 192.168.0.2/24 dev eth0

永久方法

修改网卡配置文件,可以保证配置不会丢失。配置过程如下(CentOS/Red Hat):

  1. 进入网络配置文件目录cd /etc/sysconfig/network-scripts/
  2. 将网络配置文件ifcfg-xxx例如ifcfg-eth0做一个拷贝:cp ifcfg-eth0 ifcfg-eth0:1
  3. 编辑ifcfg-eth0:1,修改以下几个字段:
    • NAME:将原名例如eth0改为eth0:1
    • DEVICE:将原名例如eth0改为eth0:1
    • IPADDR:修改为指定 IP 地址。
  4. 重启网络systemctl restart network