固定操作系统的静态 IP
介绍
操作系统 IP 一般都是动态获取的(重启或者冲突会自动获取可用的 IP),不过在有些场景我们需要固定静态 IP,比如:虚拟机配置、内网穿透配置以及一些使用 IP 地址的程序软件等等。
总之,希望操作系统保持同个 IP 不变的需求,可参考本章内容(持续更新中)。
使用教程
CentOS
CentOS 7.x
- 配置文件
默认网卡设备文件存放位置:
/etc/sysconfig/network-scripts/
一般该目录下会存在很多文件,我们只需要找到 ifcfg-[网卡设备名]
文件即可,如:ifcfg-ens33
。
网卡设备名可通过
ifconfig
命令进行查看,可自行查阅网上资料
文件配置信息参考:
TYPE=Ethernet # 网卡类型:为以太网
PROXY_METHOD=none # 代理方式:关闭状态
BROWSER_ONLY=no # 只是浏览器:否
BOOTPROTO=dhcp # 网卡的引导协议:DHCP[中文名称: 动态主机配置协议]
DEFROUTE=yes # 默认路由:是, 不明白的可以百度关键词 `默认路由`
IPV4_FAILURE_FATAL=no # 是不开启IPV4致命错误检测:否
IPV6INIT=yes # IPV6是否自动初始化: 是[不会有任何影响, 现在还没用到IPV6]
IPV6_AUTOCONF=yes # IPV6是否自动配置:是[不会有任何影响, 现在还没用到IPV6]
IPV6_DEFROUTE=yes # IPV6是否可以为默认路由:是[不会有任何影响, 现在还没用到IPV6]
IPV6_FAILURE_FATAL=no # 是不开启IPV6致命错误检测:否
IPV6_ADDR_GEN_MODE=stable-privacy # IPV6地址生成模型:stable-privacy [这只一种生成IPV6的策略]
NAME=ens33 # 网卡物理设备名称
UUID=f47bde51-fa78-4f79-b68f-d5dd90cfc698 # 通用唯一识别码, 每一个网卡都会有, 不能重复, 否两台linux只有一台网卡可用
DEVICE=ens33 # 网卡设备名称, 必须和 `NAME` 值一样
ONBOOT=yes # 是否开机启动, 要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes`
示例:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=em2
UUID=87a3561a-2dc6-4dc0-8269-b545ef4c5f98
DEVICE=em2
ONBOOT=yes
DNS1=8.8.8.8
IPADDR=192.168.1.234
PREFIX=24
GATEWAY=192.168.1.1
PROXY_METHOD=none
BROWSER_ONLY=no
- 快速设置
修改配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改具体配置项:
i. 设置网卡引导协议为 静态
BOOTPROTO=static
ii. 设置网卡启动方式为 开机启动
并且可以通过系统服务管理器 systemctl
控制网卡
ONBOOT=yes
iii. 配置 IP/子网掩码/网关
IPADDR=192.168.1.111
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
重启网络服务:
systemctl restart network
在
CentOS7
下已全面使用systemctl
作为服务管理器, 它用来替代service 和 chkconfig
Ubuntu
Ubuntu 16.x
- 永久修改
i. 第一步:配置文件
修改 /etc/network/interfaces
文件:
sudo vi /etc/network/interfaces
/etc/network/interfaces
文件内容:
auto eth0 # eth0 为网卡名,具体根据自己的网卡名配置文件夹(ifconfig命令查看),一般是 ens33
iface eth0 inet static # eth0 跟上面一致
address 192.168.1.200
netmask 255.255.255.0 # 子网掩码
gateway 192.168.1.1 # 网关
broadcast 192.168.1.255
dns-nameservers 119.29.29.29 # 设置dns服务器 ---这一行是新添加的
ii. 第二步:重启网卡,使之配置生效
sudo /etc/init.d/networking restart
或者
ifdown eth0 # 关闭网卡
ifup eth0 # 启动网卡
如果不行,可尝试重启系统
- 临时修改
ifconfig erh0 192.168.1.28 255.255.255.0
Ubuntu 18.x
Ubuntu 18.04
不再使用 ifupdown
配置网络,而改用 netplan
。
在 /etc/network/interfaces
配置固定 IP 是无效的,重启网络的命令 services network restrart
或 /etc/init.d/networking restart
也是无效的。
- 使用
ifupdown
配置网络
如果要使用之前的方式配置网络,需要重新安装 ifupdown
:
sudo apt install ifupdown
修改配置文件 /etc/network/interfaces
:
sudo vim /etc/network/interfaces
配置文件修改如下:
iface ens160 inet static
address 210.72.92.25
gateway 210.72.92.254
netmask 255.255.255.0
dns-nameservers 8.8.8.8
重启网络服务使配置生效:
sudo services network restrart
- 使用
netplan
配置网络
Ubuntu 18.04
使用 netplan
配置网络,其配置文件是 yaml
格式的。在 /etc/netplan/
目录下默认的配置文件名是 50-cloud-init.yaml
。
修改:
sudo vim /etc/netplan/50-cloud-init.yaml
配置文件修改如下:
network:
ethernets:
ens160:
addresses:
– 210.72.92.28/24 # IP及掩码
gateway4: 210.72.92.254 # 网关
nameservers:
addresses:
– 8.8.8.8 # DNS
version: 2
重启网络服务使配置生效:
sudo netplan apply
FAQ
如何处理 CentOS7 最小化安装后是没有 ifconfig
命令问题
ip addr
通过
ip
命令加参数addr
则是查看当前网卡的配置信息, 从下图中可以看出, 当前系统的ens33
网卡并没有ipv4
及ipv6
, 没有ip地址
则只能说明一个问题, 当前 linux 系统是没有办法上网的,lo
这块网卡每一个系统中都会有, 这个称之为回环网卡
如何处理 ping 其它主机时显示未知域名或服务
假如 ping baidu.com
后出现这种情况,可尝试以下方式
- 可以先在正常的机子上 ping 后,获取正常的 IP 地址
- 编辑
/etc/hosts
文件
vi /etc/hosts
- 输入对应 IP 与记录并保存退出
220.181.57.217 baidu.com www.baidu.com
- 重新
ping