在Linux系统中,网卡配置是网络管理的基础操作,正确的网卡配置确保服务器或主机能够正常接入网络并进行通信,本文将详细介绍Linux网卡配置的完整流程,包括查看网卡信息、配置静态/动态IP地址、管理网络服务、高级配置(如多网卡绑定、VLAN)及常见故障排查方法,帮助用户系统掌握Linux网卡配置技能。
查看网卡基本信息
在配置网卡前,需先了解当前系统的网卡状态和基本信息,Linux提供了多种命令用于查看网卡信息:
-
ip a
(推荐):ip
命令是ifconfig
的替代工具,功能更强大,执行ip a
可显示所有网络接口的详细信息,包括接口名称(如ens33
、eth0
)、状态(UP
/DOWN
)、MAC地址、IP地址(IPv4/IPv6)、子网掩码等。2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet6 fe80::xx:xx:xx:xx:xx:xx/64 scope link valid_lft forever preferred_lft forever
其中
UP
表示网卡已启用,inet
行显示IPv4地址及子网掩码(/24
表示子网掩码为255.255.0
)。 -
ifconfig
:传统命令,需安装net-tools
包(yum install net-tools
或apt install net-tools
),执行ifconfig
显示信息与ip a
类似,但功能较少,部分新系统默认未安装。 -
lspci | grep Ethernet
:查看网卡硬件信息,包括网卡型号和制造商,适用于排查硬件兼容性问题。
配置静态IP地址
静态IP地址适用于服务器等需要固定网络环境的场景,配置方法因Linux发行版而异,主要分为传统网络服务(network-scripts
)和现代网络管理工具(NetworkManager
)两种方式。
(一)传统方式:基于network-scripts
(适用于CentOS/RHEL 7及之前版本)
传统方式通过编辑网卡配置文件实现,配置文件位于/etc/sysconfig/network-scripts/
目录下,命名规则为ifcfg-<接口名>
(如ifcfg-ens33
)。
-
创建/编辑配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33 ``` 示例如下:
TYPE=Ethernet # 网络类型,通常为Ethernet
BOOTPROTO=static # 配置方式,static为静态IP,dhcp为动态IP
NAME=ens33 # 网卡名称(与接口名一致)
DEVICE=ens33 # 网卡设备名
ONBOOT=yes # 开机自启网卡(yes为启用,no为禁用)
IPADDR=192.168.1.100 # 静态IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 默认网关
DNS1=8.8.8.8 # DNS服务器
DNS2=114.114.114.114 # 备用DNS服务器 -
重启网络服务:
systemctl restart network # 重启网络服务
若提示“Failed to restart network.service”,可能是
NetworkManager
服务冲突,需先执行systemctl stop NetworkManager
,再重启network
。
(二)现代方式:基于NetworkManager
(适用于CentOS/RHEL 8+、Ubuntu 18.04+等)
NetworkManager
是主流Linux发行版默认的网络管理工具,支持命令行(nmcli
)和图形化(nmtui
/nm-connection-editor
)配置。
-
使用
nmcli
命令行配置:-
添加静态连接:
nmcli con add type ethernet con-name eth0 ifname ens33 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"
参数说明:
type ethernet
(以太网类型)、con-name eth0
(连接名称,可自定义)、ifname ens33
(网卡接口名)、ipv4.method manual
(静态IP模式)、ipv4.addresses
(IP地址/子网掩码)、ipv4.gateway
(网关)、ipv4.dns
(DNS服务器,多个DNS用空格分隔)。 -
激活连接:
nmcli con up eth0
-
-
使用
nmtui
文本界面配置:
执行nmtui
,进入文本界面后选择“Edit a connection”→ 选择网卡→ 选择“Show”→ 修改IPv4配置→ 设置“Automatic IP”为“Disabled”→ 手动输入IP、网关、DNS→ 保存并退出。
配置动态IP地址(DHCP)
动态IP地址适用于客户端或临时网络环境,配置更简单:
- 传统方式:修改
ifcfg-<接口名>
文件中的BOOTPROTO=dhcp
,确保ONBOOT=yes
,然后重启网络服务。 - 现代方式:
nmcli con mod eth0 ipv4.method auto # 设置为自动获取IP nmcli con up eth0 # 激活连接
网络服务管理
Linux网络服务分为传统network
服务和现代NetworkManager
服务,需根据配置方式选择管理工具:
服务名称 | 适用场景 | 常用命令 |
---|---|---|
network |
传统network-scripts |
systemctl start/stop/restart network |
NetworkManager |
现代发行版默认 | systemctl start/stop/restart NetworkManager |
- 检查服务状态:
systemctl status network # 查看传统网络服务状态 systemctl status NetworkManager # 查看NetworkManager状态
- 设置开机自启:
systemctl enable network # 传统服务开机自启 systemctl enable NetworkManager # NetworkManager开机自启
高级配置
(一)多网卡绑定(Bonding)
多网卡绑定通过将多个物理网卡绑定为一个逻辑接口,提高网络带宽和可用性。
-
加载
bonding
模块:echo "bonding" > /etc/modules-load.d/bonding.conf
-
创建bond接口配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 TYPE=Bond BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 ONBOOT=yes BONDING_OPTS="mode=0 miimon=100" # mode=0(负载均衡),miimon=100(链路检测间隔100ms)
-
配置物理网卡:
修改ifcfg-ens33
和ifcfg-ens34
(假设绑定两块网卡),添加:MASTER=bond0 SLAVE=yes
-
重启网络服务:
systemctl restart network
(二)VLAN配置
VLAN(虚拟局域网)可将物理网络划分为多个逻辑网络,适用于隔离不同业务流量。
-
安装VLAN工具:
yum install vlan -y # CentOS/RHEL apt install vlan -y # Ubuntu
-
创建VLAN接口:
vim /etc/sysconfig/network-scripts/ifcfg-ens33.10 ``` 以VLAN ID 10为例):
DEVICE=ens33.10
BOOTPROTO=static
IPADDR=192.168.10.100
NETMASK=255.255.255.0
ONBOOT=yes
VLAN=yes -
重启网络服务:
systemctl restart network
故障排查
-
无法获取IP地址:
- 检查网线是否连接正常(
ethtool ens33
查看网卡状态,Link detected: yes
表示链路正常)。 - 检查DHCP服务器是否正常运行(
tcpdump -i ens33 -vvv port 67
抓包查看DHCP请求)。
- 检查网线是否连接正常(
-
IP配置后无法上网:
- 检查网关是否可达:
ping 192.168.1.1
(网关IP)。 - 检查DNS解析:
nslookup www.baidu.com
,若无法解析,修改DNS配置。 - 检查防火墙规则:
firewall-cmd --list-all
,确认是否阻止出站流量。
- 检查网关是否可达:
-
网卡未激活:
- 执行
ip link set ens33 up
手动启用网卡,或检查ifcfg
文件中的ONBOOT=yes
。
- 执行
相关问答FAQs
问题1:配置静态IP后无法上网,可能的原因及解决方法?
答:可能原因包括:
- IP/子网掩码/网关配置错误:检查
IPADDR
、NETMASK
、GATEWAY
是否与网络环境匹配,例如子网掩码错误会导致无法跨网段通信。 - DNS配置问题:若无法解析域名,可尝试临时修改
/etc/resolv.conf
添加nameserver 8.8.8.8
,或通过nmcli
永久配置DNS。 - 网卡未激活或链路异常:执行
ip link
查看网卡状态,确保UP
;用ethtool ens33
检查Link detected
是否为yes
。 - 防火墙或安全组拦截:关闭防火墙测试(
systemctl stop firewalld
),或添加允许出站流量的规则。 - NetworkManager覆盖配置:若使用传统
network-scripts
,需确保NetworkManager
未接管网卡(nmcli con show
查看连接状态)。
问题2:如何永久修改主机名并关联到网卡配置?
答:
-
永久修改主机名:
- 使用
hostnamectl
命令(推荐):hostnamectl set-hostname "new_hostname"
,修改后立即生效,并持久化保存。 - 或直接修改
/etc/hostname
文件:echo "new_hostname" > /etc/hostname
,重启后生效。
- 使用
-
关联主机名到网卡配置(DHCP场景):
若通过DHCP获取IP,可在网卡配置中添加DHCP_HOSTNAME=new_hostname
,使DHCP服务器为主机名分配对应IP,传统方式编辑ifcfg-<接口名>
,现代方式通过nmcli
:nmcli con mod eth0 ipv4.dhcp-hostname new_hostname nmcli con up eth0
手动配置静态IP时,主机名无需关联网卡,但建议在
/etc/hosts
中添加主机名与IP的映射:echo "192.168.1.100 new_hostname" >> /etc/hosts
。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/21232.html