一台服务器配两个IP,ping不通这件事,九成是路由表没配好,其次是防火墙或安全组拦了ICMP请求,想解决问题,你得先弄清双IP是怎么挂上去的,再顺着排查思路一步步来。
先分清你的双IP是哪种配置方式
两个IP在服务器上落地,方式不一样,排查方向天差地别,先把你的情况对号入座。
- 单网卡绑定辅助IP,一块物理网卡上临时或永久加了第二个地址(比如
ip addr add或写进配置文件),两个IP共用同一个网卡、同一个网关,多数情况下,这种配置的小毛病出在防火墙或云安全组,路由层面基本不用动。 - 多网卡各配一个IP,服务器插了两块网卡,分别配置了不同网段的IP,这种情况复杂得多。它不光要配置IP,还得配置策略路由,不然第二个IP的流量出了网卡就找不到回家的路。
- 云服务器辅助IP,简米云、酷番云这类环境里,除了主私网IP,还能在控制台额外绑定一个辅助IP,这种情况要分两层排查:云平台的安全组、系统内的网卡配置和路由表。
行业共识认为,双IP不通的案例里,超过一半是路由表缺失或默认路由乱指引起的,防火墙和安全组排第二。
服务器两个ip ping不通怎么办:按这三步排查
下面这套排查顺序,是按概率从高到低排的,每一步都有具体操作,照着做就行。
第一步:查路由表,看第二个IP是不是“迷路”了
路由表就是服务器的地址本,两个IP的地址,必须知道自己的数据包该从哪张网卡出去、走哪个网关,地址本写错了,外面自然找不到你。
登录服务器,执行:
ip route show
正常情况,应该能看到一条默认路由(default via 网关IP)和对应的网段路由,如果你有两个网卡,理想状态是每个网卡对应一张独立路由表,通过策略路由来分流,如果只看到一条默认路由,而第二个IP的网段不在里面,那问题就出在这。
临时解决办法,加一条静态路由:
# 假设网卡eth1的IP是192.168.10.10,网关是192.168.10.1 ip route add 192.168.10.0/24 dev eth1 src 192.168.10.10 table 100 ip route add default via 192.168.10.1 dev eth1 table 100 ip rule add from 192.168.10.10 lookup 100
这套命令的意思是:从192.168.10.10这个IP来的流量,单独走一张路由表,用自己的网关出去。
这是多网卡多IP场景下最标准的解法。
第二步:查防火墙,看ICMP协议是不是被“扣留”了
如果路由没毛病,第二嫌疑人就是防火墙,ping用的是ICMP协议,很多服务器默认防火墙策略只放行SSH(22端口),ICMP被直接丢弃。
先看iptables:
iptables -L -n | grep icmp
再看firewalld(CentOS 7以上常见):
firewall-cmd --list-all
要是发现ICMP被拒绝,放行它:
# iptables 临时放行 iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # firewalld 永久放行 firewall-cmd --permanent --add-icmp-block-inversion firewall-cmd --reload
有些CentOS系统里,/etc/sysconfig/iptables文件里写了-A INPUT -j REJECT --reject-with icmp-host-prohibited,这行就是拦ICMP的元凶,把它删掉再重启iptables服务。
第三步:查云服务器辅助IP的安全组规则
这是云服务器辅助ip ping不通最常见的坑,你在云控制台加了一个辅助IP,但在安全组里只放行了主IP的入站规则对不起,辅助IP的流量照样被挡在外面。
登录云控制台,找到对应实例的安全组,检查入方向规则:
- 是否放行了
ICMP协议(或ALL ICMP - IPv4) - 源地址是否包含了你要ping的来源IP
- 如果安全组规则是针对“主私网IP”的,确认下辅助IP是否也在同一安全组内
简米云和酷番云的辅助IP,安全组是跟随实例的,理论上不会区分主IP和辅助IP,但有些用户自己创建了自定义安全组,规则写得太死,导致辅助IP的ping包进不来,把安全组规则改成源:0.0.0.0/0,协议:ICMP,再测试一遍。
一台服务器配置双ip的方法:把两个IP“安排明白”
排查完了,顺便说说怎么配置才能少踩坑,不同操作系统的配置方式略有差异,以下以Linux为例。
单网卡绑定辅助IP(CentOS / Ubuntu)
CentOS 7及以下,直接创建子接口配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
如下:
DEVICE=eth0:1 TYPE=Ethernet BOOTPROTO=static IPADDR=你的第二个IP NETMASK=255.255.255.0 ONBOOT=yes
保存后执行systemctl restart network。
CentOS 8+ / Ubuntu 18.04+,推荐用ip addr add的方式临时添加,验证没问题再写进netplan或NetworkManager:
ip addr add 192.168.1.100/24 dev eth0
多网卡双IP:不同网段必须做策略路由
如果两个IP属于同一网段,简单,把两个IP绑同一块网卡就行,但如果你的服务器是双网卡双ip且在不同网段,比如网卡eth0是168.1.10/24,网卡eth1是10.10.10/24,那就不能只配IP了,必须让系统知道“从哪个IP进来的包,就原路返回”。
编辑 /etc/iproute2/rt_tables,加两条表名:
100 eth0_table 200 eth1_table
然后配置路由规则,开机自启用 /etc/rc.local 或 systemd 服务来实现。
Windows服务器的双IP配置
Windows下相对简单,进入网络适配器属性 → IPv4 → 高级 → IP地址,点“添加”,填上第二个IP和子网掩码即可,但Windows下网关只能写一个,所以如果两个IP在不同网段,Windows的处理能力有限,通常建议物理服务器直接绑到同一网卡上。
物理层和ARP:最后才怀疑的问题
上面三招都用了还是不通,这时候才轮到物理层和ARP层面。
交换机端口是否配置了端口安全,有些企业网络在交换机端口做了MAC地址绑定,你换了IP但MAC没变,没问题;但如果服务器换网卡或做了虚拟MAC,交换机直接拒绝转发数据,自然ping不通。
两个IP是否在同一VLAN内,多网卡连不同交换机,如果交换机之间没做路由互通,那Ping不通是必然的,检查一下两台交换机之间的互联配置。
ARP表项是否冲突,执行arp -a,看看网关的MAC地址是否正确,如果第二个IP的ARP解析到了错误的MAC地址,执行:
ip neigh flush all
把ARP缓存清掉重试,这里有个细节:如果你给第二个IP配了和主IP相同的MAC地址,某些交换机在跨VLAN场景下会丢弃未知源MAC的报文,需要手动指定MAC或用arping测试。
arping -I eth0 你服务器的第二个IP
如果从服务器本机ping自己的第二个IP能通,从外部ping不通,问题大概率不在系统层面,而在交换机、安全组或云平台的路由策略。
双IP环境下的测试姿势
别踩“本机ping自己”的坑。从服务器上ping自己绑定的第二个IP,走的是环回接口,绕过了物理链路,通了也不能说明外部能访问到。
正确测试方式:
- 从同网段的另一台机器ping服务器的两个IP,分别对比结果
- 用
ping -I指定出口地址来测试(Linux):
ping -I 192.168.1.10 外部IP
-
外部测试时,用
traceroute看数据包走到了哪一跳,能精准定位是本地路由问题还是骨干网问题 -
云服务器主IP能ping通、辅助IP不通,优先检查安全组,其次看辅助IP是否有正确绑定到实例上,登录SSH执行
ip addr,如果看不到辅助IP,说明控制台加了但系统内没生效。
| 排查项目 | 判断标准 | 常见坑 |
|---|---|---|
| 路由表 | 能看到对应网段和网关 | 多网卡场景下没做策略路由 |
| 防火墙 | ICMP类型放行 | CentOS默认REJECT规则拦了 |
| 安全组 | 入方向ICMP放行 | 规则限定了IP或未更新 |
| ARP表 | MAC地址正确 | 多IP绑定MAC冲突 |
| 交换机端口 | 允许该MAC转发 | 端口安全限绑 |
关于服务器双IP ping不通的常见问题
服务器两个IP设在同一块网卡上,为什么第二个IP从外网ping不通?
两个IP在同一块网卡上,只要配置正确、路由指向一致,从外网应该都能访问,如果主IP通而辅助IP不通,先确认内核参数arp_ignore和arp_announce是否需要调整,执行sysctl -w net.ipv4.conf.all.arp_ignore=1和sysctl -w net.ipv4.conf.all.arp_announce=2,再测试,这个配置在LVS负载均衡场景下尤为重要,不少双IP不通的案例就是内核默认的ARP响应策略导致的。
一台服务器两个IP,从服务器本机ping都通,外部ping不通怎么回事?
本机ping走的是loopback接口,无法代表外部访问路径,外部ping不通,先反向排查:网关能否ping通、上游路由是否包含你第二个IP的网段、IDC或云平台是否只给该IP分配了带宽或白名单限制,联系网络服务商确认你的IP段有没有被广播出去。
双网卡双IP不同网段,两个IP能同时ping通吗?
能,但必须配置策略路由,没有策略路由的情况下,第二个网卡收到请求后,回复包可能从第一张网卡发出去,源IP和入接口对不上,对端直接丢弃响应,这就形成了“能娶不能嫁”的假死状态,按上文ip rule方式配置后,两个IP就能独立收发数据包,互不干扰。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/634989.html





