Linux网络连接与设置是系统管理中的基础操作,涉及网络接口配置、IP地址管理、路由规则、DNS解析等多个方面,本文将从Linux网络模型、有线/无线连接配置、配置文件管理、常用命令及故障排查等角度,详细说明如何在Linux系统中进行网络设置。
Linux网络基础
Linux网络基于TCP/IP协议栈,通过分层模型(物理层、数据链路层、网络层、传输层、应用层)实现数据通信,系统中的网络接口(如以太网、无线网卡)是数据交换的入口,每个接口需配置IP地址(IPv4/IPv6)、子网掩码、网关等参数,才能与局域网或互联网通信,DNS服务器负责域名解析,将域名(如www.baidu.com)转换为IP地址,确保网络访问的可用性。
有线网络连接设置
有线网络是最常见的连接方式,通常通过以太网接口(如eth0
、ens33
)实现,Linux中有两种主流配置方式:使用NetworkManager(图形化/命令行工具)或传统配置文件(如ifcfg
)。
使用NetworkManager(推荐)
NetworkManager是大多数现代Linux发行版(如Ubuntu、CentOS 8+)默认的网络管理工具,支持动态配置(DHCP)和静态IP设置。
- 图形化配置:通过
nm-connection-editor
打开网络连接工具,选择有线连接,点击“编辑”在“IPv4设置”中配置方法:- DHCP:自动获取IP地址、网关和DNS(默认方式)。
- 手动:输入固定IP地址、子网掩码、网关和DNS服务器(如IP:192.168.1.100,掩码:255.255.255.0,网关:192.168.1.1,DNS:8.8.8.8)。
- 命令行配置(nmcli):
# 查看网络接口 nmcli dev show # 创建有线连接(默认已存在,可编辑) nmcli con mod "有线连接" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 114.114.114.114" # 启用连接 nmcli con up "有线连接"
传统ifcfg配置文件(适用于CentOS 7及之前)
在/etc/sysconfig/network-scripts/
目录下创建或编辑ifcfg-eth0
文件(文件名需与接口名一致),内容如下:
TYPE=Ethernet BOOTPROTO=static # 静态IP,DHCP则改为dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=eth0 DEVICE=eth0 ONBOOT=yes # 开机自启 IPADDR=192.168.1.100 # IP地址 NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 网关 DNS1=8.8.8.8 DNS2=114.114.114.114
配置完成后,执行ifup eth0
启用接口,或systemctl restart network
重启网络服务。
无线网络连接设置
无线网络通过无线网卡接口(如wlan0
)连接,同样依赖NetworkManager管理。
- 扫描可用网络:
nmcli dev wifi list
- 连接到无线网络:
# 连接开放网络(无需密码) nmcli dev wifi connect SSID # 连接加密网络(WPA2/WPA3) nmcli dev wifi connect SSID password "password"
若无线网卡不被识别,需安装驱动(如
rtl8821ce
驱动可通过yum install kmod-rtl8821ce
安装)。
网络配置文件管理
不同Linux发行版的网络配置文件位置和格式有所不同,以下是主流发行版的对比:
发行版 | 配置工具 | 配置文件位置 | 示例文件格式 |
---|---|---|---|
Ubuntu 20.04+ | Netplan | /etc/netplan/*.yaml | YAML格式(见下文) |
CentOS 8+ | NetworkManager | /etc/NetworkManager/system-connections/ | ifcfg格式(文本文件) |
CentOS 7 | ifcfg | /etc/sysconfig/network-scripts/ | ifcfg格式(如上文) |
Netplan配置示例(Ubuntu 20.04+)
以/etc/netplan/01-netcfg.yaml
为例:
network: version: 2 renderer: networkd # 使用systemd-networkd渲染 ethernets: eth0: dhcp4: no # 禁用DHCP addresses: [192.168.1.100/24] # IP地址/掩码 gateway4: 192.168.1.1 # 网关 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS
配置后执行netplan apply
生效。
常用网络管理命令
Linux提供了丰富的命令行工具用于网络管理和故障排查:
命令 | 作用 | 示例 |
---|---|---|
ip |
查看/配置网络接口和路由 | ip addr show (查看IP);ip link set eth0 up (启用接口) |
nmcli |
NetworkManager命令行工具 | nmcli con show (查看连接);nmcli dev status (查看设备状态) |
ping |
测试网络连通性 | ping -c 4 baidu.com (发送4个包) |
traceroute |
跟踪网络路由路径 | traceroute 8.8.8.8 |
ss /netstat |
查看网络连接和端口 | ss -tulnp (显示监听的TCP/UDP端口) |
nslookup |
DNS查询工具 | nslookup www.baidu.com |
curl /wget |
下载网络资源或测试HTTP服务 | curl -I http://baidu.com (查看HTTP头) |
网络故障排查步骤
当网络连接异常时,可按以下步骤排查:
- 检查物理连接:确认网线是否插好(有线)、无线网卡是否启用(
ip link
查看接口状态)。 - 查看接口IP配置:执行
ip addr
,确认接口是否获取到IP(DHCP)或IP配置是否正确(静态)。 - 测试网关和互联网连通性:
ping 网关IP
(如ping 192.168.1.1
)测试局域网连通性;ping 8.8.8.8
测试互联网连通性。 - 检查DNS解析:执行
nslookup www.baidu.com
,若无法解析,可能是DNS配置错误或防火墙阻止。 - 查看防火墙和SELinux:
- Ubuntu:
sudo ufw status
(UFW防火墙); - CentOS:
firewall-cmd --list-all
(firewalld); - SELinux:
getenforce
(查看状态,临时关闭用setenforce 0
)。
- Ubuntu:
- 检查路由表:执行
ip route
,确认默认路由(default via 网关IP dev 接口名
)是否存在。
相关问答FAQs
Q1:如何在Linux中永久修改主机名?
A:永久修改主机名需结合发行版操作:
- Ubuntu 18.04+:
sudo hostnamectl set-hostname new_hostname
(立即生效,无需重启)。 - CentOS 7+:
sudo hostnamectl set-hostname new_hostname
,同时编辑/etc/hosts
文件,将0.0.1 localhost
改为0.0.1 localhost new_hostname
。 - 旧版系统:直接编辑
/etc/sysconfig/network
(CentOS 7前)或/etc/hostname
(Ubuntu 16.04+),添加HOSTNAME=new_hostname
,重启后生效。
Q2:如何为Linux系统添加静态路由?
A:静态路由用于指定特定网段的访问路径,添加方式有两种:
- 临时路由(重启失效):
# 添加路由:目标网段192.168.2.0/24,下一跳192.168.1.254,出口接口eth0 sudo ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0
- 永久路由:
- CentOS 7+:在
/etc/sysconfig/network-scripts/
下创建route-eth0
ADDRESS0=192.168.2.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.1.254
- Ubuntu 18.04+:在Netplan配置文件中添加
routes
字段:routes: - to: 192.168.2.0/24 via: 192.168.1.254 on-link: true
配置后执行
netplan apply
(Ubuntu)或systemctl restart network
(CentOS)生效。
- CentOS 7+:在
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25974.html