Linux系统的网络配置,对刚接触它的人来说,可能像是一堵墙。很多人装好系统后发现上不了网,第一反应就是“是不是系统坏了”。其实不然,Linux的网络配置虽然和Windows不同,但逻辑清晰,只要掌握几个核心命令和文件,就能让机器顺利联网。

配置文件到底在哪改

Linux的网络配置不像Windows那样有个图形化的控制面板,大部分设置都藏在文本文件里。不同发行版的位置不太一样linux上网配置,但原理相通。

在Ubuntu或Debian这类系统上,网络配置文件主要在/etc/netplan/目录下,文件名通常是01-network-manager-all.yaml或者类似的名字。这是一份YAML格式的文件,看起来像这样:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

这个配置的意思是说,让名为eth0的网卡通过DHCP自动获取IP地址。如果你的网络环境有路由器自动分配IP,把dhcp4设成true就行。

如果你用的是CentOS或者Fedora,配置文件在/etc/sysconfig/network-scripts/里,文件名是ifcfg-eth0这种格式。里面的内容更直观一些:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

把BOOTPROTO改成static就可以设置静态IP,同时要加上IPADDR、NETMASK、GATEWAY这些参数。每次改完文件,记得重启网络服务或者用命令让配置生效。

命令行工具怎么用

对于没有图形界面的服务器,或者你更习惯用命令行,掌握几个工具就能搞定网络。

ip命令是现在推荐使用的工具,比老式的ifconfig更强大。想看当前网络状态,输入ip addr,它会显示所有网卡和对应的IP地址。想激活或关闭网卡,用ip link set eth0 upip link set eth0 down

设置IP地址可以用ip addr add 192.168.1.100/24 dev eth0,但这样只是临时生效,重启后就会丢失。想永久生效,还是得改配置文件。

nmcli是NetworkManager的命令行工具,很多桌面版Linux都自带。输入nmcli device status可以查看所有网络设备的状态。用nmcli connection show能看到当前激活的连接。添加一个新连接用nmcli connection add con-name mynet type ethernet ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1,之后用nmcli connection up mynet激活。

对于无线网络,nmcli也能搞定。nmcli device wifi list扫描附近的WiFi,然后用nmcli device wifi connect SSID password 密码连接。这种操作比去翻图形界面快得多。

静态IP和DNS怎么手动设置

家里或者公司网络需要固定IP时,手动设置就是必须会的技能。

在Ubuntu的netplan配置里,把dhcp4改成false,然后加上addresses和gateway4:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]

这里的nameservers就是DNS服务器地址,填两个是为了防止其中一个挂了没法解析域名。

在CentOS里,改ifcfg-eth0文件:

DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
ONBOOT=yes

DNS也可以在/etc/resolv.conf里手动添加,但这个文件可能会被系统覆盖,所以更稳妥的做法是在网卡配置文件里写。

改完配置后,执行netplan apply(Ubuntu)或者systemctl restart network(CentOS),新配置就能生效。如果网络没断,试试ping 8.8.8.8看看能不能通,通了说明IP设置没问题,再ping一下百度域名,能通说明DNS也正常。

网络不通怎么排查原因

配置完上不了网,别急着重装系统,一步一步排查就好。

先看物理连接。插网线的话linux上网配置,网口灯亮不亮?用无线的话,信号强度怎么样?很多时候问题出在网线没插好或者路由器的网口坏了。

然后检查网卡状态。ip link看看网卡是不是UP状态,如果是DOWN,用ip link set eth0 up激活。如果网卡根本没被识别,可能是驱动没装好,用lspci | grep Ethernet或者lsusb查看硬件是否被系统认出来了。

接着看IP地址。ip addr确认有没有拿到正确的IP。如果是DHCP,但没拿到地址,试试dhclient eth0手动请求一次IP。拿不到IP可能是路由器DHCP池满了,或者网线有问题。

最后测试网络连通性。先ping网关,比如ping 192.168.1.1,不通说明局域网内就有问题。网关通了再ping外网IP,比如ping 8.8.8.8,不通说明路由或者防火墙有问题。外网IP通了但域名ping不通,那就是DNS配置错了。

还有个常见坑,就是防火墙。iptables -L或者ufw status看看防火墙规则,有时候默认规则太严linux命令行和shell脚本编程宝典,会拦截所有流量。临时关掉防火墙试一下,能通的话再一条一条加允许规则。

Linux上网配置说到底就是三个环节:网卡认出来没、IP配没配对、路由和DNS正不正常。把这三个环节弄明白,不管用什么发行版,都能让机器稳稳连上网。下次遇到上不了网的情况,别慌,按照这个顺序一步步查常用linux系统,问题总能找到。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复