Linux网卡初始化涉及硬件识别、驱动加载、配置设置等多个步骤,以下是详细流程及相关扩展知识:
1. 硬件识别与驱动加载
内核检测硬件:系统启动时,内核通过PCI/PCIe子系统识别网卡设备(如使用`lspci | grep -i ethernet`查看)。对于USB或旧式ISA网卡,需对应子系统支持。
驱动匹配:内核根据设备ID(Vendor/Device ID)自动加载驱动模块,常见驱动如`e1000`(Intel千兆)、`igb`(Intel万兆)、`r8169`(Realtek)。若驱动未自动加载,需手动加载:
bash
modprobe <驱动名> # 例如 modprobe igb
驱动缺失处理:若内核无内置驱动,需编译第三方驱动(如某些无线网卡需DKMS动态编译)。
2. 网络接口命名规则
传统命名:旧版Linux使用`eth0`、`eth1`等名称。
Predictable命名:现代系统基于固件/拓扑命名(如`enp3s0`表示PCI总线3插槽0)。可通过`/etc/default/grub`修改`GRUB_CMDLINE_LINUX`添加`net.ifnames=0`恢复传统命名。
3. 配置网络参数
临时配置:使用`ip`或`ifconfig`命令(后者已逐步淘汰):
bash
ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up
永久配置:依发行版选择配置文件:
- Debian/Ubuntu:`/etc/network/interfaces`:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
- RHEL/CentOS:`/etc/sysconfig/network-scripts/ifcfg-eth0`:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
- NetworkManager:通过`nmcli`或`nmtui`工具配置。
4. DNS与路由设置
DNS配置:编辑`/etc/resolv.conf`(注意NetworkManager可能覆盖),或通过`/etc/netplan/*.yaml`(Ubuntu)指定。
静态路由:使用`ip route add`或`route`命令,或在配置文件中添加`up route add -net 10.0.0.0/8 gw 192.168.1.1`。
5. 服务管理
重启网络服务:
- Systemd系统:`systemctl restart NetworkManager` 或 `systemctl restart networking`。
- 传统init系统:`service network restart`。
6. 高级功能
绑定(Bonding):多网卡聚合需内核模块支持,配置示例:
bash
modprobe bonding mode=802.3ad
echo "alias bond0 bonding" >> /etc/modprobe.d/bonding.conf
VLAN配置:加载8021q模块后创建虚拟接口:
bash
ip link add link eth0 name eth0.100 type vlan id 100
7. 故障排查
查看日志:`dmesg | grep eth0`或`journalctl -u NetworkManager`。
链路测试:`ethtool eth0`检查速率/双工,`ping`测试连通性。
防火墙影响:确认`iptables`/`nftables`或`firewalld`未拦截流量。
8. 虚拟化与云环境
KVM/QEMU:虚拟网卡通常使用`virtio`驱动(需加载`virtio_net`模块)。
云平台:AWS/Alicloud等可能依赖`ena`或`ixgbevf`驱动,需安装Cloud-Init处理元数据。
9. 无线网卡初始化
需额外步骤:`iwconfig`扫描SSID,`wpa_supplicant`配置WPA认证,示例:
bash
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B
dhclient wlan0
10. 自动化与工具
DHCP自动获取:配置文件中设置`BOOTPROTO=dhcp`,或使用`dhclient eth0`。
网络管理器:`nmcli dev status`查看设备状态,`nmcli con add`创建新连接。
通过以上步骤可完成Linux网卡初始化,实际需根据硬件类型、发行版和网络环境调整。现代发行版倾向于使用NetworkManager或systemd-networkd简化管理,但手动配置仍适用于服务器或无GUI环境。