那天熬到凌晨两点才彻底搞定,复盘下来就是踩了新手最容易犯的服务器多IP配置两个致命小坑——一是用了ip addr add临时绑定,重启网卡或者系统就消失;二是给电商子站单独加的公网IP没有做路由和SSL SNI的小联动(哦不对,联动是应用层的,但网卡绑定的时候没确认默认和单独出口的优先级,导致握手默认走主IP)。今天就把这两个月摸透的CentOS/Ubuntu通用、线上生产可落地的配置思路掏出来,新手跟着走就行。
先说说现在最稳妥的配置方式吧,多数云厂商和物理服务器场景都能用——网卡配置文件永久绑定。我刚入行那会,怕改配置把网卡搞崩,总用临时命令凑数,结果后来搞了3次临时重启丢IP的事故,差点被当时的部门主管骂哭。现在改配置前我都会先做个小备份,敲黑板,这个习惯哪怕你配置过100次都别丢:
比如CentOS 7/8/Stream通用的,先cd到网卡配置目录:
cd /etc/sysconfig/network-scripts/
然后备份主网卡配置文件(先敲ip a找自己的网卡名,比如我常用的云服务器是ens33或者eth0):
cp ifcfg-ens33 ifcfg-ens33.bak.$(date +%Y%m%d%H%M)
Ubuntu 20.04/22.04/24.04现在主流用Netplan了,备份文件也简单:
cd /etc/netplan/
cp 00-installer-config.yaml 00-installer-config.yaml.bak.$(date +%Y%m%d%H%M)
接下来是CentOS的永久绑定操作,物理服务器和国内主流云厂商(阿里云腾讯云华为云这些EIP绑定云服务器网卡的情况)通用。物理服务器的话要注意网关的设置,云厂商的话网关一般都固定好了,别瞎改就行。假设我们要给主网卡ens33加第二个公网IP 123.45.67.89/24(掩码可以从云控制台或者物理服务器的网络规划里找):
vi ifcfg-ens33:0
然后把这段内容填进去,注意把IPADDR和NETMASK换成自己的:
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=123.45.67.89
NETMASK=255.255.255.0
然后重启网络服务生效,CentOS 7用service network restart,Stream和8以上用nmcli c reload或者systemctl restart NetworkManager就行,重启前可以先ping一下主网关确认没问题。
Ubuntu用Netplan的更简洁,假设你的网卡名是eth0,加同样的IP 123.45.67.89/24,直接编辑备份前的yaml文件:
vi 00-installer-config.yaml
找到原来的ethernets下面的eth0配置,在addresses里面直接加新IP就行,注意yaml文件的缩进非常严格,必须用2个或者4个空格,不能用tab:
network:
ethernets:
eth0:
addresses:
192.168.1.100/24 # 这里是原来的主IP,内网公网都一样,直接加后面就行
123.45.67.89/24 # 新绑定的IP
routes:
to: default

via: 192.168.1.1 # 原来的默认网关,别改
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
version: 2
然后敲netplan try测试一下配置,120秒内没问题的话敲回车确认,有问题会自动回滚,这个功能对新手太友好了,我现在配置Ubuntu的网络必用这个命令。
踩过那个串SSL证书的坑才明白,永久绑定只是第一步,还要确认你的应用层服务(比如Nginx、Apache)有没有配置好SNI,或者如果有特定业务需要指定出口IP的话,Linux系统里也可以加路由规则,不过多数中小团队的多IP场景(比如一个主站一个子站)用Nginx/Apache的SNI就够了,这里顺便提一下Nginx的简单配置示例,新手可以直接套:
server {
listen 443 ssl;
server_name shop.example.com;
# 这里绑定子站的专属IP,进一步避免串
listen 123.45.67.89:443 ssl;
ssl_certificate /path/to/shop.crt;
ssl_certificate_key /path/to/shop.key;
# 其他子站配置
}
server {
listen 443 ssl;
server_name www.example.com;
listen 192.168.1.100:443 ssl; # 主站专属IP(如果是公网的话换成公网主IP)
ssl_certificate /path/to/www.crt;
ssl_certificate_key /path/to/www.key;
# 其他主站配置
}
敲完nginx -t测试配置没问题,再systemctl reload nginx就行。
最后给新手两个专属避坑提醒,别不信,真的有80%的新手第一次配置多IP都会踩其中一个:第一个是别随便改默认网关,云厂商的云服务器默认网关一般都是绑定在第一个主IP的网段上,改了之后整个服务器都连不上外网;第二个是测试永久绑定是否生效,别只看ip a,一定要重启系统或者重启网卡之后再敲ip a确认,还要用ping和telnet测试一下新IP的连通性和端口服务是否正常。
你们在运维工作中有没有遇到过类似的多IP配置坑?比如绑定了IP但是端口不通,或者重启之后网卡配置乱掉?欢迎在评论区分享你的排查经验。

评论列表 (0条):
加载更多评论 Loading...