Skip to content

Ubuntu18.04 NAT 模式下配置静态 IP 地址

博客园链接

准备工作

平时使用 ssh 连接虚拟机,但是发现一旦切换了网络以后,虚拟机的 IP 地址总是会发生改变,那么如何设置虚拟机的静态 IP 地址呢

注意:Ubuntu18.04 是通过修改/etc/netplan 目录下的配置文件来修改 IP 地址的

首先在 VMware 的 Edit 菜单下找到虚拟网络设置

1

选择右下角,改变设置

2

找到 VMnet8,NAT 模式,去掉使用本地 DHCP 服务给虚拟机分配 IP 地址

3

选择 NAT 设置,查看 NAT 网关 IP,Gateway IP,这里是 192.168.42.2,并且子网掩码为 255.255.255.0

4

打开 cmd 终端,输入 ipconfig,查看 VMnet8 在本机的 IPv4 地址

5

我这里是 192.168.42.1,目前我们得到了 3 个 IP 地址,分别如下

  • VMnet8 的网络地址:192.168.42.0
  • VMnet8 的网关地址:192.168.42.2
  • 本机 VMnet8 的 IPv4 地址:192.168.42.1

改写配置文件

首先改变 Ubuntu18.04 的网络连接方式为 NAT,然后打开 Ubuntu18.04 的终端,首先查看你的网络名称,使用 ifconfig,这里是 ens33

然后输入ls /etc/netplan/

linkchen@master:~$ ls /etc/netplan/
01-network-manager-all.yaml
linkchen@master:~$

可以看到一个文件,01-network-manager-all.yaml

输入命令sudo vim /etc/netplan/01-network-manager-all.yaml编辑该文件

具体修改项目:【注意 yaml 的对齐格式和冒号后的空格,否则后续生效时会出错】

  • 在 network 下添加以太网 ethernets
  • 在 ethernets 中添加你的网络名称,这里是 ens33
  • 在 ens33 中添加【注意冒号后的空格】
    • dhcp4: no
    • dhcp6: no
    • addresses: [192.168.42.*/24],这里使用的是 CIDR 划分的方式,其中*可以是除了 0、1、2 的任何小于 255 的数,因为 0、1、2 被使用,这里设置为 100,addresses 这一属性就设置了虚拟机的静态 IP 地址
    • gateway4: 192.168.42.2,这里为之前所查看的 VMnet8 网关地址
    • 添加 nameservers,域名服务器,并配置 addresses: [114.114.114.114, 8.8.8.8],这一条配不配置都行

所有内容如下

01-network-manager-all.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Let NetworkManager manage all devices on this system
network:
    version: 2
    renderer: NetworkManager
    ethernets:
        ens33:
            dhcp4: no
            dhcp6: no
            addresses: [192.168.42.100/24]
            gateway4: 192.168.42.2
            nameservers:
                addresses: [114.114.114.114, 8.8.8.8]

修改成功后,输入sudo netplan apply,再次输入 ifconfig,查看 ip 地址是否改变

linkchen@master:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.42.100  netmask 255.255.255.0  broadcast 192.168.42.255
        inet6 fe80::20c:29ff:fec4:7cb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c4:07:cb  txqueuelen 1000  (Ethernet)
        RX packets 3933  bytes 1728376 (1.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2033  bytes 226412 (226.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 854  bytes 87847 (87.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 854  bytes 87847 (87.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

重启 VMnet8

这一步非常重要,否则主机依然会 ping 不通虚拟机,找到 VMnet8 适配器,选择禁用,过几秒钟后再启用即可

6

配置完成后,就可以使用静态 IP 地址来访问虚拟机了,如果还是连接不了,可以通过 ping 查看主机与虚拟机网络是否连通,如果不通可以尝试重启主机,如果正常配置则重启后,能使用静态 IP 来访问虚拟机

Comments