2018-06-13(日常运维三)
10.19 iptables規則備份和恢復
service iptables save 將規則保存到默認配置文件/etc/sysconfig/iptables
iptables如果不使用service iptables save命令,則重啟之后規則會全部消失。
如果想啟動服務就讓有規則,就把iptables保存在/etc/sysconfig/iptables
利用iptables-save保存規則到指定路徑:iptables-save > /tmp/my.ipt
利用iptables-restore恢復指定路徑保存的規則:iptables-restore < /tmp/my.ipt
10.20 firewalld的9個zone
打開firewalld,先關閉iptables
systemctl disable iptables
systemctl stop iptables
systemctl enable firewalld
systemctl start firewalld
firewalld默認的9個zone :默認zone為public;
drop(丟棄):任何接收的網絡數據包都被丟棄,沒有任何回復;
block(限制):任何接收的網絡連接都被ipv4的icmp-host-prohibited信息和ipv6的icmp-host-prohibited信息所拒絕;(針對icmp)
public(公共):在公共區域內使用,不能相信網絡內的其他計算機不會對你的計算機造成危害,只能接收經過選取;
external(外部):特別是為路由器啟用了偽裝功能的外部網,你不能信任來自網絡的其他計算,不能相信他們不會對你造成傷害,只能接受經過選擇的連接。
dmz(非軍事區):用于你的非軍事區內的電腦,此區域可公開訪問,可以有限的進入你的內部網絡,僅僅接受經過選擇的連接。
work(工作):用于工作區,你可以基本信任網絡內的其他電腦不會對你造成危害,僅僅接收經過選擇的連接。
home(家庭):用于內部網絡,你可以基本上信任網絡內其他電腦不會對你造成危害,僅僅接收經過選擇的連接。
internal(內部):用于內部網絡,你可以基本上信任網絡內其他電腦不會對你造成危害,僅僅接收經過選擇的連接。
trusted(信任):可接受所有的網絡連接
firewalld有zone和service兩個基礎概念
10.21 firewalld關于zone的操作
查看所有zone:
[root@luo ~]# firewall-cmd --get-zones block dmz drop external home internal public trusted work查看默認zone:
[root@luo ~]# firewall-cmd --get-default-zone publicfirewall-cmd命令zone的操作:
[root@luo ~]# firewall-cmd --set-default-zone=work 設定默認zone為work success [root@luo ~]# firewall-cmd --get-zone-of-interface=ens33 查看指定網卡所在的zone work [root@luo ~]# firewall-cmd --zone=public --add-interface=lo 給指定網卡設置zone success [root@luo ~]# firewall-cmd --zone=dmz --change-interface=lo 針對指定網卡更改zone success [root@luo ~]# firewall-cmd --zone=dmz --remove-interface=lo 針對網卡刪除zone success [root@luo ~]# firewall-cmd --get-active-zones 查看系統所有網卡所在的zone workinterfaces: ens3310.22 firewalld關于service的操作
配置文件模板路徑:/usr/lib/firewalld/services/
實際生效配置目錄:/etc/firewalld/services/
把系統文件內所有的service列出來
列出默認zone下的service
[root@luo ~]# firewall-cmd --list-services ssh dhcpv6-client列出指定的zone下的service :firewall-cmd --zone=(zone名) --list-service
[root@luo ~]# firewall-cmd --zone=public --list-service ssh dhcpv6-client把service加入到指定zone下;只是暫時寫入內存中;firewall-cmd --zone=(zone名) --add-service=(service名)
[root@luo ~]# firewall-cmd --zone=public --add-service=http 添加http服務到public zone success [root@luo ~]# firewall-cmd --zone=public --list-service ssh dhcpv6-client http修改配置文件,添加http服務到public zone,永久的
[root@luo ~]# firewall-cmd --zone=public --add-service=http --permanent success10.23 linux任務計劃cron
crontab 命令
-u 表示指定某個用戶,不加-u則表示當前用戶
-e 表示指定任務計劃
-l 表示列出任務計劃
-r 表示刪除任務計劃
格式:分 時 日 月 周 命令
分的范圍:0-59 (* 表示所有)
時的范圍:0-23 (* 表示所有)
日的范圍:1-31 (* 表示所有)
月的范圍:1-12 (* 表示所有)
周的范圍:0-6(Sunday=0 or 7) (* 表示所有)
任務計劃不執行,一般有兩種情況:1.crond服務沒啟動,默認是開機啟動的。2.PATH沒有命令的路徑,腳本中沒使用絕對路徑導致命令找不到
啟動crond服務:
停止crond服務:
[root@luo ~]# systemctl stop crond.service10.24 chkconfig工具
查看預設服務:
[root@luo ~]# ls /etc/init.d/ functions mysqld netconsole network README列出服務和級別開啟狀態:chkconfig --list
[root@luo ~]# chkconfig --list注:該輸出結果只顯示 SysV 服務,并不包含 原生 systemd 服務。SysV 配置數據 可能被原生 systemd 配置覆蓋。 要列出 systemd 服務,請執行 'systemctl list-unit-files'。查看在具體 target 啟用的服務請執行'systemctl list-dependencies [target]'。netconsole 0:關 1:關 2:關 3:關 4:關 5:關 6:關 network 0:關 1:關 2:開 3:開 4:開 5:開 6:關centos7之前采用的服務管理是:SysV;7則換成了system
--add 增加所指定的系統服務,讓chkconfig指令得以管理它,并同時在系統啟動的敘述文件內增加相關數據。
--del 刪除所指定的系統服務,不再由chkconfig指令管理,并同時在系統啟動的敘述文件內刪除相關數據。
--level<等級代號> 指定讀系統服務要在哪一個執行等級中開啟或關畢。
0:關機 1:單用戶 2:無網絡連接的多用戶命令行模式 3:有網絡連接的多用戶命令行模式(常用級別) 4:系統保留 5:圖形化界面 6:重啟
更改某級別下的開機狀態:
多個級別:chkconfig --level 345 mysqld off
不加級別表示省略;默認針對級別2、3、4、5、
刪除:chkconfig --del 服務名
添加:chkconfig --add 服務名
10.25 systemd管理服務
系統單元:在/lib/systemd/system目錄中,優先級高于用戶單元。
用戶單元:在/usr/lib/systemd/system目錄中
查看用戶所有unit:ls /usr/lib/systemd/system/
列出所有服務:systemctl list-units --all --type=service
[root@luo ~]# systemctl list-units --all --type=serviceUNIT LOAD ACTIVE SUB DESCRIPTIONauditd.service loaded active running Security Auditing Servicebrandbot.service loaded inactive dead Flexible Branding Servicechronyd.service loaded active running NTP client/servercpupower.service loaded inactive dead Configure CPU power related settingcrond.service loaded active running Command Schedulerdbus.service loaded active running D-Bus System Message Bus ● display-manager.service not-found inactive dead display-manager.servicedracut-shutdown.service loaded inactive dead Restore /run/initramfsebtables.service loaded inactive dead Ethernet Bridge Filtering tablesemergency.service loaded inactive dead Emergency Shell ● exim.service not-found inactive dead exim.servicefirewalld.service loaded active running firewalld - dynamic firewall daemongetty@tty1.service loaded active running Getty on tty1ip6tables.service loaded inactive dead IPv6 firewall with ip6tables ● ipset.service not-found inactive dead ipset.serviceiptables.service loaded inactive dead IPv4 firewall with iptablesirqbalance.service loaded inactive dead irqbalance daemon ● kdump.service loaded failed failed Crash recovery kernel armingkmod-static-nodes.service loaded active exited Create list of required static devi ● ldap.service not-found inactive dead ldap.servicemicrocode.service loaded inactive dead Load CPU microcode updatemysqld.service loaded inactive dead LSB: start and stop MySQLnetwork.service loaded active exited LSB: Bring up/down networkingNetworkManager-wait-online.service loaded active exited Network Manager Wait OnlineNetworkManager.service loaded active running Network Manager ● nscd.service not-found inactive dead nscd.service ● ntpd.service not-found inactive dead ntpd.service ● ntpdate.service not-found inactive dead ntpdate.serviceplymouth-quit-wait.service loaded inactive dead Wait for Plymouth Boot Screen to Quplymouth-quit.service loaded inactive dead Terminate Plymouth Boot Screenplymouth-read-write.service loaded inactive dead Tell Plymouth To Write Out Runtime plymouth-start.service loaded inactive dead Show Plymouth Boot Screenpolkit.service loaded active running Authorization Managerpostfix.service loaded inactive dead Postfix Mail Transport Agentrc-local.service loaded inactive dead /etc/rc.d/rc.local Compatibilityrescue.service loaded inactive dead Rescue Shell常用服務相關命令
systemctl enable crond.service //讓某個服務開機啟動
systemctl disable crond //不讓開機啟動
systemctl status crond //查看服務狀態
systemctl stop crond //停止服務
systemctl start crond //啟動服務
systemctl restart crond //重啟服務
systemctl is-enabled crond //檢查服務是否開機啟動
10.26 unit介紹
單元(Unit)
Systemd有一個叫做單元(Unit)的概念,它保存了服務、設備、掛載點和操作系統其他信息的配置文件,并能夠處理不同單元之間的依賴關系。大部分單元都靜態的定義在單元文件中,也有一些是動態生成的。單元有多種狀態:
處于活動的則是(active),當前正在運行
停止的則是(inactive),當前已經停止
啟動中的則是(activing),當前正在啟動
停止中的則是(deactiving),當前正在停止
失敗的則是(failed)狀態,意思說單元啟動過程中遇到錯誤比如找不到文件、路徑或者進程運行中崩潰了等。
unit分類:
一共有11種不同類型的單元:
單元類型 說明
service單元 用于封裝一個后臺服務進程,比如通過systemctl start firewalld啟動防火墻,這種就屬于service單元。
socket單元 用于封裝一個后臺服務進程,比如通過systemctl start firewalld啟動防火墻,這種就屬于service單元。
target單元 用于將多個單元在邏輯上組合在一起讓它們同時啟動。
device單元 用于封裝一個設備文件,可用于基于設備啟動。并不是每一個設備文件都需要一個device單元,但是每一個被udev規則標記的設備都必須作為一個device單元出現。
mount單元 用于封裝一個文件系統掛載點(向后兼容/etc/fstab)
automount單元 用于封裝一個文件系統自動掛載點,只有該文件系統被訪問時才會進行掛載,它取代了傳統的autofs服務。
timer單元 用于封裝一個基于時間觸發的動作,它取代了atd、crond等計劃任務。
swap單元 用于封裝一個交換分區或者交換文件,它與mount類似。
path單元 用于根據文件系統上特定對象的變化來啟動其他服務。
slice單元 用于控制特定的CGroup內所有進程的總體資源占有。
scope單元 它與service單元類似,但是由systemd根據D-bus接口接收到的信息自動創建,可用于管理外部創建的進程。
systemd能夠處理各種依賴與沖突關系以及先后順序,依賴與沖突、先后順序兩者之間是獨立的。比如service1依賴service2,而且啟動service1必須先啟動service2,,那么這2個服務將會同時啟動。
說明:一個單元配置文件只能描述一種單元。
系統提供兩種級別的單元:
系統單元:在/lib/systemd/system目錄中,優先級高于用戶單元。
用戶單元:在/usr/lib/systemd/system目錄中
常用unit相關命令:
systemctl list-units //列出正在運行的unit
systemctl list-units --all //列出所有的unit
systemctl list-units --all --state=inactive //列出所有inactive的unit
systemctl list-units --all --type=service //列出狀態的service
systemctl is-active crond.service //查看某個unit是否active
10.27 target介紹
Target(目標):
在systemd中有一個叫做target的單元,也叫作目標單元。這個單元沒有專用的配置選項,它只是以.target結尾的文件,它本身沒有具體功能,你可以理解為類別,它的作用就是將一些單元匯聚在一起。
常用的Target有:
basic.target 啟動基本系統,該目標間接包含了所有的本地掛載點單元以及其他必須的系統初始化單元。
ctrl-alt-del.target 當在控制臺按下Ctrl+Alt+Del組合鍵時要啟動的單元。
default.target 默認的啟動目標,通常指向multi-user.target或者graphical.target的目標。
graphical.target專用于啟動圖形化登陸界面的目標單元,其中包含了multi-user.target單元。
hibernate.target專用于系統休眠到硬盤時啟動的單元。
halt.target專用于關閉系統單不切斷電源時啟動的單元。
local-fs.target專用于集合本地文件系統掛載點的目標單元。
multi-user.target專用于多用戶且為命令行模式下啟動的單元。所有用于要在命令行多用戶模式下啟動的單元,其[Install]段都應該加上
WantedBy=multi-user.target指令。
reboot.target專用于重啟系統時需要需要啟動的單元。
rescure.target專用于啟動基本系統并打開一個救援shell時需要啟動的單元。
shutdown.target專用于在關機過程中關閉所有的單元。
sleep.target專用于進入休眠狀態的目標單元。
timers.target專用于包含所有應該在系統啟動時被啟動的timer單元。
查看當前系統所有target;(unit組合):systemctl list-unit-files --type=target
[root@luo ~]# systemctl list-unit-files --type=target UNIT FILE STATE basic.target static bluetooth.target static cryptsetup-pre.target static cryptsetup.target static ctrl-alt-del.target disabled default.target enabled emergency.target static final.target static getty.target static graphical.target static halt.target disabled hibernate.target static hybrid-sleep.target static initrd-fs.target static initrd-root-fs.target static initrd-switch-root.target static initrd.target static iprutils.target disabled kexec.target disabled local-fs-pre.target static local-fs.target static machines.target disabled multi-user.target enabled network-online.target static network-pre.target static network.target static nss-lookup.target static nss-user-lookup.target static paths.target static poweroff.target disabled printer.target static reboot.target disabled remote-fs-pre.target static remote-fs.target enabled rescue.target disabled rpcbind.target static runlevel0.target disabled runlevel1.target disabled runlevel2.target enabled查看target包含所有的unit:systemctl list-dependencies multi-user.target
[root@luo ~]# systemctl list-dependencies multi-user.target multi-user.target ● ├─auditd.service ● ├─brandbot.path ● ├─chronyd.service ● ├─crond.service ● ├─dbus.service ● ├─firewalld.service ● ├─irqbalance.service ● ├─kdump.service ● ├─mysqld.service ● ├─network.service ● ├─NetworkManager.service ● ├─plymouth-quit-wait.service ● ├─plymouth-quit.service ● ├─rsyslog.service ● ├─sendmail.service ● ├─sm-client.service ● ├─sshd.service ● ├─sysstat.service ● ├─systemd-ask-password-wall.path ● ├─systemd-logind.service ● ├─systemd-readahead-collect.service ● ├─systemd-readahead-replay.service ● ├─systemd-update-utmp-runlevel.service ● ├─systemd-user-sessions.service ● ├─tuned.service ● ├─vmtoolsd.service ● ├─basic.target ● │ ├─microcode.service ● │ ├─rhel-autorelabel-mark.service ● │ ├─rhel-autorelabel.service ● │ ├─rhel-configure.service ● │ ├─rhel-dmesg.service ● │ ├─rhel-loadmodules.service ● │ ├─selinux-policy-migrate-local-changes@targeted.service ● │ ├─paths.target ● │ ├─slices.target ● │ │ ├─-.slice ● │ │ └─system.slice ● │ ├─sockets.target查看系統默認的target:systemctl get-default
[root@luo ~]# systemctl get-default multi-user.target設置默認的target:systemctl set-default multi-user.target
[root@luo ~]# systemctl set-default multi-user.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.service、unit、target之間的聯系:
一個service屬于一種unit;
多個unit組成了一個target;
一個target包含多個service;查看/usr/lib/systemd/system/sshd.service里面[install]部份的內容,定義了該service屬于哪一個target。
轉載于:https://blog.51cto.com/13736286/2129531
總結
以上是生活随笔為你收集整理的2018-06-13(日常运维三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go红队开发—并发编程
- 下一篇: Week09_day05(Hbase的安