rh358 001 Linux网络与systemd设置

358 rhel7 ce
ansible 部署服务
dhcp nginx vanish haproxy 打印机服务

服务管理自动化

systemd与systemctl

systemctl 来管理systemd的对象(unit单元)
systemctl 显示服务单元
大致有以下几类

slice   (资源片段,与调优有关)
target   (紧急模式之类,文本模式multi-user.target)
service  (与服务有关)
socket   (进程通信)

systemctl 通过单元配置文件来管理

[root@localhost ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset>
Active: active (running) since Sat 2022-08-27 13:07:05 CST; 1min 18s ago



[root@localhost ~]# cat /usr/lib/systemd/system/sshd.service 
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target          after和before启动顺序
Wants=sshd-keygen.target               依赖关系

[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config       环境变量所在的文件
EnvironmentFile=-/etc/sysconfig/sshd                          
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY        调用进程      ($OPTIONS $CRYPTO_POLICY 调用环境变量)
ExecReload=/bin/kill -HUP $MAINPID     (systemctl   reload    sshd   =  /bin/kill -HUP $MAINPID[sshd pid])  
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
[root@localhost ~]# 


[root@localhost ~]# killall -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
[root@localhost ~]# 
HUP信号量   让进程重新读取配置文件
/bin/kill -HUP $MAINPID     

restart 会使mainpid发生变化
reload不会

systemctl 要控制单元,必须依赖于单元配置文件
改了单元配置文件需要 systemctl daemon-reload

1.自定义了单元配置文件:mysql你用二进制安装
2.调优的时候,需要改动这些文件
3.修改某些服务的启动方式的参数。docker服务

systemctl enable [service]
enable时会创建链接文件

[root@localhost ~]# systemctl enable sshd
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.

disable则删除了

服务日志的查看

日志信息
1.服务本身自己的日志输出 服务自定的定义
2.systemd-journal 保存在内存中
systemctl status systemd-journald

查看journald

[root@localhost ~]# journalctl -p err
-- Logs begin at Sat 2022-08-27 13:07:00 CST, end at Sat 2022-08-27 13:37:29 CS>
Aug 27 13:07:04 localhost.localdomain kernel: piix4_smbus 0000:00:07.3: SMBus H>
Aug 27 13:07:04 localhost.localdomain smartd[1047]: DEVICESCAN failed: glob(3) >
Aug 27 13:07:04 localhost.localdomain smartd[1047]: In the system's table of de>
Aug 27 13:07:06 localhost.localdomain systemd[1]: Failed to start Crash recover>
Aug 27 13:17:03 localhost.localdomain systemd[1]: Failed to start dnf makecache.
lines 1-6/6 (END)
查看日志级别


[root@localhost ~]# journalctl -p err -u httpd
-- Logs begin at Sat 2022-08-27 13:07:00 CST, end at Sat 2022-08-27 13:37:29 CS>
-- No entries --
lines 1-2/2 (END)

-f会实时监控

[root@localhost ~]# journalctl --sinc "13:00:00" --unit "13:03:00"
systemctl status   sshd  -l

服务启动依赖项

[root@localhost ~]# systemctl list-dependencies graphical.target 
graphical.target
● ├─accounts-daemon.service
● ├─gdm.service
● ├─rtkit-daemon.service
● ├─systemd-update-utmp-runlevel.service
● ├─udisks2.service
● └─multi-user.target
●   ├─atd.service
●   ├─auditd.service
●   ├─avahi-daemon.service
●   ├─crond.service
●   ├─cups.path
●   ├─dbus.service
●   ├─dnf-makecache.timer
●   ├─firewalld.service
●   ├─irqbalance.service
●   ├─kdump.service
●   ├─ksm.service
●   ├─ksmtuned.service
●   ├─libstoragemgmt.service
●   ├─libvirtd.service
●   ├─mcelog.service
●   ├─mdmonitor.service
lines 1-23

服务屏蔽
systemctl mask httpd
将单元配置文件指向/dev/null

systemctl status/start/stop/restart/reload/disable/enable/mask/unmask/list-dependency/journalctl/单元配置文件

配置网络接口

[root@localhost multi-user.target.wants]# nmcli connection show 'ens160'
connection.id:                          ens160
connection.uuid:                        25d20a42-f84e-4c51-8df9-bfcefa11b1b0
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens160
connection.autoconnect:                 no
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1655383585

device指的物理设备
connection连接指的是它所关联的设备的配置集合

配置设备的网络信息,看他是否关联了连接

将网卡的配置永久保存在连接里
[root@localhost multi-user.target.wants]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
UUID=25d20a42-f84e-4c51-8df9-bfcefa11b1b0
DEVICE=ens160
ONBOOT=no

启动时加载文件
对于一个设备可以有多套连接,每个连接针对不同的配置。只有一个连接处于active

改网络设备,先确定设备有哪些,和网络设备有关联的连接

[root@localhost multi-user.target.wants]# nmcli device 
DEVICE      TYPE      STATE         CONNECTION 
virbr0      bridge    connected     virbr0     
ens160      ethernet  disconnected  --         
lo          loopback  unmanaged     --         
virbr0-nic  tun       unmanaged     --    

没有连接则需要创建连接关联设备

[root@localhost multi-user.target.wants]# nmcli  connection  add  con-name eth1 type ethernet ifname ens160 autoconnect no
Connection 'eth1' (930ef42d-0377-48cb-8e16-52ad91ef8857) successfully added.
[root@localhost multi-user.target.wants]# ll /etc/sysconfig/network-scripts/ifcfg-eth1 
-rw-r--r--. 1 root root 279 Aug 27 14:33 /etc/sysconfig/network-scripts/ifcfg-eth1
[root@localhost multi-user.target.wants]# 

持久化保存配置
ifname设备名
con-name连接名

方式一:nmcli
方式二:修改配置文件

注意
nmcli connection modify 之后需要up激活

ipv4.gateway 不要重复设置,两个连接两个不同的gateway,两个不同的设备,重复设置gateway。那么默认路由则会有两条。没有意义

没有环境做这个实验。弱化这一块,提供思路但是我并未实践
假设我的ip为10.10.10.22   我已经可也通外网了,我还得需要访问内部网络192.168.10.0

添加特定路由
ip route  add  192.168.10.0/24  dev eth2
添加ip
nmcli connection modify  eth2 +ipv4.address  192.168.10.1/24   (这样也会添加路由)
配置子接口
网络工程师会给你搞定网络的事。这里主要时说,让你不要重复两个网关。

dns可以写多个。但不能写太多
不管几个网卡配了dns
所有dns配置都会写到 /etc/resolv.conf 这个文件内
DNS1
DNS后面必须加数字

网卡不能生效的问题:连接和设备关联不上,配置ip不生效
方式1:通过MAC地址强关联 HWADDR=52:54:00:07:a1:40
方式2:删除连接重新开始建

修改设备名
通过MAC强绑定 修改device
DEVICE=supermaohero
HWADDR=00:0c:29:a9:3d:60

supermao: flags=4163  mtu 1500
        ether 00:0c:29:a9:3d:60  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ansible 配置网络

rhel-system-roles 提供一个修改网络的系统 rhel-system-roles.network
对于别人提供的role你要用
你就需要提供合适变量就可以完成工作

下载 rhel-system-roles.network

[root@localhost rhel-system-roles.network]# pwd
/usr/share/ansible/roles/rhel-system-roles.network
[root@localhost rhel-system-roles.network]# ll README.md 
-rw-r--r--. 1 root root 34346 Aug 28  2021 README.md
[root@localhost rhel-system-roles.network]# 

rh358 001 Linux网络与systemd设置插图

运行playbook
红帽已经给你把这个角色写好了,只用提供相关变量

文章来源于互联网:rh358 001 Linux网络与systemd设置

THE END
分享
二维码