文章目录
最近在玩ubuntu,发现如果系统中有podman容器处于开启状态,则在重启ubuntu后会出现找不到网卡,找不到网卡也就没有IP地址,这里需要再次重启ubuntu才能正常(解决方案见后文: 开机自动运行容器)。
在虚拟机上这样玩的时候,出现另一个问题就是,如果虚拟机使用的DHCP分配的IP地址,则IP地址会发生变化。那么如何才能设置静态的IP地址呢?
一、确认网关地址
首先需要知道网关地址,比如笔者的虚拟机网关地址为:192.168.1.2
如果是使用VMware虚拟机可以直接在虚拟机网络编辑器中查看网关地址:
二、修改配置文件
1.ubuntu
以笔者使用的ubuntu 21.10版本为例:
a.查看DHCP模式下的DNS信息
使用下面的命令查看DNS信息:
systemd-resolve --stautus
b. 修改/etc/netplan/00-installer-config.yaml文件
sudo vi /etc/netplan/00-installer-config.yaml
笔者的系统安装后默认内容为:
# This is the network config written by 'subiquity'
network:
ethernets:
enp3s0:
dhcp4: true
version: 2
比如我们将IP地址固定为192.168.1.8,则修改为:
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses: [192.168.1.8/24] # 新加行,固定IP地址,/24表示子网掩码为:255.255.255.0
dhcp4: no # 修改dhcp4,关闭dhcp4
nameservers: # 新加行,设置DNS服务器
addresses: [192.168.1.2] # 新加行,设置DNS服务器地址,一般为网关地址
routes: # 新加行,设置路由
- to: default # 新加行
via: 192.168.1.2 # 新加行,设置网关地址
version: 2
renderer: NetworkManager # 新加行(静态IP非必加行),默认值为networkd,cockpit要求为NetworkManager
c.应用设置
使用下面的命令应用设置
sudo netplan apply
d.测试
systemd-resolve --status
ifconfig
curl www.163.com
可以看到一切正常
2. CentOS
以笔者的CentOS 8为例
a.修改配置
修改/etc/sysconfig/network-scripts目录下的配置文件,笔者的为ifcfg-ens33(网卡设备名不一样则名字也不一样),原内容如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=de9eae99-0cca-4d5a-904c-db4904e7d420
DEVICE=ens33
ONBOOT=yes
假设将IP固定为192.168.1.10,修改为:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 由dhcp修改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=de9eae99-0cca-4d5a-904c-db4904e7d420
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.10 # 新加行,设置IP地址
NETMASK=255.255.255.0 # 新加行,设置子网掩码,固定值
GATEWAY=192.168.1.2 # 新加行,设置网关
DNS1=192.168.1.2 # 新加行,设置DNS
b.应用设置
修改配置完成后,需要让配置生效:
sudo nmcli c reload ens33
sudo nmcli c up ens33
c.测试
ifconfig
curl www.163.com