在Linux系统中,改变上网网卡通常涉及识别当前网络接口、配置目标网卡参数、调整路由策略等操作,具体方法需根据网络环境(如静态IP/DHCP)和发行版(Ubuntu/CentOS等)灵活调整,以下是详细操作步骤和注意事项。
识别当前网络状态与网卡信息
首先需确认当前系统中的网卡名称及网络配置状态,通过以下命令可查看所有网络接口及其IP信息:
ip a # 查看所有网卡名称(如ens33、eth0)及IP配置 ip route show # 查看当前路由表,确认默认网关指向的网卡 nmcli connection show # 列出NetworkManager管理的网络连接(适用于Ubuntu/CentOS 7+)
输出中ens33
状态为UP
且包含inet
地址,则表示当前该网卡为活动网卡;若默认网关通过ens33
转发,则该网卡为当前上网网卡。
临时切换上网网卡(无需重启)
若需临时指定某网卡为上网网卡(如测试备用网络),可通过修改路由表实现:
- 激活目标网卡(若未激活):
ip link set <网卡名> up # ip link set ens38 up
- 为目标网卡配置IP(若未配置):
ip addr add <IP地址/子网掩码> dev <网卡名> # ip addr add 192.168.1.100/24 dev ens38
- 添加默认网关(指向目标网卡所在网络):
ip route add default via <网关IP> dev <网卡名> # ip route add default via 192.168.1.1 dev ens38
- 验证切换:
ip route show # 确认默认网关是否指向目标网卡 ping 8.8.8.8 # 测试外网连通性
注意:临时配置在系统重启后会失效,需通过永久配置保存。
永久修改上网网卡配置
(一)基于NetworkManager的发行版(Ubuntu 18.04+/CentOS 7+)
NetworkManager是现代Linux发行版的默认网络管理工具,可通过命令行或图形界面配置:
-
命令行配置(nmcli):
- 查看目标网卡连接名称:
nmcli connection show
- 修改目标连接的IP配置(以静态IP为例):
nmcli con mod "<连接名>" ipv4.method manual ipv4.addresses <IP/掩码> ipv4.gateway <网关> ipv4.dns <DNS服务器> # nmcli con mod "ens38" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8
- 启动连接并设置自动连接:
nmcli con up "<连接名>" nmcli con mod "<连接名>" connection.autoconnect yes
- 禁用原上网网卡连接(避免冲突):
nmcli con down "<原连接名>" # nmcli con down "ens33"
- 查看目标网卡连接名称:
-
图形界面配置(nmtui):
- 执行
nmtui
命令,进入文本界面,选择“Edit a connection”→ 选择目标连接 → 修改IPv4配置 → 保存退出 → 激活连接。
- 执行
(二)基于传统配置文件的发行版(CentOS 6/Ubuntu 16.04及更早)
此类系统通过ifcfg
文件配置网卡参数:
- 定位配置文件:
ls /etc/sysconfig/network-scripts/ # 查找ifcfg-<网卡名>文件,如ifcfg-ens38
- 编辑目标网卡配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens38
添加/修改以下参数:
TYPE=Ethernet BOOTPROTO=static # 静态IP,DHCP则改为dhcp IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ONBOOT=yes # 开机自启
- 禁用原网卡配置文件(可选,避免IP冲突):
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
- 重启网络服务:
systemctl restart network # CentOS 7+ service networking restart # Ubuntu 16.04及更早
多网卡环境下的路由策略优化
若系统存在多张网卡,需确保路由策略正确,避免流量错误转发,可通过ip rule
添加策略路由,例如指定特定IP段通过目标网卡访问:
ip rule add from <源IP段> table <路由表号> pref 10000 # 添加策略 ip route add default via <目标网关> dev <目标网卡> table <路由表号> # 为指定表添加默认路由 ip route flush cache # 刷新路由缓存
永久保存需将规则写入/etc/rc.local
或NetworkManager的 dispatcher 脚本。
常用工具与命令速查
操作场景 | 命令/工具 | 说明 |
---|---|---|
查看网卡信息 | ip a / ifconfig |
显示网卡状态、IP地址、MAC地址等 |
查看路由表 | ip route show / route -n |
查看默认网关、目标网络等路由信息 |
激活/禁用网卡 | ip link set <网卡名> up/down |
临时启用或禁用网卡 |
配置静态IP(临时) | ip addr add <IP/掩码> dev <网卡名> |
临时为网卡分配IP,重启后失效 |
配置默认网关(临时) | ip route add default via <网关> dev <网卡名> |
临时添加默认网关 |
重启网络服务 | systemctl restart network |
CentOS 7+/Ubuntu 18.04+ |
图形化网络配置 | nmtui / gnome-control-center network |
文本/图形界面工具,适合新手 |
注意事项
- 避免IP冲突:修改IP前确保目标IP未被网络中其他设备使用,可通过
ping <IP>
测试。 - 备份配置文件:修改
ifcfg
文件前建议备份,避免配置错误导致网络中断。 - 防火墙与SELinux:CentOS系统需检查
firewalld
或iptables
是否阻止出站流量,必要时临时关闭测试:systemctl stop firewalld
。 - DHCP与静态IP:若网络环境为DHCP,确保目标网卡配置文件中
BOOTPROTO=dhcp
,避免手动IP冲突。
相关问答FAQs
Q1:修改网卡配置后无法上网,如何排查?
A:首先检查网卡状态:ip link show <网卡名>
,确认是否为UP
状态;其次查看IP配置:ip addr show <网卡名>
,确认IP、子网掩码是否正确;然后检查默认网关:ip route show | grep default
,确保网关可达(可通过ping <网关>
测试);最后检查DNS解析:ping 8.8.8.8
(测试外网连通性),ping www.baidu.com
(测试DNS解析),若DNS异常,修改/etc/resolv.conf
添加nameserver 8.8.8.8
。
Q2:如何让Linux在多网卡环境下优先使用特定网卡上网?
A:可通过设置路由表和策略路由实现优先级,优先使用ens38
,可执行以下步骤:
- 为
ens38
添加默认网关:ip route add default via 192.168.1.1 dev ens38
- 添加策略路由,指定所有流量优先从
ens38
发出:ip rule add pref 10000 from all lookup main ip route add default dev ens38 table main
- 永久保存:将上述命令写入
/etc/rc.local
,并赋予执行权限:chmod +x /etc/rc.local
。
若NetworkManager管理网卡,可通过修改连接优先级:nmcli con mod "<连接名>" connection.autoconnect-priority 100
(数值越大优先级越高)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/30751.html