Linux(20) Ubuntu 20.04 网络接口自动切换路由配置

简介: Linux(20) Ubuntu 20.04 网络接口自动切换路由配置

当时调试rockchip rk3399 linux ubuntu rootfs遇到的问题 ,  

在Ubuntu 20.04系统中,如果有两个以太网口,例如eth0和eth1,可能会遇到一个问题:

当eth0网线接到eth1后无法上网。可以通过执行以下命令来手动切换路由:

ip route del default via 192.168.1.1 dev eth0

ip route del 192.168.1.0/24 dev eth0

ip route del 192.168.1.0/24 dev eth1

ip route add default via 192.168.1.1 dev eth1


ip route del default via 192.168.1.1 dev eth1

ip route del 192.168.1.0/24 dev eth1

ip route add 192.168.1.0/24 dev eth0

ip route add default via 192.168.1.1 dev eth0

然而,这种方法需要手动执行,不够方便。实际上,可以使用Linux中的网络管理工具,如NetworkManager或systemd-networkd来实现自动切换路由。

使用NetworkManager或systemd-networkd实现自动切换路由

安装并启用NetworkManager或systemd-networkd

sudo apt install network-manager

sudo systemctl enable NetworkManager.service

sudo systemctl start NetworkManager.service

或者

sudo apt install systemd-networkd

sudo systemctl enable systemd-networkd.service

sudo systemctl start systemd-networkd.service

配置网络接口文件 /etc/network/interfaces

在该文件中添加以下内容:

auto eth0

iface eth0 inet dhcp


auto eth1

iface eth1 inet dhcp

配置NetworkManager或systemd-networkd

如果使用NetworkManager,则需要编辑 /etc/NetworkManager/conf.d/10-globally-managed-devices.conf 文件,并将其设置为 false 以确保所有网络设备都由NetworkManager管理。

sudo nano /etc/NetworkManager/conf.d/10-globally-managed-devices.conf


[main]

plugins=keyfile


[keyfile]

unmanaged-devices=interface-name:eth0;interface-name:eth1

如果使用systemd-networkd,则需要创建一个文件 /etc/systemd/network/eth0.network和/etc/systemd/network/eth1.network,内容如下:

/etc/systemd/network/eth0.network:

[Match]

Name=eth0


[Network]

DHCP=yes

Gateway=192.168.1.1

DNS=8.8.8.8

/etc/systemd/network/eth1.network:

[Match]

Name=eth1


[Network]

DHCP=yes

Gateway=192.168.1.1

DNS=8.8.8.8

重启网络服务

sudo systemctl restart NetworkManager.service

或者

sudo systemctl restart systemd-networkd.service

这样配置后,如果一个接口的网络不可用,则系统将自动切换到另一个接口。

设置开机启动

如果希望在Ubuntu 20.04上设置systemd-networkd.service

开机启动,可以按照以下步骤操作:

创建systemd-networkd.service的符号链接

sudo ln -s /lib/systemd/system/systemd-networkd.service /etc/systemd/system/multi-user.target.wants/

启用systemd-networkd.service

sudo systemctl enable systemd-networkd.service

禁用旧的网络服务(如果有)

sudo systemctl disable NetworkManager.service

重新启动系统以应用更改

sudo reboot

这将确保systemd-networkd.service在系统启动时自动启动,并替代其他网络服务。请注意,禁用旧的网络服务可能会导致无法访问互联网。在进行此操作之前,请确保已正确配置systemd-networkd。

相关文章
|
3月前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
714 1
|
4月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
2月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
236 11
|
3月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
276 18
|
3月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
347 17
|
3月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
421 7
|
3月前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
|
4月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
296 16
|
4月前
|
缓存 监控 Ubuntu
在Ubuntu 16.04上配置GitLab Runner以激活GitLab CI/CD流程
完成以上步骤后,每当代码被推送到远端仓库中相对应分支上时,GitLb CI / CD 流水线就会自动触发,并由之前注册好了 GitLb runner 的机器去完成定义好了 ` .gitlabcicd.yml ` 文件里面定义好各种任务(如编译测试部署等).
200 13
|
4月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
220 13