推荐使用ip addr而非ifconfig或eth0:x别名,因其是现代Linux默认工具集iproute2的官方方式,将多IP视为主网卡的secondary地址,统一管理、无依赖失效风险,且更适配Web虚拟主机等场景。

可以直接用 ip addr 命令为单网卡快速添加多个 IP,无需创建虚拟子接口,适合多业务虚拟主机这类需要稳定、灵活、易维护的场景。
为什么推荐用 ip addr 而不是 ifconfig 或 eth0:x 别名
现代 Linux 发行版(如 CentOS 7+/RHEL 8+、Ubuntu 18.04+)默认使用 iproute2 工具集,ip addr 是官方推荐方式。它把多个 IP 视为主网卡的“辅助地址”(secondary),统一管理、无依赖关系——不像 eth0:1 这类别名,一旦主接口 down,所有别名自动失效。
对 Web 服务尤其友好:Apache/Nginx 监听 0.0.0.0 时,所有绑定在该网卡上的 IP 都能正常响应请求;若需基于 IP 区分站点(如 192.168.1.10 托管 A 站,192.168.1.11 托管 B 站),直接配置 ServerName 或 VirtualHost 即可,无需额外路由或监听限制。
临时添加多个 IP(测试或快速上线)
以网卡 ens33 为例,执行以下命令:
ip addr add 192.168.1.10/24 dev ens33ip addr add 192.168.1.11/24 dev ens33-
ip addr add 2001:db8::10/64 dev ens33(支持 IPv6)
验证是否生效:ip addr show ens33。输出中带 secondary 标记的即为后加的 IP。这些地址重启后会丢失,仅用于调试或应急部署。
永久保存配置(生产环境必须)
不同发行版写法略有差异,但核心逻辑一致:把 ip addr add 的操作固化到网络服务启动流程中。
-
RHEL/CentOS 7+/Rocky/AlmaLinux:编辑
/etc/sysconfig/network-scripts/ifcfg-ens33,追加两行:IPADDR1=192.168.1.10NETMASK1=255.255.255.0
还可继续加IPADDR2、NETMASK2…… 注意不要写GATEWAY多次,仅主配置保留网关。 -
Ubuntu/Debian(netplan):修改
/etc/netplan/*.yaml,在对应网卡下添加addresses列表:addresses: [192.168.1.10/24, 192.168.1.11/24] - 配置完务必执行
sudo systemctl restart networking(Debian)或sudo systemctl restart NetworkManager(RHEL 系)使新 IP 生效。
配合虚拟主机使用的注意事项
添加多个 IP 后,还需确认服务层面的支持:
- Apache:启用
NameVirtualHost *:80(旧版)或直接用<VirtualHost 192.168.1.10:80>显式绑定,避免端口冲突。 - Nginx:每个
server块用listen 192.168.1.10:80指定监听 IP,比server_name更可靠。 - 防火墙:确保
ufw或firewalld允许对应 IP 的流量,例如firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.10" accept'。 - 反向代理或 CDN 场景下,注意源 IP 获取逻辑(如
X-Forwarded-For),避免日志记录失真。


















