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天前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
9天前
|
消息中间件 安全 Linux
服务器(Linux)在线下载activeMQ以及配置打开
服务器(Linux)在线下载activeMQ以及配置打开
20 3
|
9天前
|
Ubuntu Linux 编译器
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
|
1天前
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
1天前
|
存储 网络协议 Unix
【Linux 网络】网络编程套接字 -- 详解
【Linux 网络】网络编程套接字 -- 详解
|
1天前
|
存储 网络协议 Linux
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
|
1天前
|
存储 网络协议 安全
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
|
7天前
|
运维 网络协议 Linux
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
|
9天前
|
网络协议 Linux 网络架构