Linux单网卡支持绑定多个IP,本质是通过IP别名或直接附加secondary地址实现;临时用ip/ifconfig命令添加(重启失效),永久需按发行版修改配置文件(如CentOS的ifcfg-eth0:0、Ubuntu的interfaces或Netplan),并注意网关仅设于主接口以防路由冲突。

Linux 单网卡支持绑定多个 IP,本质是通过 IP 别名(IP Aliasing) 或直接附加 secondary 地址实现,无需额外硬件。关键不在“能不能”,而在于选对方式:临时测试用命令行,长期运行必须持久化配置,且不同发行版路径和语法差异明显。
临时添加多个 IP(重启即失效)
适合快速验证、调试或短期服务暴露:
-
推荐用 ip 命令(iproute2):执行
sudo ip addr add 192.168.50.100/24 dev eth0,其中eth0替换为你的实际网卡名(如ens33);可重复执行添加多个地址,全部显示为secondary状态 -
兼容旧系统可用 ifconfig:先确认已安装
net-tools(CentOS 执行sudo yum install -y net-tools,Ubuntu 用sudo apt install -y net-tools),再运行sudo ifconfig eth0:1 192.168.50.101 netmask 255.255.255.0 up - 删除时对应操作:
sudo ip addr del 192.168.50.100/24 dev eth0或sudo ifconfig eth0:1 down
永久配置(重启后保留)
必须按发行版修改对应配置文件,否则重启网络服务或系统后配置丢失:
-
CentOS/RHEL 7 及以前:在
/etc/sysconfig/network-scripts/下新建ifcfg-ens33:0(文件名与 DEVICE 值严格一致),内容含DEVICE=ens33:0、ONBOOT=yes、BOOTPROTO=static、IPADDR=192.168.50.100、NETMASK=255.255.255.0 -
Ubuntu 18.04 及更早:编辑
/etc/network/interfaces,末尾追加:auto ens33:0 iface ens33:0 inet static address 192.168.50.100 netmask 255.255.255.0 -
Ubuntu 20.04+(Netplan):修改
/etc/netplan/*.yaml,在对应网卡块中扩展addresses列表,例如:addresses: [192.168.50.100/24, 10.0.0.50/24],保存后执行sudo netplan apply
别名接口 vs 直接附加:区别与选择
两者效果相似,但底层逻辑和管理方式不同:
-
ifconfig eth0:0 xxx创建逻辑别名设备,在ifconfig输出中独立可见,但在ip addr中只是eth0的 secondary 地址 -
ip addr add xxx dev eth0不创建新设备名,所有地址统一归属eth0,支持 label、scope 等精细控制,是现代推荐做法 - 若需批量绑定连续 IP(如 20 个),CentOS 推荐用
ifcfg-eth0-range0文件,设IPADDR_START/IPADDR_END和NETMASK=255.255.255.255,避免手动建一堆配置文件
验证与排错要点
配置完成后务必检查是否生效并排除常见陷阱:
- 用
ip addr show ens33查看所有地址,确认状态为scope global secondary或scope global - 确保主网卡配置中未重复定义
GATEWAY—— 网关只应在主接口(如ifcfg-ens33)中设置一次,否则引发路由冲突 - 若使用 NetworkManager,它可能忽略
/etc/sysconfig/network-scripts/下的手动配置,建议停用 NM 或改用其管理方式 - 跨网段添加 IP(如同时有
192.168.1.0/24和10.0.0.0/24)完全可行,但需确认上层交换机或防火墙允许对应流量进出


















