Linux系统Ubuntu 22.04.3 LTS解决重启后桥接网络无法连接

1,994 阅读3分钟

一.问题描述

1.虚拟机配置远程访问

在虚拟机上搭建好一台服务器,配置好SSH访问和允许一些特定端口,如远程ssh 22端口,mysql服务3306端口,设置ufw防火墙允许端口访问。

image-20240302142527568.png

image-20240302142327951.png

通过配置虚拟网络后,配置远程SSH访问端口为22

2.重启网络失效,无法自启动网络服务

虚拟机重启后,使用ifconfig发现只有本地环回地址,无法使用网络

ifconfig eth0
​
root@tao-virtual-machine:/# ifconfig etho0
etho0: 获取接口信息时发生错误: Device not found
​

image-20240302143010594.png

二.问题分析

该系统服务器搭建已经有一段时间了,使用是正常的,突然网络就无法启动,外部配置未发生改变

第一个思路,考虑的是网络环境的变化,是否连接的外部网络做了限制(因为本人在保密单位工作,对网络环境很敏感)

第二个思路,系统配置因为切换过某些未注意的事务,其实大概率可能是这个原因,最后还是未完美定位到底是哪块出现问题

网卡未随系统启动而启动,导致无法访问外部网络,这是主要问题

三.解决方案

1.临时解决

在root用户下执行网络命令,默认为只要能启动网卡,皆为解决方案

/sbin/dhclient

其实不是接口不存在,只是接口没有UP。回到图形界面,发现联网时要先启用网络,启用网络时会调用/sbin/dhclient

执行该命令后网卡启动

image-20240302144249342.png

缺点是,网卡启动仅是当次,重启后若要连接网络需要重新执行该命令,这只是暂时的解决方案

3.永久解决

永久解决的思路已经确定了,就是设置服务器重启后,网卡设置自启动

关于dhclient:

1.dhclient是一个在Linux系统上实现DHCP协议的客户端程序。它是ISC DHCP客户端的一部分,用于在系统启动时或网络环境变化时向DHCP服务器请求并获取配置信息。 2.dhclient负责与DHCP服务器通信,协商IP地址、子网掩码、网关等配置参数,并将这些配置应用到系统网络接口。

可以使用systemd来实现开机自动开启网卡并启动dhclient服务。以ens33网卡为例,步骤如下:

1.打开终端,并切换到root用户或使用sudo命令以管理员权限运行以下命令。创建一个systemd单位文件,用于自定义开机启动服务。

2.使用文本编辑器(如vi、nano等)创建一个新的文件,并命名为ens33-dhclient.service。命令如下:

vi /etc/systemd/system/ens33-dhclient.service

3.在打开的文件中,输入以下内容:

[Unit]
Description=Enable ens33 network interface and start dhclient
After=network.target
 
[Service]
Type=oneshot
ExecStart=/sbin/ifconfig ens33 up
ExecStart=/sbin/dhclient ens33
 
[Install]
WantedBy=default.target

上述配置文件中,ExecStart指定了需要执行的命令。第一个ExecStart命令用于启动ens33网卡,第二个ExecStart命令用于启动dhclient服务。

4.保持并关闭该文件;

5.运行以下命令,重新加载systemd单位文件系统:

systemctl daemon-reloa

6.运行以下命令,启用并启动新创建的服务:

systemctl enable ens33-dhclient.service
systemctl start ens33-dhclient.service

7.确认服务是否开启成功,可以使用如下命令:

systemctl status ens33-dhclient.service