RHEL 7带来了很多系统配置和管理上的变化,虽然有些不习惯,但个人认为大家应该去适应它们,而不是因循守旧,因为变化总是有原因的,它们大致都代表了未来的趋势,你不可能一直停留在原地踏步。
1、GRUB升级至2.0,bootloader的配置文件也调整至/boot/grub2/grub.cfg
查看启动项:
# cat /boot/grub2/grub.cfg |grep menuentry
menuentry 'CentOS Linux (4.2.5-1.el7.elrepo.x86_64) 7 (Core)' --class centos ...
menuentry 'CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)' --class centos ...
查看默认启动项:
# grub2-editenv list
saved_entry=CentOS Linux (4.2.5-1.el7.elrepo.x86_64) 7 (Core)
修改默认启动内核为4.2.5:
# grub2-set-default 'CentOS Linux (4.2.5-1.el7.elrepo.x86_64) 7 (Core)'
2、/etc/inittab 不再使用(when using systemd)
cat /etc/inittab 看下就知道了:
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
3、主机名保存到了/etc/hostname 文件下
安装系统时配置的主机名,保存到了 /etc/hostname 。
4、几乎全面由systemd管理服务,SysV已经退居二线了,想配置服务得用systemctl
systemctl enable/disable sshd.service
其实启用服务就是在当前“runlevel”的配置文件目录(/etc/systemd/system/multi-user.target.wants/)里, 建立/usr/lib/systemd/system 里面对应服务配置文件的软链接;禁用服务就是删除此软链接。
有兴趣就自己看看 /usr/lib/systemd/system 里的文件,语法跟旧版/etc/init.d/ 里的服务脚本完全不同,也不能再用 /etc/init.d/sshd restart 之类的指令启动服务器了。
常用指令:
1
2
3
4
5
6
| # systemctl list-unit-files -t service
# systemctl status firewalld.service
# systemctl enable/disable firewalld.service
# systemctl is-enabled firewalld.service
查看系统启动以来的message信息
# journalctl -b (类似 dmesg )
|
另,/etc/rc.local 文件默认没有执行权限:
# cat /etc/rc.local
系统不再建议使用此文件,而是建议创建自己的 systemd services:
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
如果希望使用该文件(在开机时运行某命令),注意记得给该文件添加执行权限。
5、/etc/sysct.conf 中的默认配置移到了/usr/lib/sysctl.d/00-system.conf
# cat /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
# 在这里设置配置会覆盖 00-system.conf 下的默认配置,或者
# 在 /etc/sysctl.d/ 下创建一个 <name>.conf 的文件也可以
6、是否关闭IPv6:不建议完全关闭ipv6模块,否则一些组件会有问题
from Centos 7 FAQ:
Upstream employee Daniel Walsh recommends not disabling the ipv6 module, as that can cause issues with SELinux and other components, but adding the following to /etc/sysctl.conf:
# net.ipv6.conf.all.disable_ipv6 = 1 //但开启这个会导致postfix无法启动
net.ipv6.conf.default.disable_ipv6 = 1 //设置这一项还是可以的
注:总感觉没啥必要关闭ipv6了,如果有域名解析的问题,那也应该是DNS服务器去适配。
7、新的网卡命名规则(默认不再是 eth0/1 )
旧的 eth0/1 命名规则,是不确定的,机器增减网卡后,原有的网卡名字可能会变化。RHEL7支持几种新的命名规则,其中默认的基于硬件信息的规则可以保证网卡名字自动生成并且是固定的,但是会比较难以“阅读”(read),比如 enp2s0,enp3s0。
引用自Redhat官方文档:
8.3. UNDERSTANDING THE PREDICTABLE NETWORK INTERFACE DEVICE NAMES
The names have two character prefixes based on the type of interface:
- en for Ethernet,
- wl for wireless LAN (WLAN),
- ww for wireless wide area network (WWAN).
The names have the following types:
Table 8.1. Device Name Types
Format
Description
o<
index>on-board device index numbers<
slot>[f<
function>][d<
dev_id>]hotplug slot index numberx<
MAC>MAC addressp<
bus>s<
slot>[f<
function>][d<
dev_id>]PCI geographical locationp<
bus>s<
slot>[f<
function>][u<
port>][..][c<
config>][i<
interface>]USB port number chain
更多信息参考:
新的网卡命名规则,参见:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Consistent_Network_Device_Naming.html#sec-Understanding_the_Predictable_Network_Interface_Device_Names
还有Centos 7 FAQ:https://wiki.centos.org/FAQ/CentOS7
8、ll /etc/udev/rules.d/,默认不存在 70-persistent-net.rules 了
网卡MAC只在网卡配置文件里有,一旦变了我只需要改网卡配置文件?(拷贝虚拟机的情况的常见问题)
在图形界面下修改MAC后网卡不认了,测试结果是只需要改网卡配置文件的MAC,而且相关的多个配置文件都要改才行。
(注:这个我没实际测试)
9、ip / ss 指令替代 ifconfig route arp / netstat
用 ip neighbour 代替 arp -n
其他 ip 指令 大家自己看帮助吧。
10、旧的 network 脚本(service)和 ifcfg 文件
Centos7 开始,网络由 NetworkManager 服务负责管理,相对于旧的 /etc/init.d/network 脚本,NetworkManager 是动态的、事件驱动的网络管理服务。旧的 /etc/init.d/network 以及 ifup,ifdown 等依然存在,但是处于备用状态,即:NetworkManager 运行时,多数情况下这些脚本会调用 NetworkManager 去完成网络配置任务;NetworkManager没有运行时,这些脚本就按照老传统管理网络。
需要注意的是:
1)不建议 systemctl disable NetworkManager.service
2)因为旧的 network 脚本不兼容 ifcfg-* 文件里的新的配置项名称 IPADDR0/PREFIX0/GATEWAY0
3)除非把后面那个 0 去掉,否则开机是无法启动网卡的
11、网络配置
(大部分引用自网上文章)
1)nmtui 配置基本网络连接
nmtui 属于curses-based text user interface(文本用户界面), 类似 Centos6 的 setup 工具,但只能编辑连接、启用/禁用连接、更改主机名。系统初装之后可以第一时间用nmtui配置网络,挺方便。
2)nmcli 和其他网络设置
nmcli 是命令行形式的工具,功能要强大、复杂的多。
# nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device。
device 叫网络接口,是物理设备
connection 是连接,偏重于逻辑设置
多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。
这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应的connection。
我们可以用nmtui把两个连接改成我们熟悉的名字(nmcli也能,但比较麻烦哦),需要注意的是,enp0s3设备对应的连接名改为eth0,但对应的ifcfg文件并没有改名。
连接的配置文件 ifcfg-*,可以用 DEVICE 指定设备名,也可以用HWADDR指定设备的MAC地址,最终结果都一样的指向某个设备(网络接口)。
所以,对一个网络接口设置不同的连接,可以快速的切换不同的网络配置,这个真的满厉害的。
如果希望系统重启后仅up某个特定连接,那么可以把其他连接配置文件的ONBOOT=no,ONBOOT=no的连接也可以随时up。
3)编辑连接
用nmtui编辑连接后,ifcfg文件也会有相应的改动;手工修改ifcfg后,nmtui中也能看到。
但是,不论用nmtui还是直接修改ifcfg文件,想让新的配置生效,我们需要load连接配置文件并重新up连接。
举例,我们编辑ifcfg-enp2s0-1,把IP改为10.0.3.111,然后执行nmcli con reload 或 nmcli con load /etc/sysconfig/network-scripts/ifcfg-enp2s0-1
nmtui 手工为网卡添加多个IP(secondary IP)
新IP已经被加入到ifcfg-enp2s0中,原始地址的关键字是 IPADDR0、PREFIX0,新地址的关键字是 IPADDR1、PREFIX1 。
nmtui 添加IP后,需要执行命令来生效:
1
2
| nmcli con load /etc/sysconfig/network-scripts/ifcfg-enp2s0
nmcli dev connect enp2s0
|
3.1)手工添加IP到ifcfg-eth0
手工添加IP到ifcfg-enp2s0后,需要执行命令来生效:
1
2
| nmcli con load /etc/sysconfig/network-scripts/ifcfg-enp2s0 或 nmcli con reload
nmcli dev connect enp2s0
|
3.2)用ip addr add 指令添加/删除IP:即刻生效,重启不保留。
3.3)使用子连接配置文件 ifcfg-*:X(Centos5/6时代):不支持了。
但 ifconfig eth0:1 192.168.1.22 up 这种指令还是支持的!
3.4)配置DNS nameserver(不直接修改/etc/resolv.conf 了)
也是在 /etc/sysconfig/network-scripts/ifcfg-enp2s0 文件中配置,在其中添加
DNS1="10.36.109.251"
DNS2="10.36.112.251"
与手工添加IP到ifcfg-enp2s0一样,需要执行命令来生效:
1
2
| nmcli con load /etc/sysconfig/network-scripts/ifcfg-enp2s0 或 nmcli con reload
nmcli dev connect enp2s0
|
这样,添加的DNS1/DNS2会同步到/etc/resolv.conf文件中。
(注:直接修改/etc/resolv.conf文件,重启系统或运行上述命令后会丢失)
4)网络配置总结:
- ip addr show 中显示的IP才是有效的。
- ip addr add 能在线添加IP,立即生效,但重启即丢。
- ip addr del 能在线删除IP,立即生效,但重启即丢。
- 子连接配置文件(ifcfg-*:X)已经无效了。
- 配置DNS nameserver(不直接修改/etc/resolv.conf 了),同在 ifcfg-enp2s0 这类文件中。
- nmtui 和 编辑ifcfg-enp2s0 文件效果基本相同,都不能立即生效,必须 load 连接再重新connect网络设备,即:
nmcli con load /etc/sysconfig/network-scripts/ifcfg-enp2s0 或 nmcli reload
nmcli dev connect enp2s0
参考:
原文:https://blog.gesha.net/archives/618/