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<UP,BROADCAST,RUNNING,MULTICAST>  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]# 

運行playbook
紅帽已經給你把這個角色寫好了,只用提供相關變量