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)