1. 程式人生 > >筆記9(日常運維2iptables nat表、zone、service、cron、chkconfig、systemd、unit、target、rsyncscreen)

筆記9(日常運維2iptables nat表、zone、service、cron、chkconfig、systemd、unit、target、rsyncscreen)

linux日常運維.


nat表應用


A機器兩塊網卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外網,ens37僅僅是內部網絡,B機器只有ens37(192.168.100.100),和A機器ens37可以通信互聯。

需求1:可以讓B機器連接外網

查看路由轉發:cat /proc/sys/net/ipv4/ip_forward 如果是0,我們需要打開它

A機器上打開路由轉發 echo "1">/proc/sys/net/ipv4/ip_forward

增加一條規則A上執行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

B上設置網關為192.168.100.1 命令:route add default gw 192.168.100.1 查看網關:route -n

需求2:C機器只能和A通信,讓C機器可以直接連通B機器的22端口

B機器設置一下DNS:vi /etc/resolv.conf 進去了寫:nameserver 119.29.29.29

A上打開路由轉發echo "1">/ proc/sys/net/ipv4/ip_forward

A上執行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

A上執行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130

B上設置網關為192.168.100.1


iptables規則備份和恢復


默認保存命令:service iptables save //會把規則保存到/etc/sysconfig/iptables

指定保存命令:例如,把iptables規則備份到my.ipt文件中,命令:iptables-save > /tmp/my.ipt

恢復剛才備份的規則命令:iptables-restore < /tmp/my.ipt

Linux防火墻-firewalld

打開firewalld方法:

第一步,systemctl disable iptables

第二步,systemctl stop iptables

第三步,systemctl enable firewalld

第四步,systemctl start firewalld

關閉firewalld開啟netfilter方法

第一步,不讓他開機啟動:systemctl disable firewalled

第二步,再把服務停掉:systemctl stop firewalld

第三步,然後開啟netfilter防火墻,開啟之前需要安裝包:yum install -y iptables-services

第四步,安裝完它會產生iptables服務,查看一下:systemctl enable iptables

第五步,開啟iptables服務:systemctl start iptables


zone

firewalld默認有9個zone,每個zone都好比一個規則級,自帶一些規則,默認zone為 public

查看所有的zone:firewall-cmd --get-zones

查看默認zone: firewall-cmd --get-default-zone

技術分享

9個zone介紹:

技術分享

zone的操作

firewall-cmd --set-default-zone=work //自己設定默認zone,例如work。

firewall-cmd --get-zone-of-interface=ens33 //查指定網卡

firewall-cmd --zone=public --add-interface=lo //給指定網卡設置zone

firewall-cmd --zone=dmz --change-interface=lo //針對網卡更改zone

firewall-cmd --zone=dmz --remove-interface=lo //針對網卡刪除zone

firewall-cmd --get-active-zones //查看系統所有網卡所在的zone

service的操作

service是firewall防火墻下的一個端口

firewall-cmd --get-services 查看所有的servies

firewall-cmd --list-services //查看當前zone下有哪些service

firewall-cmd --zone=public --list-service //查看指定zone下有哪些service

增加指定服務:firewall-cmd --zone=public --add-service=http //把http增加到public zone下面,但是這不是永久的配置文件裏不會有。

刪除指定服務:firewall-cmd --zone=public --remove-service=http

ls /usr/lib/firewalld/zones/ //zone的配置文件模板

ls /usr/lib/firewalld/services/ service的配置模板

要想永久生效就要保存到配置文件中,方法:

firewall-cmd --zone=public --add-service=http --permanent //更改配置文件,之後 會在/etc/firewalld/zones目錄下面生成配置文件

需求:ftp服務自定義端口1121,需要在work zone下面放行ftp

第一步,先把usr目錄下的ftp.xml文件拷貝到etc下的service目錄來:

cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/

第二步,編輯剛拷貝到service目錄下ftp.xml的配置文件,把裏邊的21端口改成1121:

vi /etc/firewalld/services/ftp.xml //把21改為1121

第三步,把usr目錄下的ftp.xml文件拷貝到etc下的zones目錄下:

cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/

第四步,編輯etc下剛拷貝過來的work.xml文件增加以下內容:

vi /etc/firewalld/zones/work.xml 增加一行,<service name="ftp"/>

最後一步,重新加載:firewall-cmd --reload

查看一下:firewall-cmd --zone=work --list-services


Linux任務計劃


crontab

crondab在:cat /var/spool/cron/root目錄下

命令:crontab -u、-e、-l、-r

-u :指定某個用戶,不加-u選項則為當前用戶;

-e :制定計劃任務;

-l :列出計劃任務;

-r :刪除計劃任務。

格式:分 時 日 月 周 user command

文件/var/spool/cron/username

命令:cat /etc/crontab 查看任務計劃的配置文件

技術分享

1.分鐘範圍0-59,2.小時範圍0-23,3.日範圍1-31,4.月範圍1-12,5.周1-7(0或者7都表示周日), 6.用戶(不寫默認是root),7.執行的命令。

