目录
一. 前言
Mac OSX 下使用VMware Fusion 创建的虚拟机,默认是通过DHCP动态分配的IP.
这样有一个缺点,每次虚拟机重新启动,IP都会变,对于我们搭建K8S集群或中间件来说是不友好的。
那么如何Mac OSX 下使用VMware Fusion 创建的虚拟机 使用静态IP呢?
网上文章很多很乱,或有的只写过程不写为什么这么做。
这篇文章我们就好好分享下Mac OSX下如何使用VMware Fusion 给虚拟机 配置静态IP.
二. Mac OSX下使用VMware Fusion 配置静态IP
2.1 了解静态IP如何划分基础知识
上过大学计算机专业课的同学应该知道, IP 地址一共分为三类:
- A类保留地址:10.0.0.0 ~ 10.255.255.255
- B类保留地址:172.16.0.0 ~ 172.31.255.255
- C类保留地址: 192.168.0.0 ~192.168.255.255
- 其中 A类和B类一般用于公网IP, C 类一般用于本地局域网。
- 避免和公网IP冲突,影响访问一些服务,这里我们本地局域网内的虚拟机一般使用C类地址。
2.2 Centos7 安装操作系统时图形界面配置静态IP
第一种方式,可以在安装操作系统的时候就设置好静态分配IP
Method默认为Automactic(DHCP),意为DHCP 自动分配IP
这里我们需要修改下选项, Method: Manual, 意为手动配置的意思
然后点击Add 添加一行配置,那么Address ,Netmask,Gateway,DNS servers 怎么填写呢?
换句话说,我怎么知道该填写什么内容呢?
VMware Fusion 的相关配置文件默认位于 /Library/Preferences/VMware Fusion/vmnet8
目录下。
打开 Mac OSX 的Shell 环境中 进入/Library/Preferences/VMware Fusion/vmnet8
目录下
cd '/Library/Preferences/VMware Fusion/vmnet8'
执行查看当前目录下文件列表
ls
执行成功我们可以看到如下几个文件:
dhcpd.conf dhcpd.conf.bak nat.conf nat.conf.bak nat.mac
- nat.conf 配置了网关和子网掩码等信息
- dhcpd.conf 配置了DHCP自动分配IP的范围等信息。
查看nat.conf 内容,可以得到Netmask,Gateway 的地址信息。
cat nat.conf
打开后可以看到nat.conf内容如下:
# VMware NAT configuration file
# Manual editing of this file is not recommended. Using UI is preferred.
[host]
# Use MacOS network virtualization API
useMacosVmnetVirtApi = 1
# NAT gateway address
ip = 192.168.159.2
netmask = 255.255.255.0
# VMnet device if not specified on command line
device = vmnet8
注意:
- 这里没贴完整,我们只看这个文件中的关键信息即可,上图也是参考这个信息进行配置。
- 只查看这个文件不要修改
NAT gateway address
:192.168.159.2Netmask
: 255.255.255.0
然后查看 dhcpd.conf 内容
cat dhcpd.conf
打开内容如下所示:
# Written at: 04/01/2022 13:10:40
allow unknown-clients;
default-lease-time 1800; # default is 30 minutes
max-lease-time 7200; # default is 2 hours
subnet 192.168.159.0 netmask 255.255.255.0 {
range 192.168.159.128 192.168.159.254;
option broadcast-address 192.168.159.255;
option domain-name-servers 192.168.159.2;
option domain-name localdomain;
default-lease-time 1800; # default is 30 minutes
max-lease-time 7200; # default is 2 hours
option netbios-name-servers 192.168.159.2;
option routers 192.168.159.2;
}
host vmnet8 {
hardware ethernet 00:50:56:C0:00:08;
fixed-address 192.168.159.1;
option domain-name-servers 0.0.0.0;
option domain-name "";
option routers 0.0.0.0;
}
####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######
注意:
- 这个文件只查看不要修改。
range
就是可选的静态ip的范围,192.168.159.128
至192.168.159.254
option broadcast-address
是广播地址:192.168.159.255
option domain-name-servers
就是DNS地址192.168.159.2
- DNS server 就配置
192.168.159.2
即可。hardware ethernet
表示 Mac 地址,fixed-address
表示 IP 地址
修改成功后如下所示:
2.3 Centos7安装操作系统后修改动态IP为静态IP
前面我们说到,可以通过图形用户界面配置静态IP。
但如果我已经安装完操作系统了, Centos7 服务器一般又没图形用户界面,那么如何修改这个配置呢?
- 首选我们需要查看下当前系统Ip V4 IP 地址
ip addr
执行成功可以看到类似如下的内容:
- 我们可以看到当前虚拟机用的是
ens33
这个网络适配器- 当前机器动态分配的IP V4是
192.168.159.202
,每次重启虚拟机这个ip可能都会变化。- 除此之外,还有
docker0
等其他网络适配器
如果现在我们将这个机器的ip 强行设置成静态IP 192.168.159.166
那么该怎么做呢?
首选,我们需要进入虚拟机网络配置脚本目录
cd /etc/sysconfig/network-scripts
然后查看下当前文件夹下都有什么文件夹或文件
ifcfg-ens33 ifdown-ippp ifdown-routes ifup ifup-ipv6 ifup-ppp ifup-tunnel
ifcfg-lo ifdown-ipv6 ifdown-sit ifup-aliases ifup-isdn ifup-routes ifup-wireless
ifdown ifdown-isdn ifdown-Team ifup-bnep ifup-plip ifup-sit init.ipv6-global
ifdown-bnep ifdown-post ifdown-TeamPort ifup-eth ifup-plusb ifup-Team network-functions
ifdown-eth ifdown-ppp ifdown-tunnel ifup-ippp ifup-post ifup-TeamPort network-functions-ipv6
- 我们可以看到有一个叫做
ifcfg-ens33
的文件,这个文件就是网络适配器配置文件。
还记得刚才我们查看IP 看到的那个ens33
网络适配器么?
我们现在查看下ifcfg-ens33
这个网络适配器配置文件的内容:
cat 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"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="3256e277-b5ed-4800-9550-92cf4805efd1"
DEVICE="ens33"
ONBOOT="yes"
- 我们可以看到这里BOOTPROTO 属性配置的是dhcp类型,意思就是通过DHCP动态分配IP
那么应该如何修改配置为静态IP呢?
vi ifcfg-ens33
修改后配置内容如下:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="3256e277-b5ed-4800-9550-92cf4805efd1"
DEVICE="ens33"
ONBOOT="yes"
# 追加内容
IPADDR="192.168.159.166"
PREFIX="24"
GATEWAY="192.168.159.2"
DNS1="192.168.159.2"
IPV6_PRIVACY="no"
- 首选需要修改BOOTPROTO 的属性"dhcp" 修改为"none"
- 然后追加如下几行配置。
重启网络或重启系统都可以
systemctl restart network