CentOS7固定ip地址

166 阅读2分钟

1. 前提条件

  • 需要将虚拟机的网络连接模式设置为 NAT 连接,原因如下:
    • Mware 提供了三种网络连接模式:
      • 桥接模式:
        • 虚拟机直接连接外部物理网络的模式,主机起到了网桥的作用。这种模式下,虚拟机可以直接访问外部网络,并且对外部网络是可见的
        • 优点:同一局域网中的所有主机都可以访问当前机器
        • 缺点:占用ip地址,不安全
      • NAT模式:
        • 全称:Network Address Translation
        • 虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对 IP 进行转换。虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟主机
        • 实质:就是相当于在虚拟机中和宿主机之间又构建了一个虚拟的子局域网(VMnet8)
        • 缺点:同一局域网下的其他机器无法进行访问
      • 仅主机模式:
        • 虚拟机只与主机共享一个专用网络,与外部网络无法通信
        • 实质:就是通过虚拟的交换机实现和宿主机之间的网络共享(VMnet1)

2. 固定ip地址

  • 修改 /etc/sysconfig/network-scripts 下的 ifcfg-ens33 文件内容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #需要将这个字段值设置为 static 或者 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=73437aa8-31d6-496c-b4d2-c673d4579d5c
DEVICE=ens33
ONBOOT=yes # 这个设置网络随机启动

IPADDR=192.168.159.120 	# 设置固定的ip地址
NETMASK=255.255.255.0 	# 网络掩码
GATEWAY=192.168.159.2	# 这个是网关,需要在VMware中进行查看,具体百度(centos7固定ip网关如何设置)
  • 将上述字段修改之后,重启网络服务
    • systemctl restart network

3. 固定ip地址的脚本

  • 设置固定的ip地址
#!/bin/bash

# 进入配置文件目录
 DIR_NAME=/etc/sysconfig/network-scripts/
 FILE_NAME=ifcfg-ens33

 cd ${DIR_NAME}

# 备份配置文件
 cp ${FILE_NAME} ${FILE_NAME}.bak

# 修改文件内容
#  sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/g' ${FILE_NAME}
 sed -i 's/^BOOTPROTO.*/BOOTPROTO=static/g' ${FILE_NAME}

#  sed -i 's/ONBOOT=no/ONBOOT=yes/g' ${FILE_NAME}
 sed -i 's/^ONBOOT.*/ONBOOT=yes/g' ${FILE_NAME}

# 添加固定ip等等内容
read -t 30 -p "请输入需要固定的ip地址:" ip_addr 
read -t 30 -p "请输入网络掩码:" net_mask 
read -t 30 -p "请输入网关:" gate_way

echo "IPADDR=${ip_addr}" >> ${FILE_NAME}
echo "NETMASK=${net_mask}" >> ${FILE_NAME}
echo "GATEWAY=${gate_way}" >> ${FILE_NAME}

echo ""
echo "重启网络服务.." 
systemctl restart network
echo "重启成功!"
echo ""
  • 取消固定的ip地址
#!/bin/bash

# 进入配置文件目录
 DIR_NAME=/etc/sysconfig/network-scripts/
 FILE_NAME=ifcfg-ens33

cd ${DIR_NAME}

cp ${FILE_NAME}.bak ${FILE_NAME}

echo ""
echo "重启网络服务.." 
systemctl restart network
echo "重启成功!"
echo ""