Linux服务器连不上网络时,大多数情况下是网卡配置、路由或DNS这三个环节出了问题,先按这个顺序排查,问题基本都能定位。
很多朋友在本地装好了Linux,或者刚买了一台云服务器,结果发现要么ping不通外网,要么SSH连接直接超时,今天我根据自己这些年折腾Linux的经验,把这类问题的排查思路完整写出来,全文以命令和场景为主,都是可以直接上机验证的东西。
linux没有网络怎么连接服务器:先分清是哪种“没网”
动手之前,先别急着敲命令,要分清楚是完全没网,还是能上网但连不上服务器,这两种情况的处理路径完全不同。
- 完全没网:虚拟机里装好Linux,没配IP,或者物理机网线没插好,表现为
ping www.baidu.com直接报“Name or service not known”或“Network is unreachable”。 - 能上网但连不上服务器:本地电脑能正常看网页,但用SSH工具去连Linux服务器,提示
Connection timed out或Connection refused。 - 能ping通IP但上不了网:
ping 114.114.114.114通,但ping www.baidu.com不通,这是DNS解析的问题。
先做个自检,用以下命令快速确认状态:
# 查看所有网卡和IP地址,重点看有没有分配到IP ip addr # 查看默认路由,有没有default条目 ip route show # 测试物理网络连通性,这个IP是国内公共DNS,不通就说明物理链路有问题 ping -c 4 114.114.114.114 # 测试DNS解析,通了就说明DNS服务正常 ping -c 4 www.baidu.com
行业共识认为,80%以上的Linux网络问题都出在网卡配置和路由表上,先把这四条命令的输出看明白,方向就不会跑偏。
网卡配置有问题:linux连不上服务器怎么办的第一步排查
如果你用ip addr查看,发现网卡上没有inet开头的条目,说明这块网卡压根没获得IP地址,这在虚拟机里最常见,云服务器上偶尔也会因为镜像问题出现。
从DHCP开始:让网卡自动获取IP
如果你确认路由器或虚拟机的DHCP功能是开着的,可以先试试让网卡自动获取:
dhclient -v eth0
把eth0换成你实际的网卡名(用ip addr能看到,可能叫ens33、ens5、wlan0等),执行后再用ip addr查看,如果有IP了,说明就是没自动获取的问题。
但要注意,这种方式重启后可能失效,要永久生效,建议改配置文件。
配置静态IP的完整步骤
如果你的网络环境要求固定IP(比如公司内网、机房服务器),需要手动配置,不同发行版配置文件位置不一样:
| 发行版 | 配置文件路径 | 配置工具 |
|---|---|---|
| CentOS / RHEL 7+ | /etc/sysconfig/network-scripts/ifcfg-eth0 |
vi 直接编辑 |
| Ubuntu 18.04+ | /etc/netplan/01-netcfg.yaml |
netplan apply |
| Debian | /etc/network/interfaces |
/etc/init.d/networking restart |
以最常见的CentOS 7为例,编辑配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
确保有这几行关键内容:
BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=223.5.5.5 DNS2=114.114.114.114
改完保存,重启网络服务:
systemctl restart network
ONBOOT=yes这行是新手最容易漏掉的,很多人就是忘了这一行,导致重启后网卡不自动启用。
用可视化工具救急:nmtui
如果不想记配置文件语法,可以直接用命令行的图形工具:
nmtui
这个工具在CentOS、RHEL、Fedora上都有,界面非常友好,选择“Edit a connection”,选中网卡,填入IP、网关、DNS,然后回车保存,随即用systemctl restart NetworkManager重启网络服务,对于命令行恐惧症的朋友,推荐优先用这个方式,Ubuntu用户也别急,安装方法很简单:apt install network-manager -y。
网关和DNS配置错误:路由不通导致连不上服务器
网卡IP配置没问题,但ping 114.114.114.114不通,说明你的请求发不出路由器,也没有到达公网的路由,用route -n查看路由表,重点看有没有default这一行。
补默认路由的两种方式
临时生效(重启失效):
route add default gw 192.168.1.1 eth0
写入配置文件(永久生效): 以CentOS为例,在/etc/sysconfig/network-scripts/ifcfg-eth0里加一行:
GATEWAY=192.168.1.1
这个网关地址一定要确认对。如果你的路由器的管理地址是192.168.0.1,你却在网关里写了192.168.1.1,数据包全扔给了一个不存在的设备,不确定网关的话,在Windows上打开cmd输入ipconfig,看“默认网关”那一栏,Linux就填同样的地址。
配置DNS后还是ping不通域名?
DNS配置错了之后,你ping 223.5.5.5是通的,但ping www.baidu.com直接提示ping: www.baidu.com: Name or service not known,这就是典型的DNS解析失败。
修改DNS的通用方法:
echo "nameserver 223.5.5.5" > /etc/resolv.conf
需要说明的是,很多发行版(如Ubuntu 18.04+)会自动覆盖这个文件,如果想永久生效,最好在/etc/netplan/01-netcfg.yaml里给每块网卡加nameservers:
nameservers: addresses: [223.5.5.5, 114.114.114.114]
改完执行netplan apply,DNS生效后,你的网络访问能力才算完整了。
能上网但Linux SSH连接超时:服务端和防火墙的双重排查
网上很多朋友用云服务器时遇到过这种场景:服务器网页控制台能登录(VNC),但本机SSH连不上,提示Connection timed out,这类问题的根源不在网络层,而在服务监听和访问策略。
第一步:确认sshd服务是否活着
在云控制台或物理机器前,检查SSH服务状态:
systemctl status sshd # 或者Ubuntu/Debian系统用这个 systemctl status ssh
没运行的话启动它并设为开机自启:
systemctl start sshd systemctl enable sshd
顺手确认下SSH端口有没有被改动过,查看/etc/ssh/sshd_config里的Port设置,默认是22,如果改成了其他端口,连接时记得用-p参数指定:
ssh -p 2222 root@192.168.1.100
第二步:防火墙挡掉了入站连接
如果sshd服务正常,接下来就是防火墙,CentOS系统自带firewalld,很多云服务器默认会开启,检查一下:
# 查看防火墙状态 systemctl status firewalld # 查看是否放行了22端口 firewall-cmd --list-all
如果没有放行,执行:
firewall-cmd --permanent --add-port=22/tcp firewall-cmd --reload
Ubuntu系统用的多半是UFW:
sudo ufw allow 22/tcp sudo ufw reload
对于云服务器场景,还有个非常关键的坑是安全组策略,简米云、酷番云、华为云的控制台里都有“安全组”或“防火墙”配置,很多人改了服务器内部防火墙却忘了控制台里也要放行端口,这个配置项的检查比服务器本身更优先,因为安全组是云平台在网络层面直接拦截的。
第三步:SELinux的无差别攻击
CentOS和RHEL系服务器连不上时,还有一个隐藏元凶是SELinux,临时测试关闭它:
setenforce 0
如果关闭后SSH连接恢复正常,说明是SELinux策略对SSH服务做了拦截,永久关闭的话,改/etc/selinux/config,把SELINUX=enforcing改成SELINUX=disabled,完全关闭SELinux并非最优解,如果你有精力,可以学学audit2allow定制策略;但大多数运维实操中,都会直接把SELinux设为disabled来消除排查变量。
Ubuntu桌面环境连接不上WiFi:单独梳理的无线网卡排查
用过Ubuntu桌面版的用户,基本都经历过WiFi连不上或连上了没网的时刻,这类问题的排查思路比有线网卡稍复杂。
确认无线网卡驱动是否加载
首先确认硬件有没有被系统识别到:
lspci | grep -i network # 笔记本无线网卡大概率会显示类似 Intel WiFi 6 AX200 或 Realtek等字样
如果输出里空空如也,说明驱动没装上,这种情况通常是USB无线网卡常见,特别是某些Realtek芯片的USB网卡,官方驱动只支持Windows,Linux下要装第三方驱动,确认方法:
lsusb
看到你的网卡设备名后,去系统日志查驱动状态:
dmesg | grep -i wireless dmesg | grep -i firmware
如果日志里出现firmware not found或failed to load这类字样,就是缺驱动固件,这里没有一键万能药,因为不同网卡芯片的驱动安装方法差异很大,但基本套路是:不建议去官网下载Linux包,直接通过发行版自带的官方软件源搜驱动固件更稳妥,Ubuntu系统用ubuntu-drivers devices命令就能看到系统推荐的驱动列表。
用nmcli命令行快速连WiFi
如果你的Ubuntu桌面环境网络图标不显示或面板丢了,直接用命令行连接WiFi才是王道:
# 查看可用WiFi热点 nmcli dev wifi list # 连接某个WiFi,密码交接给命令处理 nmcli dev wifi connect "路由器名称" password "你的WiFi密码"
连接成功后,用ip addr确认有没有拿到IP地址,如果拿到了IP却上不了网,再检查路由和DNS,参照前面有线网络的排查方法。
无线网络安全方式的兼容性问题
有些老笔记本电脑用WPA2加密的路由器连不上,但同一块网卡连开放网络又没问题,这属于无线网卡驱动对某些加密协议支持不完整导致的,大多发生在老旧网卡兼容新路由器的场景,解决思路是,在路由器管理后台把无线模式从“混合模式”改为“仅WPA2-PSK AES”,能解决一批奇怪的兼容问题,如果还不行,大概率是网卡太老,换一块外接USB无线网卡(RTL8812AU芯片的这种)成本比折腾驱动低得多。
Linux服务器网络故障排查顺序表:按顺序来不会错
把上面所有场景汇总成一个排查顺序表,按顺序操作,能少走很多弯路。
| 步骤 | 具体命令或操作 | 正常状态 | |
|---|---|---|---|
| 1 | 物理链路 | ethtool eth0 或查看网口指示灯 |
Link detected: yes |
| 2 | 网卡IP | ip addr show |
有inet条目,IP正确 |
| 3 | 默认路由 | ip route show |
有default条目,网关正确 |
| 4 | DNS解析 | cat /etc/resolv.conf |
nameserver非空且可连通 |
| 5 | 公网连通性 | ping -c 4 114.114.114.114 |
丢包率0% |
| 6 | SSH服务状态 | systemctl status sshd |
active (running) |
| 7 | SSH端口监听 | ss -tlnp | grep 22 |
LISTEN 状态 |
| 8 | 本地防火墙 | firewall-cmd --list-all 或 ufw status |
22端口放行 |
| 9 | 云平台安全组 | 登录云控制台查看入方向规则 | 22端口放行 |
只要表格里的九个步骤全部正常,Linux服务器没网的问题就基本不存在了。
Q&A:linux没有网络怎么连接服务器的常见疑问
按上面排查了所有步骤,为什么Linux SSH连接还是超时?
如果你确认网卡、路由、DNS、防火墙都没问题,考虑检查下/etc/ssh/sshd_config里是否有ListenAddress配置限制绑定IP,让SSH只能从某个特定IP访问,还有/etc/hosts.allow和/etc/hosts.deny两个文件也会影响连接,另外排查下客户端所在网络是否禁用了外网SSH访问,有些公司内网会来限制这一点。
虚拟机里的Linux怎么设置网络才能访问外网和宿主机?
虚拟机网络模式有桥接、NAT和仅主机三种选择,要在虚拟机能上网且宿主机能访问虚拟机,优先用桥接模式,让虚拟机直接获取局域网IP,和宿主机在同一网段,用NAT模式时虚拟机可以上网,但宿主机要访问虚拟机里的服务需要做端口转发,简单场景推荐桥接模式,配置低于传统方案,在同网段内互联互通是最省心的。
公网服务器IP可以ping通,但网站和SSH都连不上,是什么原因?
对外开放的端口被云平台的安全组策略拦截了,这个问题在常见的云服务器商都很普遍,登录控制台找到实例,进入“安全组”或“防火墙”规则列表,确认出入口方向上放行了服务所需的端口,不同厂商控制台界面差异较大,但功能入口名称基本一致,可以尝试临时放通所有出入方向端口测试,确认问题后再收紧规则到最小权限范围。
最后送你一条最核心的实践经验:Linux网络排查的本质就是逐层验证数据链路从网卡一路通畅到应用服务,物理层、链路层、网络层、传输层、应用层,一层一层验证下去,没有玄学,如果把所有命令都跑了一遍还是没解决,别忘了一条原始但有效的方法,重启虚拟机或服务器,很多配置文件的重载逻辑在重启后会重新生效,按照这套思路排查,绝大多数Linux网络连接问题都能在十分钟内定位到根因。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/608778.html




