Linux服务器网络连不上,核心思路是“先查链路,再查IP,最后查服务”顺着数据流向逐层排查,大部分问题都能在十分钟内定位。
linux服务器网络连接不上怎么排查
服务器突然失联,就像合租室友半夜不回家,急也没用,得按线索找,别急着重启,先想清楚它“失联”在哪一层:是物理链路断了,还是IP配置错了,或是服务本身挂了,每一步排查都有对应命令,照着做就行。
第一件事:确认网卡和链路状态
远程连不上,只能去机房或者靠带外管理(比如IPMI、BMC)登录,登录后第一条命令,看网卡认不认设备:
ip link show
- 如果看到
state UP,说明物理链路是通的,网线接口正常。 - 如果显示
state DOWN,说明网线没插好、交换机端口被关,或者网卡被驱动罢工了。
这时候再跑一句ethtool eth0(把eth0换成你的网卡名),看Speed和Link detected。Link detected: yes代表物理层没问题,可以继续往下查。
第二件事:检查IP配置是否“穿了衣服”
物理链路通了,但没穿IP这件隐身衣,网络照样不通。
ip addr show
重点看两样:网卡有没有拿到IP,以及IP是不是和网关在同一网段,拿不到IP,常见原因是DHCP客户端没起来,或者交换机的DHCP服务挂了,如果IP是静态配置的,检查文件是否写错最常见的是掩码写错或网关填错,导致数据包出不了门,比如/etc/network/interfaces(Debian系)和/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS系),这两类配置文件的字段名有差异,跨系统抄作业容易翻车。
第三件事:测试默认路由和网关
IP配好了,还得知道“门朝哪开”,用这条命令看路由表:
ip route show
默认路由通常是default via 192.168.1.1 dev eth0这一行,没有默认路由,数据包就不知道该往哪儿送,手动加一条:
ip route add default via 网关IP dev eth0
但注意,手写路由重启就失效,要永久生效,还是得改配置文件,如果临时加路由能通,问题就出在配置文件的网关项没写对。
linux网卡配置错误怎么办
网卡配置是Linux服务器网络故障里最高发的原因,没有之一,DNS配置错误尤其隐蔽IP能ping通,但解析不了域名,行业共识认为,大约一半的“网络连不上”案例,本质是配置文件里的一个小字段写错了,而不是物理故障。
DNS配置错了,能ping通IP但上不了网
最常见的情形:ping 114.114.114.114有响应,但ping baidu.com报“Unknown host”,这是本地DNS指向出问题,系统找不到解析服务器。
检查/etc/resolv.conf,看有没有nameserver条目,简米云或酷番云的默认DNS地址写对了吗?换了云服务商,旧的DNS输出点失效就会触发这个现象,改完之后执行systemctl restart network或systemctl restart NetworkManager公共配置方式的细节差异不大,关键是改对文件。
Debian系注意:/etc/resolv.conf可能是systemd-resolved生成的软链接,直接编辑会被覆盖。
重启网卡的正确姿势
改完配置要重启网卡,不同系统命令不一样:
- CentOS / RHEL 7及以上:
systemctl restart network - Ubuntu 18.04以上:
netplan apply(配置文件在/etc/netplan/.yaml) - 通用方案:
ip link set eth0 down && ip link set eth0 up
别在这时候盲目重启整个服务器,重启网卡的花销是秒级,重开机是分钟级,等的时间够你泡一杯咖啡了,万一连不上,重启网卡后等几秒,观察屏幕是否报错。
服务器网络能ping通但ssh连不上是什么原因
这情况像有人明明在家却不开门链路通、IP通,但应用的端口没在听,SSH连不上的原因很多,但端口被防火墙挡了是首要嫌疑。
排查端口服务是否在监听
ss -lntp | grep 22
如果输出为空,SSH服务就没起来,用systemctl status sshd查看守护进程状态,多数情况是服务崩了,重启:
systemctl restart sshd
如果端口在监听但连不上,问题在防火墙,CentOS 7以上默认防火墙是firewalld,Ubuntu则常用ufw:
firewall-cmd --list-all # 查看放行端口 firewall-cmd --add-port=22/tcp --permanent # 放行22端口
酷番云、简米云的Linux服务器还要检查安全组规则安全组相当于云机房门口的保安,防火墙是客厅的门,两道工序都不放行,SSH自然连不上。
更换SSH端口后连不上,是端口没放行
很多同学习惯改默认22为其他端口,如果你改了/etc/ssh/sshd_config里的Port,但防火墙和安全组没同步放行新端口,连接就会被拦在半路,建议改端口时,先放行新端口,再改配置,再重启sshd顺序反了容易把自己锁在门外。
企业级linux服务器网络配置与维护要点
个人用的小服务器掉线,重启就好了,成本忽略不计,但机房托管的业务服务器不一样,网络中断时间直接换算成真金白银,据工信部发布的网络运行数据,近年来企业数据中心因配置失误导致的网络中断,占比相当大,且多数本可避免。
跨地域部署时要规划好内网和公网IP
业务跨机房时,网络配置的复杂度成倍上升,比如服务器在江苏IDC机房里,除了公网IP,还有一段内网IP用于机器间通信,这时候就得掂量:内网IP段有没有和云上VPC冲突?两边路由表怎么互通?
典型坑位是把内网网关写成了公网网关,导致内网服务全部瘫痪,还有双网卡配置:一块连公网,一块连内网,如果策略路由没写对,响应包会从错误的网卡出去,连接就半途夭折。
高并发场景更容易触发网络配置隐患
流量一涨,网络问题就原形毕露,比如网卡队列数不够,CPU软中断跑满,延迟飙升;或者TCP缓冲区默认值太小,大流量下丢包严重,这类问题平时不明显,大促或者业务高峰期就在监控里拉响警报,各方做法大同小异:优化内核参数,比如调大net.core.rmem_default、net.ipv4.tcp_rmem,同时让网卡多队列绑定不同CPU核心。
业内专家指出,做网络变更前除了备份配置文件,还应备好回滚方案,上一秒的命令可能成为下一秒的事故现场,这也是为什么每次操作后要立即验证连通性,别急着退出终端。
Linux和Windows服务器网络排查的区别
初学者容易把Windows的思维方式套到Linux上,其实两者差异很大,Windows有图形化网络适配器界面,点一点就能看到“互联网连接正常”;Linux命令行的反馈却相当简洁
不报错不代表配置正确。
拿重启网卡来说,Windows右键禁用再启用就完事,Linux需要记命令、写配置、看回显,但Linux也有优势:配置文件文本化,grep一下就能找到问题字段,还能用vim直接改,如果你有IDC机房的服务器要托管,租用价格通常在几百到几千一年不等,但网络配置复杂度跟价格不成正比便宜机子照样得按规范配网络。
网络配置修改后多久能生效
这是个高频问题,修改配置文件,有的立即生效,有的需要重启服务,临时改IP地址:
ip addr add 192.168.1.100/24 dev eth0
这条命令秒级生效,但重启后消失,要永久生效必须改配置文件,DNS修改后,systemd-resolved的缓存可能需要几秒到几十秒刷新,这期间ping不通域名是正常的,再等等或直接清缓存,如果是路由表的变化,ip route命令立即生效。
但要注意:修改防火墙规则是即时生效的,某些云厂商的安全组要提交保存,在后台大约十几秒完成。
Q&A
修改Linux网络配置文件后,运行systemctl restart network,SSH连接断了是不是正常?
正常,重启网络服务会中断当前所有网络连接,SSH会话也不例外,推荐的做法是不要把配置文件改完再一次性重启网络,而是先改好,再用nohup或者screen跑一个延迟重启命令,比如sleep 5 && systemctl restart network,给自己留出容错时间,如果断连了,等几秒再重新连,通常能连上,如果连不上,说明配置本身有问题,需要去服务器现场改回来。
服务器能ping通网关,但ping不通外网IP,问题出在哪?
可能有三层原因。第一层:默认路由丢失,数据包找不到出口,用ip route show确认。第二层:NAT或转发规则没有配置,尤其在内网服务器通过防火墙出公网的场景里。第三层:运营商或机房封了ICMP协议,ping不通外网不代表TCP不通,改用curl -I baidu.com来测,多数情况下是默认路由被误删,重新加上即可恢复。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/612929.html