命令:crontab -e 進入到配置文件中,編輯配置文件,內容格式如下:

技術分享

* 表示所有(每分、每小時、每天、每周、每月)

可用格式1-5表示一個範圍1到5,比如月,那就是每個月的1到5號)

可用格式1,2,3表示1或者2或者3,比如周,那就是每周的周一周二周三)

可用格式*/2表示被2整除的數字,比如小時,那就是每隔2小時,比如月,就是2、4、6、..月

要保證服務是啟動狀態:輸入命令,systemctl start crond.service

如何檢查是啟動?

命令:ps aux |grep cron 看看有沒有這個進程

或者用這個命令:systemctl status crond 如果下邊顯示綠色證明他啟動了

如何停掉服務?

用命令:systemctl stop crond

Linuxde的系統管理服務-chkconfig(CentOS6)

Linux系統所有的預設服務可以查看 /etc/init.d/ 目錄得到: ls /etc/init.d/

命令:chkconfig --list 列出所有服務並顯示每個級別是否開啟

技術分享

上圖裏的級別(0,1,2,3,4,5,6)就是 /etc/inittab 裏面的那幾個啟動級別了:

0、1、6運行級別被系統保留;一般的Linux系統實現中,都使用了2、3、4、5幾個級別。

0作為shutdown動作,1作為重啟至單用戶模式,2表示無NFS支持的多用戶模式,3表示完全多用戶模式 (也是最常用的級別),4保留給用戶自定義,5表示圖形登錄方式,6為重啟。

命令:chkconfig network off 讓這個服務關閉

命令:chkconfig network on 讓這個服務開啟

命令:chkconfig --level 3 network off 關閉指定某個服務的一個級別(例如network的3級別)

命令:chkconfig --level 345 network off 關閉指定某個服務的幾個級別

命令:chkconfig --del network 刪除自定義服務

命令:chkconfig --add network 增加自定義服務


Linux系統服務管理-systemd(CentOS7)


一個service屬於一種類型的unit

多個unit組成了一個target

一個target裏面包含了多個service

命令:systemctl list-units --all --type=service 把service類型的服務列出來

幾個常用的服務相關的命令

systemctl enable crond.service //讓服務開機啟動

systemctl disable crond //不讓開機啟動

systemctl status crond //查看狀態

systemctl stop crond //停止服務

systemctl start crond //啟動服務

systemctl restart crond //重啟服務

systemctl is-enabled crond //檢查服務是否開機啟動

unit介紹

ls /usr/lib/systemd/system //系統所有unit,分為以下類型

service 系統服務

target 多個unit組成的組

device 硬件設備

mount 文件系統掛載點

automount 自動掛載點

path 文件或路徑

scope 不是由systemd啟動的外部進程

slice 進程組

snapshot systemd快照

socket 進程間通信套接字

swap swap文件

timer 定時器

unit相關的命令

systemctl list-units //列出正在運行的unit

systemctl list-units --all //列出所有,包括失敗的或者inactive的

systemctl list-units --all --state=inactive //列出inactive的unit

systemctl list-units --type=service//列出狀態為active的service

systemctl is-active crond.service //查看某個服務是否為active

target介紹

一個target就是多個unit的組合,

系統為了方便管理用target來管理unit。

systemctl list-unit-files --type=target 列出系統裏邊所有的target。

systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit

systemctl get-default //查看系統默認的target

systemctl set-default multi-user.target 設置一個默認的target

一個service屬於一種類型的unit

多個unit組成了一個target

一個target裏面包含了多個service

命令:cat /usr/lib/systemd/system/sshd.service // cat一下service看最後[install]部分它會告 訴你這個service屬於哪個target。


Linux文件同步估計-rsync

命令:rsync -av /etc/passwd /tmp/1.txt 把etc/passwd文件拷貝到tmp下,並改名為1.txt

命令:rsync -av /etc/passwd [email protected]:/tmp/1.txt 遠程拷貝同步,假如我要拷貝到 對方root用戶下,寫它的IP,然後冒號,後邊跟它的文件路徑,輸入密碼。

命令:rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt

rsync格式:

rsync [OPTION] … SRC DEST 本機的格式

rsync [OPTION] … SRC [user@]host:DEST 拷貝到遠程服務器上的格式。

rsync [OPTION] … [user@]host:SRC DEST 反著拷貝,先寫遠程的機器或者目錄,然後拷貝到本 地的目錄下。

rsync [OPTION] … SRC [user@]host::DEST

rsync [OPTION] … [user@]host::SRC DEST

OPTION:選項(-a、-v、..) SRC:原目錄 DEST:目標目錄或文件 user@:用戶(可以省略,不寫用戶 他就是當前終端的用戶,他默認是root) host:IP地址

rsync常用選項

-a 包含-rtplgoD

-r 同步目錄時要加上,類似cp時的-r選項

-v 同步時顯示一些信息,讓我們知道同步的過程

-l 保留軟連接

