当时调试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。