在Linux系统中配置多网口涉及硬件识别、网络接口管理、IP分配及路由设置等多个环节,需根据实际场景(如服务器、网关、负载均衡等)选择不同方案。以下是详细配置步骤及相关技术细节:
一、硬件识别与接口确认
1. 查看网口信息
使用 `lshw -C network` 或 `ip link show` 列出所有网络接口,确认物理网卡(如eth0、enp3s0)和虚拟接口(如bond0、vlan100)。
注意:现代Linux可能使用Predictable Network Interface Names(如enp1s0f1),可通过编辑`/etc/default/grub`修改`GRUB_CMDLINE_LINUX`恢复传统命名(如eth0)。
2. 驱动加载检查
通过`lsmod | grep <驱动名>`(如e1000、igb)确认网卡驱动是否加载,未加载时需手动`modprobe`或编译驱动。
二、网络接口静态IP配置
1. 传统ifconfig方式(逐步淘汰)
bash
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
route add default gw 192.168.1.1
缺点:重启后失效,需写入启动脚本。
2. netplan(Ubuntu 18.04+)
编辑 `/etc/netplan/01-netcfg.yaml`,示例配置双网口:
yaml
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
eth1:
addresses: [10.0.0.2/24]
执行 `netplan apply` 生效。
3. NetworkManager(桌面环境)
使用`nmcli`命令行工具或GUI界面:
bash
nmcli con add type ethernet ifname eth0 con-name eth0-static ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1
三、高级网络配置
1. 多网口绑定(Bonding)
创建绑定接口实现冗余或负载均衡,编辑`/etc/modprobe.d/bonding.conf`:
bash
options bonding mode=4 miimon=100 # mode 4: 802.3ad(LACP)
netplan配置示例:
yaml
bonds:
bond0:
interfaces: [eth0, eth1]
parameters:
mode: 802.3ad
lacp-rate: fast
2. VLAN隔离
添加VLAN接口(需交换机支持802.1Q):
bash
ip link add link eth0 name eth0.100 type vlan id 100
ip addr add 192.168.100.1/24 dev eth0.100
3. 策略路由(多网关场景)
基于源IP或端口选择路由表(需`iproute2`):
bash
ip rule add from 192.168.1.100 lookup table 100
ip route add default via 10.0.0.1 dev eth1 table 100
四、防火墙与流量控制
1. iptables/nftables规则
根据网口过滤或转发流量,例如允许eth0到eth1的NAT:
bash
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
2. TC限速
使用`tc`限制某个网口的带宽:
bash
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
五、故障排查工具
连通性测试:`ping -I eth0 8.8.8.8`(指定网口)
路由检查:`ip route get 8.8.8.8`
MTU检测:`ping -s 1472 -M do 192.168.1.1`(DF分片测试)
抓包分析:`tcpdump -i eth0 -w capture.pcap`
六、其他注意事项
1. 物理层检查:使用`ethtool eth0`确认网卡速率、双工模式,排除硬件故障。
2. IPv6支持:若需禁用IPv6,可添加`net.ipv6.conf.all.disable_ipv6=1`到`/etc/sysctl.conf`。
3. 持久化配置:CentOS/RHEL需`nmcli con up
4. 云计算环境:AWS/Aliyun等云主机可能需修改安全组或弹性网卡绑定。
通过上述方法可灵活应对多网口场景,如构建路由器、高可用集群或网络隔离环境。实际部署时建议结合`systemd-networkd`或`ifupdown`工具链,并参考发行版官方文档调整细节。