文章目录
- Linux基础系统设置
- 网络设置(手动设置与DHCP自动获取)
- 手动设置IP网络参数
- 自动获取IP参数
- 修改主机名
- 日期与时间设置
- 时区的显示与设置
- 时间的调整
- 用ntpdate手动校时
- 语系设置
- 防火墙简易设置
- 案例
Linux基础系统设置
我们的CentOS 7 系统其实有很多需要设置,包括之前提到提到过的语系、日期、时间、网络设置等。
网络设置(手动设置与DHCP自动获取)
如果你是网络管理员,就需要知道一些网络内部的设置,比如IP地址、网关、子网掩码等等。如果你想要连上互联网,那么还需要知道DNS的作用。如果你想要在单位拥有自己的网址,那么就需要设置DNS服务器。总之,在设置网络服务器之前,你需要先了解一些网络的基础知识,这样才能避免服务器被攻击或遇到其他网络问题。
如果你只是一个普通的Linux电脑用户,而不是一个服务器,那么你需要找到网络管理员或你的网络服务提供商(ISP)来获取你的网络配置信息。这些配置信息包括IP地址、网关、DNS服务器等。通常网络参数的获取方式常见的有下面几种:
- 手动设置固定IP
有些服务器或公司内部网络有特定的网络设置,这种情况下你必须获取以下几个参数才能让你的Linux电脑上网:
-
IP地址:这是你在网络中的唯一标识,类似于家庭地址。
-
子网掩码:它告诉你哪些IP地址是属于你所在的子网的,类似于邮政编码。
-
网关:这是连接你所在子网和其他网络的关键设备,它帮助你的计算机找到互联网。
-
DNS服务器:这是域名系统服务器,它将网址转换为IP地址,帮助你的计算机连接互联网。
获取这些参数的方式有很多种,可以通过查看网络设置或询问网络管理员获得。一旦你获得了这些参数,就可以在Linux上进行正确的网络设置,连接到你所在的网络并访问互联网。常见用的DNS:(114.114.114.114)
- 光纤到户与ADSL宽带拨号
拨号上网是一种通过光纤或宽带调制解调器连接上网的方式。虽然还是需要网卡连接到调制解调器上,但系统会产生一个替代调制解调器的网络接口(ppp0)。现在的光纤宽带已经内置了IP共享和自动拨号功能,因此只需要自动获取IP即可。而连接到网络的硬件就是网卡,常用的是以太网络协议开发的以太网卡,Linux中称之为ethN。例如,一台Linux机器有一块以太网卡,它的网络接口就是eth0。
不过新的Centos 7开始对于网卡的编号则有另一套规则,网卡的名称现在与网卡的来源有关,基本上的网卡名称会是这样分类的:
-
eno1:代表由主板 BIOS 内置的网卡
-
ens1:代表由主板 BIOS 内置的 PCI-E 接口的网卡
-
enp2s0:代表 PCI-E 接口的独立网卡,可能由多个插孔,因此会有 s0,s1…的编号。
-
eth0:如果上述的名称都不适用,就回到原本的默认网卡编号
无论是哪种名称,你可以通过执行命令【ifconfig -a】来查看所有的网卡信息。
另外,CentOS 7希望我们不要手动修改配置文件,而是直接使用nmcli命令来设置网络参数。
手动设置IP网络参数
假设你已经向你的ISP(网络服务提供商)获取了你的网络参数,基本上的网络参数需要这些信息:
- method:manual(手动设置)
- IP:192.168.100.10
- netmask:255.255.255.0
- gateway:192.168.100.1
- DNS:114.114.114.114
- hostname:study.csq.centos
上面的数据除了hostname是可以暂时不理会之外,如果你要上网,就得要上面的这些信息才行。然后通过 nmcli 来处理。
你得要先知道的是, nmcli 是通过一个名为【连接代号】的名称来设置是否要上网,而每个【连接代号】会有个【网卡名称】,这两个东西通常设置成相同名称。那就来先查看目前系统上默认有上面连接代号。
nmcli general status
:显示当前的网络状态,包括连接状态和DNS服务器地址。nmcli device status
:显示系统上所有网络设备的状态,包括网卡名称、连接状态和IP地址。nmcli device show <设备名称>
:显示指定网络设备的详细信息,包括MAC地址、IP地址、DNS服务器地址等。nmcli connection show
:显示所有网络连接的详细信息,包括连接代号、连接类型和IP地址。nmcli connection add
:添加一个新的网络连接。nmcli connection modify <连接代号>
:修改现有网络连接的设置。nmcli connection delete <连接代号>
:删除现有的网络连接。nmcli connection up <连接代号>
:启动指定的网络连接。nmcli connection down <连接代号>
:关闭指定的网络连接。
以上是一些常用的nmcli命令,还有很多其他命令可用于管理网络设置。
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens34 09c7b5e9-805b-4928-9003-094eae5240fd ethernet ens34
ens33 359ec964-ce76-40d2-8980-8780c8f80dd0 ethernet --
# NAME 就是连接代号,通常与后面的网卡 DEVICE 会一样
# UUID 这个是特殊的设备代码
# TYPE 就是网卡的类型,通常就是以太网卡
# DEVICE 当然就是网卡名称
从上面我们会知道有个ens34的连接代号,那么查一下这个连接代号都有哪些设置
[root@localhost ~]# nmcli connection show ens34
connection.id: ens34
connection.uuid: 09c7b5e9-805b-4928-9003-094eae5240fd
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens34
connection.autoconnect: 是
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
.......
.......
.......
ipv4.method: manual
ipv4.dns: 114.114.114.114
ipv4.addresses: 192.168.200.10/24
ipv4.gateway: 192.168.200.2
........
........
........
IP4.ADDRESS[1]: 192.168.200.10/24
IP4.GATEWAY: 192.168.200.2
........
........
IP6.ADDRESS[1]: fe80::5f07:885b:f6d6:71f7/64
IP6.GATEWAY: --
如上表的输出,最下面的是大写的IP4、IP6指的是目前实际使用的网络参数,最上面的 connection 开头的部分则指的是连接状态。比较重要的参数如下:
- connection.autoconnect [yes|no]:是否开机时启动这个连接,默认是yes
- ipv4.method [auto|manual]:自动还是手动设置网络参数的意思
- ipv4.dns [dns_server_ip]:就是填写DNS的地址
- ipv4.addresses [IP/Netmask]:就是IP与netmask的集合,中间用斜线 / 来隔开
- ipv4.gateway [gw_ip]:就是gateway的IP地址
所以,根据上面的设置选项,我们来将网络参数设置好
[root@localhost ~]# nmcli connection modify ens34 \
> connection.autoconnect yes \
> ipv4.method manual \
> ipv4.addresses 192.168.200.20/24 \
> ipv4.gateway 192.168.200.2 \
> ipv4.dns 8.8.8.8
最终执行【nmcli connection show ens34】 然后看最下方,是否为正确的设置值?如果是的话,那就设置好了
你会发现我们实际用IP还是原来的IP,我们可以执行nmcli connection up <连接代号>
来生效网卡;也可以使用systemctl restart network
来重启网络服务
[root@localhost ~]# nmcli connection up ens34
自动获取IP参数
DHCP协议是一种网络协议,它可以自动分配IP地址给你的电脑或设备,让你的设备能够连接网络。如果你的网络是由DHCP协议所分配,那么你不需要去记忆上述提到的所有功能,只需要把设置中的ipv4.method项目填成auto即可。所以来看看,如果变成自动获取,网络设置要如何处理?
[root@localhost ~]# nmcli connection modify ens34 \
> connection.autoconnect yes \
> ipv4.method auto
[root@localhost ~]# nmcli connection up ens34
[root@localhost ~]# nmcli connection show ens34
自动获取IP要简单太多了。同时执行 modify 之后,整个配置文件就写入了,因此你无须使用 vim 去重新改写与设置。nmcli 确实不错。另外,上面的参数中,那个 connection、ipv4等,你也可以使用[TAB]去调用出来。也就是说,nmcli 有支持 bash-commplete 的功能,所以命令执行也很方便。
可以执行如下命令安装
[root@localhost ~]# yum install -y bash-completion
修改主机名
主机名的修改就得要通过 hostnamectl 这个命令来处理
hostnamectl [set-hostname] NAME
-
显示目前的主机名称与相关信息
[root@localhost ~]# hostnamectl Static hostname: localhost.localdomain # 这就是主机名称 Icon name: computer-vm Chassis: vm Machine ID: 567928b865d945a8a3c7211006b3ba40 Boot ID: 61e7c5dfdc194da58102b6271d530da0 Virtualization: vmware Operating System: CentOS Linux 7 (Core) # 操作系统名称 CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 # 内核版本也提供 Architecture: x86-64 # 硬件架构也提供
-
尝试修改主机名称为 zzh 之后再改回来
[root@localhost ~]# hostnamectl set-hostname zzh [root@localhost ~]# cat /etc/hostname zzh # 可以使用reboot重启主机生效主机名,也可以使用bash命令生效主机名 [root@localhost ~]# hostnamectl set-hostname localhost [root@localhost ~]# cat /etc/hostname localhost
日期与时间设置
date
命令可以用来设置系统的日期和时间,但是如果要改变系统的时区,需要使用另外的命令来完成。在 Linux 系统中,时区信息通常保存在 /usr/share/zoneinfo
目录下,每个时区都有一个对应的文件。要改变系统的时区,可以使用 timedatectl
命令。
时区的显示与设置
timedatectl [command]
选项:
list-timezones 列出系统上所有支持的时区名称
set-timezone 设置时区位置
set-time 设置时间
set-ntp 设置网络校时系统
-
显示目前的时区与时间等信息
[root@zzh ~]# timedatectl Local time: 三 2023-05-24 19:36:11 CST Universal time: 三 2023-05-24 11:36:11 UTC RTC time: 三 2023-05-24 11:36:11 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
-
显示出是否有 New_York 时区?若有请将目前的时区更新一下
[root@zzh ~]# timedatectl list-timezones |grep -i new America/New_York America/North_Dakota/New_Salem [root@zzh ~]# timedatectl set-timezone "America/New_York" [root@zzh ~]# timedatectl Local time: 三 2023-05-24 07:40:15 EDT Universal time: 三 2023-05-24 11:40:15 UTC RTC time: 三 2023-05-24 11:40:15 Time zone: America/New_York (EDT, -0400) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: yes
-
最后改回时区
[root@zzh ~]# timedatectl set-timezone "Asia/Shanghai"
时间的调整
当我们虚拟机时间显示不对的时候,我们就需要来调整一下时间,time格式为【yyyy-mm-dd HH:MM】
[root@zzh ~]# timedatectl set-time "2023-5-24 19:45"
Failed to set time: Automatic time synchronization is enabled
显示这个错误就代表你开启了时间同步 如果你要修改时间的话就要关闭时间同步,有些centos 默认会开启时间同步。
关闭时间同步来进行测试,测试完成后,再开启时间同步(NTP)
[root@zzh ~]# timedatectl set-ntp false
[root@zzh ~]# timedatectl
Local time: 三 2023-05-24 19:54:53 CST
Universal time: 三 2023-05-24 11:54:53 UTC
RTC time: 三 2023-05-24 11:54:53
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
# 可以看到时间同步已经关闭了
[root@zzh ~]# timedatectl set-time "2023-5-23 20:00"
[root@zzh ~]# timedatectl
Local time: 二 2023-05-23 20:00:02 CST
Universal time: 二 2023-05-23 12:00:02 UTC
...
# 修改成功
[root@zzh ~]# timedatectl set-ntp true
# 然后再将时间同步开启
用ntpdate手动校时
ntpdate
命令可以手动从 NTP 服务器上获取时间并同步到本地系统。下面是使用 ntpdate
命令手动校时的步骤。
- 安装
ntpdate
命令
在大多数 Linux 发行版中,ntpdate
命令默认已经安装。如果没有安装,可以使用以下命令安装:
[root@zzh ~]# yum install -y ntpdate
- 查找可用的 NTP 服务器
可以使用ntpdate -q
命令查询可用的 NTP 服务器。例如,查询cn.pool.ntp.org
NTP 服务器的时间:
cn.pool.ntp.org是ntp网络授时组织的中国授时源
[root@zzh ~]# ntpdate -q cn.pool.ntp.org
server 162.159.200.123, stratum 3, offset -0.002245, delay 0.24213
server 193.182.111.142, stratum 2, offset -0.003186, delay 0.32124
server 119.28.183.184, stratum 2, offset -0.000999, delay 0.10298
24 May 20:04:29 ntpdate[66877]: adjust time server 119.28.183.184 offset -0.000999 sec
其中,offset
表示本地时间和 NTP 服务器时间的差值,delay
表示本地系统和 NTP 服务器之间的延迟时间。
3. 同步时间
使用 ntpdate
命令同步时间。例如,使用 cn.pool.ntp.org
NTP 服务器同步时间:
[root@zzh ~]# ntpdate cn.pool.ntp.org
24 May 20:13:50 ntpdate[81845]: adjust time server 84.16.73.33 offset -0.004202 sec
[root@zzh ~]# hwclock -w
该命令会从 cn.pool.ntp.org
NTP 服务器上获取时间并同步到本地系统。
hwclock 则是将正确的时间写入你的 BIOS 时间记录内。
语系设置
LANG 和 local 命令可以用来查询当前系统的语系信息和变量,而 /etc/local.conf 文件是语系的配置文件。系统的语系和软件的语言数据可能不同,如果想知道当前系统的语系,可以使用 localectl 命令来查看。
localectl 命令是一个用于管理系统语系的工具。它可以查看和修改系统语系,包括默认语言、键盘布局、时区等信息。使用 localectl 命令不需要编辑配置文件,更加方便。
例如,使用 localectl 命令查看当前系统的语系信息:
[root@zzh ~]# localectl
System Locale: LANG=zh_CN.UTF-8
VC Keymap: cn
X11 Layout: cn
[root@zzh ~]# locale # 下面则是【当前这个软件的语系】信息
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
其中,System Locale
表示系统的默认语言,VC Keymap
表示系统的键盘布局,X11 Layout
表示系统的图形界面键盘布局。
如果想修改系统的语系,可以使用 localectl set-locale 命令,例如:
[root@localhost ~]# localectl set-locale LANG=en_US.UTF-8
[root@localhost ~]# localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: cn
X11 Layout: cn
这个命令会将系统的默认语言设置为 en_US.UTF-8。
防火墙简易设置
防火墙其实是一种网络数据的过滤方式,它可以根据你的服务器启动的服务来设置是否开放,也能够针对你信任的用户开放。由于目前 Centos 7 的默认防火墙机制为 firewalld,它的管理界面主要是通过命令行 firewall-cmd 这个详细的命令。我们用图形界面来介绍防火墙的相关内容
要启动防火墙的图形管理界面,你当然就得要先登录 X 才行。然后到【应用程序】>【杂项】>【防火墙】给它点下去。
配置: 【运行时】与【永久】的差异
如图箭头 1 处,基本上,防火墙的规则拟定大概有两种情况,一种是【暂时用来执行】的退则,一种则是【永久】的规则。一般来说,刚刚启动防火墙时,这两种规则会一模一样。不过,后来可能你会暂时测试而加上几条规则,如果该规则没有写入【永久】区的话,那下次重新加载防火墙时,该规则就会消失。所以请特别注意:【不要只是在运行时记录区增加规则设置,而是必须要永久记录区增加规则行才行】
区域:根据不同的环境所设计的网络区域
在计算机网络中,不同的网络环境可能需要划分不同的区域,以便更好地管理和保护网络资源。这些划分出的区域就是所谓的网络区域。
举个例子,一个大型企业的网络环境可能包括多个部门、多个子公司或者多个地区的分支机构,这些部门、子公司或分支机构之间可能需要进行一定的隔离,以保证各自的网络安全。为了实现这一目的,可以将网络划分为不同的区域,比如内部网络区域、外部网络区域以及 DMZ(即“隔离区域”)等。在这些区域之间设置相应的网络设备(如防火墙、路由器、交换机等),通过规定不同区域之间的访问规则,来实现网络资源的访问控制和安全保护。
总之,网络区域是根据不同的网络环境所设计的,用于实现网络资源的管理、保护和访问控制的一种组织方式。
相关设置项目
4号箭头的地方是重点。防火墙规则通常需要设置的地方有:
服务
:服务是指在网络上运行的应用程序,例如HTTP、FTP、SSH等。在设置防火墙规则时,我们需要指定哪些服务是允许访问的,哪些是禁止访问的。端口
:端口是指网络应用程序使用的通信端口,例如HTTP协议默认使用的端口是80,SSH协议默认使用的端口是22。在设置防火墙规则时,我们需要指定哪些端口是允许访问的,哪些是禁止访问的。协议
:协议是指网络通信中使用的协议,例如TCP、UDP等。在设置防火墙规则时,我们需要指定允许或禁止使用哪些协议进行通信。源端口
:源端口是指发起网络通信的应用程序使用的端口号。在设置防火墙规则时,我们可以指定允许或禁止使用哪些源端口进行通信。伪装
:伪装是一种隐藏机制,可以使网络通信看起来像是从防火墙本身发出的,从而增强网络安全性。在设置防火墙规则时,我们可以使用伪装功能来隐藏内部网络的真实IP地址和端口号。端口转发
:端口转发是一种网络通信机制,它可以将来自外部网络的请求转发到内部网络中的指定主机或端口。在设置防火墙规则时,我们可以使用端口转发功能来实现网络访问的转发和控制。ICMP过滤器
:ICMP是一种网络协议,用于在网络中传递控制信息和错误信息。在设置防火墙规则时,我们可以使用ICMP过滤器来控制网络中的ICMP消息,例如禁止PING等操作。富规则
:富规则是一种高级的防火墙规则,它可以根据不同的协议、源IP地址、目标IP地址、端口号等条件来设置访问策略。富规则可以更加灵活地控制网络访问,但设置起来也更加复杂。网卡
:网卡是指网络设备的物理或逻辑接口,例如网卡、虚拟网卡等。在设置防火墙规则时,我们需要指定哪些网卡是允许访问的,哪些是禁止访问的。来源
:在设置防火墙规则时,我们需要指定允许或禁止哪些来源访问网络,例如指定允许内部网络访问,禁止外部网络访问等。
案例
现在我们的Linux服务器是要作为下面几个重要服务于相关的域名功能,你该如何配置防火墙?
- 开放ssh、www、ftp、https 等服务的常规端口
- 同时与前面几章搭配,还需要开放222端口与555端口
- 局域网络 192.168.200.0/24 是我们目前想要直接开放这段域名对我们服务器的连接
请注意,因为未来都要持续生效,所以请一定要到【永久】的防火墙设置项目里面去处理。不然只有这次开机期间会生效而已。
首先处理一下常规服务器开放,不过因为永久设置比较重要,因此你得要先经过授权认证才行
如下图所示,你要先确认箭头 1、2 、3的地方是正确的,如何再直接勾选 ftp、http、https、ssh即可。因为ssh默认被勾选就不再展示。比较特别的是勾选就生效,没有【确认】键
接下来按下【端口】的页面,如下图,按下【添加】之后出现的窗口当中填写你需要的端口号,通常也就是tcp协议保留它不动,之后按下【确定】即可
因为我们有两个端口要增加,所以请将222与555端口也添加,如下图
最后一个要处理的是局域网络开放,这时你可以这样执行命令
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.0/24" accept"
success
[root@localhost ~]# firewall-cmd --reload
success
最后一行很重要,我们上面的图例通通是作用于【永久】设置中,只是修改了配置文件,要让这些设置实际生效,那么就得要使用上面的reload,让防火墙系统整个完整的加载一行就行了。
代码解释
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.0/24" accept"
:
这条命令的作用是向防火墙添加一条永久规则,允许来自IP地址段为192.168.200.0/24的所有主机访问服务器。其中,–permanent选项表示将规则永久保存在防火墙中,add-rich-rule是添加富规则的命令,"rule family=“ipv4” source address=“192.168.200.0/24” accept"是具体的规则内容,它指定了规则的IP版本为IPv4,源IP地址为192.168.200.0/24,动作为允许访问。firewall-cmd --reload
:
这条命令的作用是重新加载防火墙规则,使刚刚添加的永久规则生效。
执行这两条命令后,就可以允许来自192.168.200.0/24地址段的主机访问服务器了。