-L 加上該選項後,同步軟鏈接時會把源文件給同步

-p 保持文件的權限屬性

-o 保持文件的屬主

-g 保持文件的屬組

-D 保持設備文件信息

-t 保持文件的時間屬性

--delete 刪除DEST中SRC沒有的文件,刪除目標目錄中,原目錄裏邊沒有的文件。要想一模一樣必須 加這個選項,

--exclude 過濾指定文件,如--exclude “logs”會把文件名包含logs的文件或者目錄過濾掉,不同 步 例如:下圖為過濾掉以.txt結尾的所有文件,不要這些文件。

技術分享

他不支持連寫,但支持多些,例如還過濾以阿明開頭的所有文件,不要他。

技術分享

-P 顯示同步過程,比如速率,比-v更加詳細

-u 加上該選項後,如果DEST中的文件比SRC新,則不同步,如果目標目錄裏的文件比原文件新,則不 同步

-z 傳輸時壓縮

rsync通過ssh方式同步

格式:rsync -av test1/ 192.168.133.132:/tmp/test2/

命令:rsync -av -e "ssh -p 22" test1/ 192.168.133.132:/tmp/test2/ -p指定對方的端口,例如 22端口

rsync 通過服務的方式同步

第一步,要編輯配置文件/etc/rsyncd.conf //下面是rsyncd.conf的樣例,把他寫進去:

port=873

log file=/var/log/rsync.log

pid file=/var/run/rsyncd.pid

address=192.168.133.130

[test]

path=/root/rsync

use chroot=true

max connections=4

read only=no

list=true

uid=root

gid=root

auth users=test 這裏是密碼實驗時可以關掉前邊加上#號

secrets file=/etc/rsyncd.passwd

hosts allow=192.168.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24 這些IP根據你需要的改!!

第二步,啟動服務rsync --daemon 啟動完用命令檢測一下是否啟動了:ps aux |grep rsync

用命令:netstat -lntp 查看一下他監聽的端口是不是873

最後一步:用這個命令傳輸,格式:rsync -av test1/ 192.168.133.130::module/dir/

rsyncd.conf配置文件詳解

port:指定在哪個端口啟動rsyncd服務,默認是873端口。可以更改。

log file:指定日誌文件。

pid file:指定pid文件,這個文件的作用涉及服務的啟動、停止等進程管理操作。

address:指定啟動rsyncd服務的IP。假如你的機器有多個IP,就可以指定由其中一個啟動rsyncd服 務,如果不指定該參數,默認是在全部IP上啟動。也可以指定多個IP

[]:指定模塊名,裏面內容自定義。

path:指定數據存放的路徑。

use chroot true|false:表示在傳輸文件前首先chroot到path參數所指定的目錄下。這樣做的原因是 實現額外的安全防護,但缺點是需要以roots權限,並且不能備份指向外部的符號連接所指向的目錄文 件。默認情況下chroot值為true,如果你的數據當中有軟連接文件,阿銘建議你設置成false。

Linux同步工具-

max connections:指定最大的連接數,默認是0,即沒有限制。

read only ture|false:如果為true,則不能上傳到該模塊指定的路徑下。

list:表示當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,設定為true則列出,false則隱 藏。

uid/gid:指定傳輸文件時以哪個用戶/組的身份傳輸。

auth users:指定傳輸時要使用的用戶名。

secrets file:指定密碼文件,該參數連同上面的參數如果不指定,則不使用密碼驗證。註意該密碼 文件的權限一定要是600。格式:用戶名:密碼

hosts allow:表示被允許連接該模塊的主機,可以是IP或者網段,如果是多個,中間用空格隔開。

當設置了auth users和secrets file後,客戶端連服務端也需要用用戶名密碼了,若想在命令行中帶 上密碼,可以設定一個密碼文件

rsync -avL [email protected]::test/test1/ /tmp/test8/ --password-file=/etc/pass

其中/etc/pass內容就是一個密碼,權限要改為600


Linux系統日誌


Linux系統總日誌:/var/log/messages 可以用less查看一下

命令:/etc/logrotate.conf 日誌切割配置文件

參考https://my.oschina.net/u/2000675/blog/908189

dmesg命令

/var/log/dmesg 日誌,查看正確的登陸歷史。

last命令,調用的文件/var/log/wtmp

lastb命令查看登錄失敗的用戶,對應的文件時/var/log/btmp

/var/log/secure


screen工具


一個虛擬終端,為了不讓一個任務意外中斷

nohup command &

screen是一個虛擬終端

安裝:yum install -y screen

screen直接回車就進入了虛擬終端

ctral a組合鍵再按d退出虛擬終端,但不是結束

列出來命令:screen -ls 查看虛擬終端列表

screen -r id 進入指定的終端

命令:screen -S aming 定義一個自定義名字

screen -r aming


本文出自 “12912638” 博客,請務必保留此出處http://12922638.blog.51cto.com/12912638/1952106

筆記9(日常運維2iptables nat表、zone、service、cron、chkconfig、systemd、unit、target、rsyncscreen)