在 Linux 服务器上,即使只有一个网卡,也可以为其配置多个 IP 地址。这种配置方式通常用于支持多站点部署、虚拟主机、站群或其他需要多个 IP 地址的场景。以下是详细的配置方法,包括永久性和临时性配置的步骤。
1. 配置多个 IP 地址的方式
Linux 系统支持两种方式为单个网卡配置多个 IP 地址:
- 别名 IP(Alias IP):为网卡创建别名,例如
eth0:1
。 - 直接绑定多个 IP:直接将多个 IP 地址绑定到网卡(推荐方式)。
2. 临时配置多个 IP 地址
临时配置的 IP 地址在服务器重启后会失效,适合测试或临时使用。
2.1 使用 ip
命令
-
添加一个新 IP 地址:
baship addr add 192.168.1.101/24 dev eth0
- 192.168.1.101/24:新添加的 IP 地址和子网掩码。
- eth0:网卡名称(可以用
ip link show
查看网卡名称)。
-
添加多个 IP 地址:
baship addr add 192.168.1.102/24 dev eth0 ip addr add 192.168.1.103/24 dev eth0
-
验证配置:
baship addr show eth0
输出示例:
plaintext2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0inet 192.168.1.101/24 scope global secondary eth0inet 192.168.1.102/24 scope global secondary eth0
-
删除一个 IP 地址:
baship addr del 192.168.1.101/24 dev eth0
2.2 使用 ifconfig
命令
-
添加一个别名 IP:
bashifconfig eth0:1 192.168.1.101 netmask 255.255.255.0 up
- eth0:1:表示网卡别名。
- 192.168.1.101:新添加的 IP 地址。
-
添加多个别名 IP:
bashifconfig eth0:2 192.168.1.102 netmask 255.255.255.0 up ifconfig eth0:3 192.168.1.103 netmask 255.255.255.0 up
-
查看当前配置:
bashifconfig
-
删除别名 IP:
bashifconfig eth0:1 down
3. 永久配置多个 IP 地址
永久配置可以使 IP 地址在服务器重启后仍然生效。以下是针对不同 Linux 发行版的配置方法。
3.1 配置文件路径简介
- RHEL/CentOS/Rocky Linux:
/etc/sysconfig/network-scripts/
- Debian/Ubuntu:
/etc/network/interfaces
- 其他发行版:可能有类似路径,但需要查阅对应文档。
3.2 RHEL/CentOS 系列(NetworkManager 配置)
方法 1:使用配置文件
-
编辑网卡主配置文件:
bashnano /etc/sysconfig/network-scripts/ifcfg-eth0
-
配置多个 IP 地址:
在文件中添加以下内容:plaintextDEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1# 添加多个 IP 地址 IPADDR1=192.168.1.101 NETMASK1=255.255.255.0IPADDR2=192.168.1.102 NETMASK2=255.255.255.0
-
重启网络服务:
bashsystemctl restart network
方法 2:使用别名配置文件
-
为每个 IP 地址创建一个别名配置文件:
- 主配置文件:
ifcfg-eth0
- 别名配置文件:
ifcfg-eth0:1
,ifcfg-eth0:2
- 主配置文件:
-
示例配置:
主网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
:plaintextDEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
别名配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0:1
:plaintextDEVICE=eth0:1 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.101 NETMASK=255.255.255.0
别名配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0:2
:plaintextDEVICE=eth0:2 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.102 NETMASK=255.255.255.0
-
重启网络:
bashsystemctl restart network
3.3 Debian/Ubuntu 系列
-
编辑网络接口配置文件:
bashnano /etc/network/interfaces
-
添加多个 IP 地址:
plaintextauto eth0 iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1# 添加额外的 IP 地址 iface eth0:1 inet staticaddress 192.168.1.101netmask 255.255.255.0iface eth0:2 inet staticaddress 192.168.1.102netmask 255.255.255.0
-
重启网络服务:
bashsystemctl restart networking
3.4 使用 nmcli
工具(适用于 NetworkManager)
-
为网卡添加额外的 IP 地址:
bashnmcli connection modify eth0 +ipv4.addresses 192.168.1.101/24 nmcli connection modify eth0 +ipv4.addresses 192.168.1.102/24
-
重新加载配置:
bashnmcli connection up eth0
-
验证配置:
bashnmcli device show eth0
4. 验证配置是否成功
4.1 使用 ip addr
检查
执行以下命令,查看网卡是否绑定了多个 IP 地址:
bash
ip addr show eth0
4.2 测试网络连通性
- 测试每个 IP 地址是否可以正常访问:
bash
ping -c 3 192.168.1.100 ping -c 3 192.168.1.101 ping -c 3 192.168.1.102
4.3 使用 curl
测试服务
- 如果为每个 IP 地址配置了服务(如 Web 服务),可以使用
curl
测试:bashcurl http://192.168.1.101
5. 注意事项
-
避免 IP 冲突:
- 确保分配的多个 IP 地址在同一网段中是唯一的,避免 IP 冲突。
-
网关配置:
- 通常只为主 IP 地址配置默认网关,额外的 IP 地址无需配置网关。
-
防火墙配置:
- 如果使用防火墙(如
iptables
或ufw
),需要为每个 IP 地址开放对应的服务端口。
- 如果使用防火墙(如
-
重启后生效:
- 确保永久配置正确,否则重启服务器后可能丢失配置。
通过以上方法,您可以在单网卡的 Linux 服务器上成功配置多个 IP 地址,满足多站点部署、站群优化或其他业务需求。