怎么修改虚拟机上Ubuntu的ip为静态ip
引言
- 查看自己当前Ubuntu的版本
- 如何修改虚拟机上Ubuntu的IP为静态ip
调试程序的时候,发现关机后再开机有时候虚拟机的ip会发生变化,所以为了不再去代码中修改通信的ip的地址,需要将虚拟机的ip改为静态ip,这样ip就不会在关机后再开机变了。
IP为什么会发生变化,可以自己查阅原因。这里只做简述:一个主要原因是IP分配方式的不同。静态IP是手动分配给设备的固定地址,不会随时间或网络条件而改变。而DHCP(动态主机配置协议)则会自动为连接到网络的设备分配IP地址,这些地址可能是临时的,并且可能会随着设备的连接、断开或网络策略的变化而变化。
需要注意的是,即使使用DHCP,某些网络配置也可能允许为特定设备保留(或称为“绑定”)静态IP地址,这样即使设备重新连接,也会获得相同的IP地址。此外,IP地址的变化还可能受到网络策略、设备配置、路由器或交换机设置等多种因素的影响。
查看自己当前Ubuntu的版本
在自己的虚拟机的菜单栏中点击下拉箭头-》设置,弹出下面的弹窗,找到关于一栏,选中关于后,会在右侧显示Ubuntu的版本。如下图所示:
为什么要看Ubuntu的版本,是因为Ubuntu18.04版本及更新的版本是一种设置的方法,Ubuntu18.04之前的版本是另一种设置ip的方式。本文提到的设置ip的Ubuntu版本是ubuntu20.04.4.
如何修改虚拟机上Ubuntu的IP为静态ip
- 查询网络接口名称
ip addr //查看网络接口信息
回车后,在输出的信息中查看网络接口名称。
我的电脑回车后,显示下面的信息:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:f0:1f:fd brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.0.168/24 brd 192.168.0.255 scope global dynamic noprefixroute ens33
valid_lft 31890sec preferred_lft 31890sec
inet6 2408:8806:40:e209:39ef:4821:d88d:330b/64 scope global temporary dynamic
valid_lft 3599sec preferred_lft 3599sec
inet6 2408:8806:40:e209:33c0:55c4:ce24:daf2/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 3599sec preferred_lft 3599sec
inet6 fe80::952e:73f2:2075:13e1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
因为我要将192.168.0.168修改为静态ip,它对应的网络接口名称为ens33。
上面也可以看出广播地址:192.168.0.255。且现在输出信息中含有dynamic。是动态分配的ip地址。
- 查看网关
使用指令:
ip route //其中默认网关(通常是到0.0.0.0/0或::/0的路由)的IP地址就是您的网关。
回车后,我的电脑上显示的信息如下:
可以看出192.168.0.168的默认网关为192.168.0.1。
3.查看DNS服务器
使用指令:
cat /etc/resolv.conf //查看/etc/resolv.conf文件来找到当前设置的DNS服务器,nameserver行后面的IP地址就是DNS服务器的地址
回车后,出现下面的信息:
可以看到我的DNS服务器地址:127.0.0.53。
3. 编辑Netplan配置文件
使用文本编辑器打开Netplan的配置文件。通常,Netplan的配置文件位于/etc/netplan/目录下,并以.yaml结尾。
先去查看自己的Ubuntu上/etc/netplan/下的文件名。使用指令:
ls /etc/netplan/ //查看自己的配置文件名,因系统不同会不同
回车后输出下面的信息:
用以下命令来查看和编辑01-network-manager-all.yaml文件。
sudo nano /etc/netplan/01-network-manager-all.yaml
回车后,会出现下面这样一个终端。我的终端刚打开之后只有三行。
network:
version: 2
renderer: NetworkManager
下方的图片中看到的后面其它行是我已经添加好的。
4. 修改配置文件
在上图打开的配置文件中,根据需求修改你的网络接口名称,并根据需要修改IP地址、子网掩码、网关和DNS服务器。
修改完如上图。
点击CTRL+O写入文件,然后出现写入的文件名,默认是打开的文件名,直接按回车键,保存好之后,点击CTRL+X退出该终端。
5. 应用修改的配置
使用下面的指令应用配置。
sudo netplan apply
- 验证新的ip
使用下面的指令查看ens33名称的ip设置。
ip addr show ens33 //这里的ens33是我的网络接口名称
- 验证修改后的ip是否可以使用
使用ping 来与其它的ip来ping通。
ping www.baidu.com
同时查看Ubuntu上菜单栏上的网络图标是否正常,我修改IP的配置后,网络图标上显示了一个?,ping百度的时候也出现了下面的错误。
是因为我将DNS服务器配置错了,我将DNS服务器配置为127.0.0.53,即
文件中的address下方的地址我只给写成了127.0.0.53。
gateway4: 192.168.0.1 # 设置新的默认网关
nameservers:
addresses:
- 127.0.0.53 # 设置DNS服务器
这样就会出现应用修改的配置后,Ubuntu上网络图标上显示了一个?。
将DNS服务器地址更改为 8.8.8.8 和 8.8.4.4(或其他您信任的 DNS 服务器地址),保存后应用配置。查看网络连接图标和 DNS 解析正常。
gateway4: 192.168.0.1 # 设置新的默认网关
nameservers:
addresses:
- 8.8.8.8 # 设置DNS服务器
- 8.8.4.4
此时网络图标显示正常,也可以ping通百度。静态ip配置完成。
此时再去查看ip addr 就会在输出信息中看不到dynamic字样。
至此静态ip配置完成。
备注
1. 在修改网络配置文件后,您需要运行 sudo netplan apply 命令来应用更改。如果您没有运行这个命令,那么您的网络设置将不会更新。
2. 在应用更改后,使用 ip addr 命令检查网络接口的配置,确保新的 IP 地址已经生效。
3. 使用 ping 命令测试网络连接,例如 ping 8.8.8.8,以确保您的设备可以访问外部网络。