zoukankan      html  css  js  c++  java
  • 虚拟机中设置 CentOS 静态 IP

    作为开发人员在工作和学习中通过虚拟机使用 Linux 的情况肯定会非常多,但是 Linux 自带的终端使用体验较差,所以绝大多数使用者都会在宿主机上使用第三方 SSH工具(例如 Xshell)进行连接,然而在虚拟机中如果使用的是动态 IP 则会出现这次连接可以但下次连不上的情况,因为 IP 动态获取的嘛,是会变的。所以这篇文章的目的也就在于解决此问题。

    确定虚拟机使用的网络配置

    在设置静态 IP 之前,我们需要确定当前系统动态获取到的一些配置信息,以便我们后续使用。

    IP地址及网卡名称

    作者新装的一台虚拟机,执行的是最小化安装,所以什么工具也没有,使用 ip 来查看,执行结果如下:

    [root@192 ~]# 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 pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:90:03:54 brd ff:ff:ff:ff:ff:ff
        inet 192.168.234.130/24 brd 192.168.234.255 scope global noprefixroute dynamic ens33
           valid_lft 1650sec preferred_lft 1650sec
        inet6 fe80::a120:30fb:6867:daed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    

    分析以上结果,我们可以看到网卡名称为 ens33,IP 地址为 192.168.234.130,根据 IP 地址后的 /24 可以得知为 C 类地址,子网掩码为 255.255.255.0 (可参考 ip地址后边加个/8(16,24,32)是什么意思?)
    网卡名称及 IP 地址

    DNS 地址

    CentOS 使用的 DNS 配置放置在 /etc/resolv.conf 文件中,可以通过查看此文件内容获取当前 DNS 地址。

    [root@192 ~]# cat /etc/resolv.conf 
    # Generated by NetworkManager
    search localdomain
    nameserver 192.168.234.2
    

    根据文件内容可以知道 DNS 服务器地址为 192.168.234.2

    网关地址

    网关地址同样可以使用 ip 命令进行查看

    [root@192 ~]# ip route show
    default via 192.168.234.2 dev ens33 proto dhcp metric 100 
    192.168.234.0/24 dev ens33 proto kernel scope link src 192.168.234.133 metric 100 
    

    根据执行结果我们可以看到使用的网关地址为 192.168.234.2

    汇总

    根据之前的结果,我们可以汇总得到现有的网络配置信息:

    • 网卡名:ens33
    • IP 地址:192.168.234.130
    • 子网掩码:255.255.255.0
    • DNS:192.168.234.2
    • 网关:192.168.234.2

    修改 CentOS 系统设置

    相比于查看来说,设置部分相对会简单很多,修改一个文件就可以了,文件路径 /etc/sysconfig/network-scripts,之前我们查看到虚拟机的网卡名为 ens33,在这个目录下有个文件为 ifcfg-ens33,这个就是网卡对应的配置文件。

    文件内包含当前网卡的网络配置,默认的是通过 DHCP 来动态获取 IP 地址,我们需要修改为静态 IP。

    # 默认内容
    BOOTPROTO="dhcp"
    # 修改后的内容
    BOOTPROTO="static"
    
    # 检查以下内容,必须为 “yes”
    ONBOOT="yes"
    

    在文件中添加以下内容,其中地址除 IP 地址为手动指定外,其他的均为之前动态获取的内容

    IPADDR="192.168.234.71"
    NETMASK="255.255.255.0"
    GATEWAY="192.168.234.2"
    DNS1="192.168.234.2"
    

    修改后重新启动网络服务

    [root@192 ~]# systemctl restart network
    

    之后重新查看地址(如果使用三方 SSH 工具则需要重新连接),可以看到 IP 地址已经变更为我们指定的地址,以后连接就不会出现获取的地址和之前不一样的情况了

    [root@192 ~]# 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 pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:90:03:54 brd ff:ff:ff:ff:ff:ff
        inet 192.168.234.71/24 brd 192.168.234.255 scope global noprefixroute ens33
           valid_lft forever preferred_lft forever
        inet6 fe80::a120:30fb:6867:daed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    
    
  • 相关阅读:
    Python学习4
    Python学习3
    Python学习2
    表空间
    sqlplus常用设置
    HashMap和LinkedHashMap
    堆栈源码
    观察者模式
    策略模式
    java线性表
  • 原文地址:https://www.cnblogs.com/aotian/p/11613494.html
Copyright © 2011-2022 走看看