linux设置静态IP(Ubuntu、CentOS)

  准备工作

  我们要将一个主机设置成静态IP,首先,主机应该要是正常开机运行的,其次,我们需要先知道一些配置,比如当前的网段,子网掩码,网关、DNS等,因为你总不会是想随便配置,不连接访问局域网中的其它主机吧?而这些信息,我们可以通过运行中的主机得到,当然,如果你事前已知晓这些配置,可以跳过,如果不知道,可以慢慢看来:

  如果当前局域网内有windows系统主机,那么可以直接使用查看,鉴于各系统版本不一样,界面可能会有区别,所以不妨使用命令行查看:

  使用win+R键,输入cmd,打开命令行,输入:ipconfig /all,得到的结果中找到你所在局域网的适配器信息,从中可以得到当前的IP,子网掩码,网关、DNS等

   

  如果没有windows系统主机,那么看你有没有启用NetworkManager,如果启用了,那么可以类似windows的方式,直接使用:nmcli dev show ,查看所有的信息了:

  NetworkManager启用方式:  

    #Ubuntu需要安装,然后启动服务
    sudo apt install network-manager
    sudo systemctl start NetworkManager

    #CentOS一般会自带,只需要启动服务就可以了
    sudo systemctl start NetworkManager

  找到对应的网络,结果类似下面的样子(这里没有DNS,有的时候会有DNS,没有的话可以参考下面的方式得到)

   
  :这里子网掩码的两种表示形式,子网掩码的数字形式16,就是IP形式的255.255.0.0,数字24对应的就是255.255.255.0

  如果没有启动NetworkManager,那就只能使用命令一个个查看了,而查看这些信息的命令有很多,可以自行百度,这里说一种比较通用的

  DNS 

  linux的DNS信息保存在/etc/resolv.conf文件中,输入:sudo cat /etc/resolv.conf,其中nameserver就是DNS配置(可能会有多个nameserver):

   

  IPv4和子网掩码(netmask) 

  如果是Ubuntu,使用命令:ifconfig,在结果中找到你所在的局域网网络,对应的IP接子网掩码都在上面,同时注意前面的网络名,后面会用得上,比如我这里是ens33

   

  如果是CentOS,使用命令:ip addr,在结果中找到你所在的局域网网络,对应的IP接子网掩码都在上面,同时注意前面的网络名,后面会用得上,比如我这里是ens33

  

  网关(gateway)

  使用命令:ip route,其中default项就是默认网关:

  

 

  开始设置

  Ubuntu

  如果是Ubuntu16.04,需要修改/network/interfaces来实现,输入命令:sudo vim /etc/network/interfaces

    

  auto ens33
  iface ens33 inet static
  address 192.168.139.128
  netmask  255.255.255.0
  gateway  192.168.139.2
  dns-nameserver 192.168.139.2

  修改完成之后,使用:sudo /etc/init.d/networking restart 重启网络,然后就可以了,如果不行,可能需要重启主机了

  如果是Ubuntu18.04或Ubuntu20.04,设置静态网络可以使用netplan完成,在/etc/netplan目录下有个yaml文件(文件名可能都不一样)。

  输入命令:sudo vim /etc/netplan/50-cloud-init.yaml,(这里50-cloud-init.yaml是我的配置文件名,每个人的可能不一样)修改内容如下: 

    

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: false
      addresses: [192.168.139.128/24]
      gateway4: 192.168.139.2
      nameservers:
        addresses: [192.168.139.2]

  修改完成之后,使用命令:sudo netplan apply,来使得配置生效

  CentOS

  CentOS的每个网卡,在/etc/sysconfig/network-scripts目录下都会有一个 ifcfg-[网络名] 的文件,比如我的就是 ifcfg-ens33

  如果安装了NetworkManager,我们可以直接使用nmcli命令来配置:  

    #配置静态IP,ens33是网络名,192.168.139.130/24是IP和网卡,需要根据自己的实际填写
    sudo nmcli con mod ens33 ipv4.addresses 192.168.139.130/24
    #配置网关
    sudo nmcli con mod ens33 ipv4.gateway 192.168.139.2
    #配置IP为手动设置,即从dhcp变为static
    sudo nmcli con mod ens33 ipv4.method manual
    #配置DNS
    sudo nmcli con mod ens33 ipv4.dns "192.168.139.2"

  使用 nmcli 命令做的那些更改都将永久保存在文件 /etc/sysconfig/network-scripts/ifcfg-[网络名](比如我这里就是ifcfg-ens33)

  如果没有安装NetworkManager,我们可以手动的修改这个文件 /etc/sysconfig/network-scripts/ifcfg-[网络名](比如我这里就是ifcfg-ens33)

    

  ONBOOT=yes               # 开机启用
  BOOTPROTO=static         # 设置静态  
  IPADDR=192.168.139.130   # 设置的静态IP地址  
  NETMASK=255.255.255.0    # 子网掩码  
  GATEWAY=192.168.139.2    # 网关地址  
  DNS1=192.168.139.2       # DNS服务器

  安装自己的配置设置上图中的部分参数就可以了,(注意,如果配置项存在,就修改,不存在就添加,比如BOOTPROTO应该是存在的,需要修改dhcp成static

 

posted @ 2022-04-01 13:45  没有星星的夏季  阅读(4210)  评论(0编辑  收藏  举报