管理网络服务
2024年3月16日 8:35
RHEL8之前:network.service NetworkManager
在Linux系统中如何进程服务管理:DHCP HTTPD vsftpd等
Systemctl start/stop/restart/reload(重新加载文件)/enable/disable/不启动
[root@servera ~]# systemctl start httpd.service
当我通过start指令启动一个服务的时候,对应的进程是通过什么方式启动。
[root@servera ~]# systemctl cat httpd.service
# /usr/lib/systemd/system/httpd.service
# See httpd.service(8) for more information on using the httpd service.
定义ExecStart来定义进程启动的方式
[root@servera ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service →
/usr/lib/systemd/system/httpd.service.
[root@servera ~]# systemctl disable httpd.service
[root@servera ~]# systemctl mask httpd
Created symlink /etc/systemd/system/httpd.service → /dev/null.
[root@servera ~]# systemctl start httpd
Failed to start httpd.service: Unit httpd.service is masked.
[root@servera ~]# systemctl unmask httpd.service Removed /etc/systemd/system/httpd.service.
[root@servera ~]# systemctl start httpd.service
NetworkManager管理网络:
1: device 设备:物理网卡,物理设备
DEVICE:设备
TYPE:设备的类型
STATE: connected 这个设备已经有连接和他关联,disconnected,没有连接关联
CONNECTION: 所关联的连接的名称
2:connection: 连接一个连接保存是一个关联的设备的信息(配置信息和硬件信息)
MAC地址,IP地址
NAME:连接的名字
UUID:每一个连接都有一个唯一的名字
TYPE: 连接的类型
DEVICE: 这个连接所关联的设备是谁
设备关联到连接上去。
3:网卡的配置文件
Ifcfg-连接的名字,保存的就是部分的连接属性
配置网络信息 eth2:配置网络信息:
1:查看eth2是否有关联的连接
2: 如果没有关联的连接,就需要创建连接和这个设备关联(连接怎么创建和查看)
3: 修改连接: method(auto,manual),ipv4,dns,gateway
4: 启动连接
修改
+增加一个地址
-减去一个地址
通过Ansible自动化管理服务和网络配置服务配置所使用的Ansible模块: service模块
state: started(stopped,restarted) name: httpd
enabled: true
daemon-reload: true/当你修改过服务的单元配置文件的时候
通过service_facts
server: ansible使用的完整的方式
ansible管理网络:已经提供了network这个角色。怎么使用呢?仅仅是需要给角色传递合适的变量值: role 都有README
network_connections: name: 连接的名字
state: 连接的状态.up/down
type: 类型
autoconnect:
mac:
ip:
address
获取网络的配置信息:254/RHCE
如何通过Ansible来配置网络信息
配置链路聚合
2024年3月16日 8:46
将物理物理网卡,利用team绑定在一起流程:
1: 创建逻辑设备(team设备)
2: 将物理网卡添加到team设备上(给物理设备添加连接)
3: 给team设备配置网络信息(网络信息千万不要配置在物理网卡上)
4: 启动或者关闭
如何通过Ansible实现链路聚合:
1:需要创建一个team,并配置IP地址
2:需要把物理网卡加入到team中
3:需要修改team的runner(通过tasks的方式进行修改)
管理和配置DNS
2024年3月16日 8:47
1:DNS的解析过程
2:DNS的一些基本概念
3:正向解析
4:方向解析
5:DNS master-slave 6: 转发类型的DNS
7:缓存的DNS服务器
DNS:把FQDN(完全合格名称,)解析得到他对应的IP地址:www.baidu.com 只能是通过IP地址
FQDN--->IP
解析过程:
迭代,递归过程、
实现DNS服务的软件:bind/ubond bind
具体的操作过程:
1:安装包
2:配置文件路径
3:查看配置文件
DNS: 监听的端口是53. UDP TCP 查询过程所使用的端口就是UDP主从同步的时候master dns/slave dns master-slave: TCP 53 Directory: 文件路径,包括区域配置文件
allow-query: 允许查询的网段
是否允许递归查询
pid文件路径
日志文件路径
DNS最难的就是区域配置文件:
什么叫区域lab.example.com exmaple.com.lab.example.com
zone “lab.example.com" IN{
file "lab.example.com" #lab.example.com是个文件区域配置文件()
}
区域配置文件保存了什么信息:和解析有关的信息MX.DNS.SOA.A.PTR CNAME等
根域的配置文件
###配置lab.example.com
正向解析的区域配置文件在这样的区域配置文件内:包含的是从FQDN--->IP的解析
A 记录FQDN--->IP 必须有的一个A记录是DNS服务器的A记录
MX 邮件服务记录 10代表优先级:存在多个邮件服务器的情况下
NS:DNS服务器记录
SOA: 起始授权记录
CNAME:别名记录。当有访问kevin.lab.example.com---->servera
查找
反向区域配置文件: 就是解析从IP-->FQDN的解析
PTR记录:反向解析记录
DNS主从同步:
把区域配置文件从master同步到slave以后,slave也可以作为DNS服务器解析并且slave的区域配置文件不要去修改,修改的都是主的DNS区域文件
主从同步使用的端口号是TCP:53
从的DNS服务器上,除了区域配置文件不用写之外,其余的全部要配置
1:在从的DNS服务器上安装软件
2:把主DNS服务器配置同步过来
3:修改主和从的DNS配置文件主DNS:
从DNS:
仅转发的DNS服务器:
1: 安装软件
2: 配置
缓存DNS服务器:
这两种DNS服务器,都没有自己的区域配置文件
servera: named stop serverd ping kevin ok!
serverc: restart
清除缓存测试
管理和配置DHCP服务器
2024年3月16日 17:10
DHCP: 动态的分配IP地址
工作流程DHCPV4
具体怎么部署:
1:安装DHCP服务器的包
2:修改DHCP的配置
-t 测试配置文件是否有语法错误
固定地址
使用Ansible对于服务的部署:通常情况下要遵循一下流程:
1:配置yum源和装包。
yum_repository:
装包的模块:yum或者dnf
2: 如果服务有其他需要读取的数据(比如是个web),就需要把数据传输过去
尽量不要用copy模块。
synchronize模块:支持增量传输、压缩等(sync)
3: 把服务的配置文件做成模版,使用template处理,最重要的时候在配置文件部分都需要
配合notify和handlers.
template:
4:服务的管理
service
5: 如果存在防火墙。防火墙的规则配置
firewalld
6:配置Handlers servicve
部署DHCP服务器:自动的部署Client
[student@workstation dhcp-automation]$ cat dhcpd.yml
---
- name: Config dhcpd server on servera hosts: dhcp_serversbecome:true
vars_files:
- mac_ip.yml vars:network_connections:
-name:eth1 state: up
interface_name:eth1 type: ethernet
ip:
dhcp4:no address:
-10.10.10.10/24
roles:
- linux-system-roles.network tasks:
- name: install dhcpd-serveryum:
name: dhcp-server state: present
- name: prepare dhcpd server configuration template:src: dhcpd.j2
dest: /etc/dhcp/dhcpd.conf notify: restart server
- name:startdhcpdserver service:name:"{{item}}" state: started enabled:trueloop:
- dhcpd
- firewalld
- name: configure firewalld:state: enabled permanent: yes service: dhcp immediate: yes
handlers: - name: restart server service:
name: dhcp
state: restarted
[student@workstation dhcp-automation]$
模版文件
- name: Config dhcpd server on servera hosts: clients
重点就是:得到这个文件
[student@workstation dhcp-automation]$ cat mac_ip.yml IPMAC_INFO:
- { host: servera , MAC: "52:54:00:01:fa:0b" , IP: 10.10.10.11 }
- { host: serverb , MAC: "52:54:00:01:fa:0c" , IP: 10.10.10.12 }
- { host: serverc , MAC: "52:54:00:01:fa:0d" , IP: 10.10.10.13 }
[student@workstation dhcp-automation]$
Client
---
become: true vars:
network_connections:
- name: eth1 state: up
interface_name: eth1 type: ethernet
ip:
dhcp4: yes roles:
- linux-system-roles.network
强调的一点:
你如果你要配置静态IP地:
址。就比较麻烦
管理和配置打印机CUPS
2024年3月16日 18:57
具体如何操作才能让Linux主机连接打印机,并且打印作业! [student@workstation ~]$ lab printing-config start 模拟一个打印机1:安装包
能够让Servera去接收打印机发送的自己的性能数据
2:通过ippfind 命令查找在这个网络上有哪些打印机
ipp: 网络的连接方式,无驱动的连接方式
3:创建打印机队列
-p队列的名称
-v打印机的地址
-m everywhere网络打印
-E 启用队列
如果我的打印机队列比较多:一个打印机对应一个队列
在默认情况下,使用哪个打印队列呢?
-d default : 制定默认的打印队列
默认的打印队列是谁
删除打印队列
打印作业?打印文件
打印的时候,可以通过-d参数去制定使用哪个打印队列去打印作业
暂停队列
reject:代表不再接收打印作业
如何通过Ansible自动化来实现!
配置空客户端的邮件服务器
2024年3月16日 18:57
邮件投递过程
空客户端
对于空客户端而言,最重要的就是中继邮件
软件使用postfix,并且由于使用的是空客户端,所以不需要关注防火墙的问题
具体实现
1: 安装包
2:配置文件路径
最重要的几个配置
我的域名叫什么
我的FQDN叫什么
收到邮件的时候,显示的发件人@后面的内容
$myhostname引用了myhostname的设置
postfix所监听的端口,只是null client,所以我只是监听 loopback-only
user1@lab.example.com @example.com @localhost @后面的内容
问题是:null client不需要有自己的用户
我信任的客户端网段,null client
·=127.0.0.1/8
把邮件推送(中继)到哪个邮件服务器
smtp.lab.example.com
验证:
由于servera是个null client邮件服务器,所以不会把邮件投递到用户邮箱。应该上级邮件服务器:relayhost: smtp.lab.example.com
如何通过Ansible来邮件服务器的自动化呢?对于RedHat而言,已经提供了role来实现邮件服务器的自动化
1:安装含有角色的包
2:编写剧本
maraidb数据库
2024年3月23日 8:25
Mariadb的安装
or
mariabd的配置文件
datadir: 你的数据库文件路径
socket: 套接字文件
log-error
pid文件的
MySQL的主从,日志,高可用,备份和恢复
启动mariadb服务员
防火墙的配置
安全有关的配置
1:给root用户设置密码
2:禁止root用户远程登录
3:如果存在测试库,那么删除测试库
4:如果存在匿名用户就要删除匿名用户
Mariabd的连接方式
-h:就是通过TCP/IP的连接方式,只要你配置正确。那么你可以任意节点
使用TCP/IP的连接方式
-S指定套接字文件路径。不能从其他的节点通过这种方式进行连接
skip-networking: 特点,加上去之后 mariadb不会监听任何端口
从serverb连接到Servera:
1:在Servera上没有加skip-networking
2:你servera允许3306端口
3:需要在Serverb上安装Client工具
4:最重要的一点:
identified by 'redhat'; 这是是密码
user1@'serverb.lab.example.com'
user1: 是用户名
@serverb.lab.example.com: 代表这个用户可以从哪个主机连接到
mariadb数据库上
也就是@后面指定的主机
如果想让这样的用户可以从任意节点进行连接
权限
全局类型的权限:CREATE DATABASE/CREATE USER /GRANT等
库Database: 增删改查表:增删改查
GRANT:
1: 我想给USER1授予所有的权限
all privileges: 代表所有的权限
权限: CREATE.UPDATE.DELETE.UPDATA.ALTER.DROP.GRANT等
on *.* database_name.table_name:
to 授予权限给某个用户
3: user3针对redhat这个库具备所有的权限
4:user2: db_redhatr.t1具备Select权限
权限回收:revoke
权限查看
SQL语句:
哪些库
drop database删除库
连接库,使用这个库USE
HOST | user | password | select_ pri | colum e5 | colum e6 | colum e7 | colum e5 |
localh ost | root | *84BB5DF4823DA319BBF86 C99624479A198E6EEE9 | Y | Y | Y | Y | Y |
创建表
drop table连同表结构都一起删除
SELECT语句
联合查询:
得到的结果:
MYSQL的备份
逻辑备份:
在备份的时候如果什么参数都没加入,那么在还原的时候需要事先把创建好
所以在执行逻辑备份加入额外的参数
--routing --events -F
自动部署Mariadb ---Ansible使用到的Ansible模块 1:yum
2: service
3: firewalld
4: mysql_user
5: mysql_db
部署Mariadb-server
web服务
2024年3月23日 8:26
Apache web服务器:
安装:
配置文件路径
在修改这个配置文件的时候:我们都是去修改/etc/httpd/conf.d/以.conf结尾的文件
ServerRoot "/etc/httpd" apache有关的文件/etc/httpd
Listen 12.34.56.78:80 监听的IP和端口
Listen 80 *80 如果不加,那就是所有的IP地址的80端口Include conf.modules.d/*.conf httpd模块配置的路径。http功能以模块化设计。功能模块所存放的路径
代表的是要加载什么样的模块
User apache :当我们的httpd服务起来以后,相关的进程的拥有者和属组是apache。后续你的apache如果要读取某个文件那么针对这个apache必须要有足够的权限。
Group apache
ServerAdmin root@localhost :管理者邮箱
ServerName www.example.com 主机名叫什么
<Directory /> 针对目录做的设置/etc/httpd
AllowOverride none 不允许被覆盖
Require all denied 所有人不需要被访问
</Directory>
DocumentRoot "/var/www/html" 放置程序或者静态页面的路径
<Directory "/var/www/html">
Options Indexes FollowSymLinks 放目录和链接文件
Require all granted 所有人都能访问
AllowOverride None
</Directory>
ErrorLog "logs/error_log" 错误日志路径/etc/h
LogLevel warn
CustomLog "logs/access_log" common 访问日志
你不需要做任何修改,启动服务,访问,设置防火墙
配置虚拟机的方式去配置httpd web服务器
虚拟主机:在你使用了虚拟主机的情况下,在一个web服务器上,你可以配置多个域名,或者多个端口去访问
虚拟机:一般都是在/etc/httpd/conf.d/servera.conf
当我们修改过DocumentRoot的时候,记住一定要修改该路径的安全性上下文
代表的是修改这个目录的默认的安全性上下文可以用restoren来还原默认的安全性上下文
基于端口的虚拟机
需要去修改端口的Selinux上下文
Apache的https
证书的:
1:你可以是自己签名的证书
2:找权威机构搞
如配去配置web服务器:
1:装包:一定mod_ssl 这个就apache web的https功能模块
2:配置虚拟主机
可以看出我们是通过CA中心的证书,去严正server的证书的合法性验证仅仅是涉及到sever的合法性,还没涉及到数据加密
身份验证的功能:http的身份验证方式:IDM(LDAP+Kerberos),httpd basic验证方式
httpd basic验证方式:就是把用户名和密码放在一个文件内就可以了
nginx的web服务器!负载均衡器!nginx/haproxy
nginx的安装:
1> 源码的方式进行安装
2 > 二进制文件的方式进行安装
3> rpm包的安装方式
配置文件路径
user nginx; 代表的使用nginx的进程的拥有者是谁 worker_processes auto; nginx的工作进程有多少个可以设置数量 error_log /var/log/nginx/error.log; 错误日志的路径
pid /run/nginx.pid; pid文件的路径
events {
worker_connections 1024; work进程可以处理多少个TCP连接
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format 日志格式:日志保存在日志文件内的时候以一个什么样的格式
access_log /var/log/nginx/access.log main;
access_log 访问日志
sendfile on;
是否可以使用这个sendfile()系统调用
tcp_nopush on;
可以节约网络开销,但是相应会稍微的比tcp_nodelay要慢点
tcp_nodelay on;
相应就会快点。但是网络开销要大于这个nopush
keepalive_timeout 65;
连接保持
types_hash_max_size 2048;
include /etc/nginx/mime.types;
# 能够支持什么样的数据类型default_type application/octet-stream;默认的
include /etc/nginx/conf.d/*.conf;
把/etc/nginx/conf.d/*.conf 都会读取作为nginx的配置文件,一般情况下
在/etc/nginx/conf.d/*.conf 里面的内容我们只会定义
server {
location
}
server块就是在nginx上定义虚拟主机
server {
acl 172.25.250.9/24 ; 定义访问控制列表:
listen 80 default_server; 虚拟主机监听的端口
server_name servera.lab.example.com weight=90; #也可以正则表达式location / {
# http://servera.lab.example.com/hello/test/a.html
#location后面的路径就代表的是:/hello/test/a.html这样的路径是方式服务器的
root 命令所定义的路径下面
你的静态文件或者程序所存放的路径index index.html; 这个叫默认页面 root /usr/share/nginx/html;
}
error_page 404 /404.html; location = /40x.html {
}
error_page 500 502 503 504 /50x.html; location = /50x.html {
}
}
配置nginx虚拟主机
nginx的访问控制
^以什么开头
$以什么结尾
. 当前只有一个字符
+ 前面这个字符重复1次到任意多次
?前面一个字符重复0次或者一次
* 前面一个字符重复0次到任意多次
{n,m}代表前面的字符重复n次到m次
\d 数字
\D
\s
\S
\w
\W
[a-z]这个范围内取一个
nginx的https
web服务的自动化
nginx: web server
优化web服务器流量
2024年3月24日 11:06
当web服务器在前端加入过缓存服务器的时候访问流程:
1:2:如果Client所访问的数据在varnish已经缓存过了,那么数据会从varnish server直接传递给Client
3: 如果Client所访问的数据在varnish server没有被缓存,那么varnish server和web server建立TCP连接。同事获取数据并且把数据缓存在内存内。最后再通过varnish server 把数据传递给Client
那么varnish怎么部署安装和配置:安装:
配置varnish
由于进程有两种类型的进程:
管理进程:主要的管理进程:配置前端访问的端口和用于缓存数据的内存大小:
ExceStart= 用来覆盖默认的配置
ExceStart = 81 -->256M
-f /etc/varnish/default.vcl这个就是内置子进程的配置路径
内置子进程:
控制缓存行为用的 VCL语言来进程配置。 VCL 是一个
varnish的配置语言
编辑:/etc/varnish/default.vcl
第一配置:配置后端服务器:
backend 定义后端: host代表后端的主机,port后端服务监听的端口
配置varnish的内置子进程:
nginX:配置
每个不同的子进程都有自己对应的retunrn动作!VCL是否是用来专门定义这些动作呢?不是的。所有的子进程都有默认动作!除非你想更改这个默认动作,否则没必要去专门针对对应的子进程配置return
vcl_hash lookup: 查找缓存数据。
vcl_hit: fetch
那我们在什么样的情况下,需要去针对特定的子进程做配置:
1:你要更改默认的动作/pipe: retrun error
2: 在你需要去修改http头部信息的时候,这个时候就需要定义了
req respose berequest besponse
比如你要定义TTL时间。等
要修改response http头部数据。就应该在vcl_deliver子进程
beresponse--->vcl_backend_response子进程内
req在vcl_recv子进程内设置
beresq: vcl_miss或者vcl_hit内设置
负载均衡器:软件类型:
四层的负载均衡器:LVS
七层负载均衡器:
nginx/haproxy/apache
硬件类型:
F5
工作原理:四层:LVS
七层负载均衡服务器不一样:nginx/haproxy/apache
HAProxy: 部署和配置
1:安装软件包
2:修改haproxy的配置
log:日志是发送到日志设备2
chroot: 当我们的haproxy服务启动以后。会绑定到/var/lib/haproxy目录下
这个目录会作为haproxy进程的/目录
maxconn: 最大连接数 pidfile: pid文件的路径 user: 进程的拥有者是谁 group 属组是谁
daemon: 以后端进程的方式运行haproxy
mode: http七层的负载均衡器
log: global全局配置中的日志配置
使用HAProxy对Varnish做负载均衡!
NFS和Samba
2024年3月30日 8:56
NAS: 有两种Network attch system
1: NFS Network File system
2: Samba:和windows的是差不多的
具体操作
1:安装包:
2: 修改配置文件
/share: 代表共享目录
serverb.lab.example.com:代表ACL:谁能访问我的共享
*.lab.example.com
172.25.250.9: 固定的IP
172.25.250.0/24这个网段内的主机都可以访问
*代表所有的主机的都可以访问
(rw):代表共享参数
rw: 可读可写
ro: 只读
no_root_squash root_squash all_squash squash uid gid
3: 启动服务
Client: 只需要挂载
由此可以提供nfs 文件系统
以及自动挂载
解决权限问题:
关于Samba:
1: 创建一个共享目录
2:安装Samba相对应的包
3:修改samaba的配置
workgroup:工作组
security = user使用本地系统用户作为samba用户
user1想成为samba用户
useradd user1
pedbit -a -u user1 ##把user1添加为samba用户
[homes] 用户家目录的共享
[printers]代表的是打印机的共享
[share]: []括号内叫共享名称
comment: 描述信息
path: 共享路径
browseable: 是否可浏览
4:服务启动
五:创建samba用户
五:Client
cifs-utils:提供了samba文件系统
samba-client:提供了Client端工具
权限问题:
分析:
1: 首先看使用身份验证的用户对于共享目录是否有足够的权限user1
2: Selinux的问题
3: SAMBA的配置问题
# read only = yes 默认情况下,所有人都是只读writeable = yes 只要是个samba用户那么所有人都是可读可写
write list = user1,user2 哪些人可读可写,@user1: user1
是个组,这个组内的用户都可以可读可写
流量加密:
多用户挂载
访问基于块的⽹络存储
2024年3月30日 8:57
目标:target存储资源,向Client提供LUN(逻辑存储单元) 物理存储和他对应 必须要有一个唯一的标识
IQN: 标识这个Target,标识这个启动器
iqn: 的标识方式:
iqn.YYYY-MM.com.example.lab:(name)
YYYY-MM:获取FQDN的年份和月份
门户:可以用来访问目标的IP和端口
TPG:包含一个目标的所有配置
ACL: 允许Client的IQN
部署:
配置目标:
Client: 如果需要挂载怎么办: