平常運維1w、vmstat、

w查看系統負載
html

date 查看當前系統的時間
mysql

w查看系統負載linux

第一行,從左面開始顯示的信息依次爲:時間,系統運行時間,登陸用戶數,平均負載。ios

第二行,開始以及下面全部的行,告訴咱們的信息是,當前登陸的都有哪些用戶,以及他們是從哪裏登陸的等等。咱們最應該關注的應該是第一行中的 ‘load average:’ 後面的三個數值。nginx

DN}NLENLAASWY2D(JGKTKKY.png

第一個數值表示1分鐘內系統的平均負載值;第二個數值表示5分鐘內系統的平均負載值;第三個數值表示15分鐘系統的平均負載值。web

這個值的意義是,單位時間段內CPU活動進程數。固然這個值越大就說明你的服務器壓力越大。sql

通常狀況下這個值只要不超過服務器的cpu數量就沒有關係,若是服務器cpu數量爲1,那麼這個值若小於1,就說明當前服務器沒有壓力,不然就要關注一下了
vim


查看邏輯cpu命令:cat /proc/cpuinfo  看第一行processor 若是是0就證實他有1個cpu 是2就證實他有3個cpu 邏輯cpu不是物理cpu
centos

image.png


vmstat命令緩存

vmstat:監控系統的狀態

w查看的是系統總體上的負載,經過看那個數值能夠知道當前系統有沒有壓力,可是具體是哪裏(CPU, 內存,磁盤等)有壓力就沒法判斷了。經過 vmstat 就能夠知道具體是哪裏有壓力

image.png


命令:vmstat 1 每1秒以動態的形式顯示一次 按ctrl+c結束。也能夠後邊跟一個數字,表明只顯示的次數,例如:vmstat 1 5 這個就是每一秒顯示1次只讓他顯示5次,以下圖:

wKiom1lxvwuSb73qAAEMSplZ7GU915.png


每一列分別表示什麼意思:重點關注:r、b、swpd、si、so、bi、bo、us、wa。

M8BQRVF(4[VTR7VKW70{FPX.png

1.procs 顯示進程相關信息

r :表示運行和等待cpu時間片的進程數,若是長期大於服務器cpu的個數,則說明cpu不夠用了;

b :表示等待資源的進程數,好比等待I/O, 內存等,這列的值若是長時間大於1,則須要關注一下了;

2.memory 內存相關信息

swpd :表示切換到交換分區中的內存數量 ;若是他的數值一直在變化那證實他的內存不夠了

free :當前空閒的內存數量;

buff :緩衝大小,(即將寫入磁盤的);

cache :緩存大小,(從磁盤中讀取的);

3.swap 內存交換狀況

si :由交換區swap寫入到內存的數據量;單位kb

so :由內存寫入到交換區的數據量;從內存裏出來的

4.io 磁盤使用狀況

這兩個頻繁的變證實他們在頻繁的讀寫

bi :從塊設備讀取數據的量(讀磁盤);從磁盤裏出來進入到內存裏邊去

bo: 從塊設備寫入數據的量(寫磁盤);

5.system 顯示採集間隔內發生的中斷次數

in :表示在某一時間間隔中觀測到的每秒設備中斷數;

cs :表示每秒產生的上下文切換次數;

6.CPU 顯示cpu的使用狀態

us :顯示了用戶下所花費 cpu 時間的百分比;長時間大於50%說明資源不夠了

sy :顯示系統自己花費cpu時間百分比;

id :表示cpu處於空閒狀態的時間百分比;

wa :表示I/O等待所佔用cpu時間百分比;

st :表示被偷走的cpu所佔百分比(通常都爲0,不用關注);

us+sy+id=100%



top命令

顯示進程所佔系統資源  q退出來

top命令打印出了不少信息,包括系統負載(loadaverage)、進程數(Tasks)、cpu使用狀況、內存使用狀況以及交換分區使用狀況。

top:這個命令用於動態監控進程所佔系統資源,每隔3秒變一次。這個命令的特色是把佔用系統資源(CPU,內存,磁盤IO等)最高的進程放到最前面。

image.png

第一行:跟w命令查看的同樣表示:時間,系統運行時間,幾個用戶登陸,系統負載

第二行:進程狀態。total進程總數,running進程運行數,sleeping休眠的進程,stopped中止的進程,zombie殭屍進程

第三行:cpu百分比。

第四行:物理內存。total總內存數值,free剩餘內存,used使用大小,

第五行:交換分區。


你關注的也就是幾項:%CPU, %MEM, COMMAND

image.png

%CPU:爲CPU使用狀況,默認狀況下按cpu使用情排序

RES:物理內存大小(單位:KiB)

COMMAND:進程名字

%MEM:爲使用內存百分比。在 top 狀態下,按 「shift + m」, 能夠按照內存使用大小排序。shift+p換回來。

image.png

按數字 ‘1’ 能夠列出全部cpu的使用狀態。%Cpu(s)證實是一顆cpu

image.png

image.png


命令:top -c 查看具體的命令全局路徑以及使用狀況

image.png

命令:top -bn1 靜態的顯示全局的系統資源使用狀況。通常在寫腳本的時候使用。



sar監控系統狀態

安裝sar命令:
yum install -y sysstat

生成的歷史文件所在的目錄

ls /var/log/sa
sar的特性是每10分鐘他會把系統的狀態過濾一遍保存在歷史文件裏,這個歷史文件正好在/var/log/sa目錄裏,這個文件下的歷史記錄只能保持一個月
還有一個ls /var/log/sar 他們的區別是/var/log/sa是個二進制文件你不能用cat來查看它的內容,而/var/log/sar能查看內容,次日纔會生成前一天的sar


命令:sar -n DEV 查看網卡流量

加上參數:sar -n DEV 1 3  每1秒鐘顯示一次,一共顯示3次

image.png

IFACE這列表示設備名稱

rxpck/s 表示每秒接收到的包的數量,幾千是正常的,上萬不正常

txpck/s 表示每秒發送出去的包的數量,

rxbyt/s 表示每秒收取的數據量(單位Byte),

txbyt/s表示每秒發送的數據量。


命令:-f   指定查看看指定某一天網卡流量歷史。

例如:sar -n DEV -f /var/log/sa/sa07  查看7號的流量,後邊sa07指的是那一天的,sar會以日期號爲結尾保存,最多保存一個月的。

image.png


命令:sar -q 查看歷史負載   sar -q -f /var/log/sa07查看指定某天的負載

YT(@MAPJW]RSC1R0A$LNQ(P.png

6V4%8Q}8DK6RHU9$_9{QJ72.png


命令:sar -b 查看磁盤的(讀寫)

[root@aaa-01 ~]# sar -b 1 3
Linux 3.10.0-693.el7.x86_64 (aaa-01) 	2018年06月07日 	_x86_64_	(1 CPU)

21時05分59秒       tps      rtps      wtps   bread/s   bwrtn/s
21時06分00秒      0.00      0.00      0.00      0.00      0.00
21時06分01秒      0.00      0.00      0.00      0.00      0.00
21時06分02秒      0.00      0.00      0.00      0.00      0.00
平均時間:      0.00      0.00      0.00      0.00      0.00



nload命令

nload動態的顯示網卡的頁面

先安裝:兩個包,yum install -y epel-release yum install -y nload


直接敲命令:nload

第一行,網卡的數量,按左右方向鍵能夠切換網卡,按 q 退出。

image.png

第二行,一次是,當前值、平均值、最小值、最大值。

image.png

一般咱們買帶寬都是買出去的帶寬

M6H$8H4VQB$HSNB}0@K}TMS.png



監控io性能

命令:iostat -x   磁盤使用 主要查看%util 這個是顯示你等待磁盤io的百分比

[root@aaa-01 ~]# iostat -x
Linux 3.10.0-693.el7.x86_64 (aaa-01) 	2018年06月08日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.00    0.13    0.03    0.00   99.79

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.01    0.21    0.12     5.52     3.37    53.41     0.01   16.08    7.57   30.30   2.26   0.08
sdb               0.00     0.00    0.00    0.00     0.06     0.00    45.16     0.00    2.25    2.25    0.00   2.06   0.00
scd0              0.00     0.00    0.00    0.00     0.03     0.00   114.22     0.00   25.22   25.22    0.00  23.89   0.00


命令:iotop   動態排序顯示進程使用io的狀況,安裝yum install -y iotop

image.png

   


free 查看內存使用狀況

命令:free 直接回車,能夠顯示當前系統的總內存大小以及使用內存的狀況

U)$ZJF}I1AM[@XZKXKWNZHV.png


數據的流向不同,內存使用的角色也不同,由於磁盤與cpu互相傳數據會很慢,因此先把數據放到內存裏,而後再從內存裏讀取數據
cache:磁盤(000:數據)→內存(cache)→CPU 
buff:CPU(000數據)→內存(buffer)→磁盤


命令:free -m 指定它顯示的單位爲兆

[root@aaa-01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            984         126         528           6         329         674
Swap:          2047           0        2047

命令:free -h 在具體的數字後邊加上單位

[root@aaa-01 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           984M        126M        528M        6.8M        329M        674M
Swap:          2.0G          0B        2.0G

公式:total=used+free+buff/cache    總用量=已用量+剩餘+緩衝/緩存

avaliable包含free和buff/cache沒用完剩餘部分



ps 查看系統進程

命令:ps aux  把你係統裏邊全部的進程列出來

命令:ps aux |grep 檢查系統中一個進程有沒有運行。例如:ps aux |grep nginx、ps aux |grep mysql

wKioL1lzETWziOIeAACHm6a1E5E535.png

命令:ps aux |grep -c 查看一個進程的數量。

命令:ps -elf  結果跟ps aux類似

PID :進程的id,這個id頗有用,在linux中內核管理進程就得靠pid來識別和管理某一個程,好比我想終止某一個進程,則用 ‘kill進程的pid 有時並不能殺掉,則須要加一個-9選項了 kill -9 進程pid

STAT :表示進程的狀態,進程狀態分爲如下幾種(不要求記住,但要了解)

D:不能中斷的進程(一般爲IO)

R:run正在運行中的進程

S:sleep已經中斷的進程,一般狀況下,系統中大部分進程都是這個狀態

T:經中止或者暫停的進程,若是咱們正在運行一個命令,好比說 sleep 10 若是咱們按一下ctrl -z 讓他暫停,那麼咱們用ps查看就會顯示T這個狀態

W:這個好像是說,從內核2.6xx 之後,表示爲沒有足夠的內存頁分配

X:已經死掉的進程(這個好像歷來不會出現)

Z:殭屍進程,殺不掉,打不死的垃圾進程,佔系統一小點資源,不過沒有關係。若是太多,就有問題了。通常不會出現。

<:高優先級進程

N:低優先級進程

L:在內存中被鎖了內存分頁

s:主進程

l:多線程進程。有一個進程有多個線程。

+表明在前臺運行的進程

線程由一個大的進程組成的,一個進程裏邊有多個線程



netstat 監控系統狀態

netstat:查看網絡狀態,查看tcpip的一個狀態

命令:netstat -lnp 顯示當前系統監聽着哪些端口

[root@aaa-01 ~]# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      893/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      998/master          
tcp6       0      0 :::22                   :::*                    LISTEN      893/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      998/master          
udp        0      0 127.0.0.1:323           0.0.0.0:*                           546/chronyd         
udp6       0      0 ::1:323                 :::*                                546/chronyd         
raw6       0      0 :::58                   :::*                    7           590/NetworkManager


命令:netstat -an 查看系統全部網絡鏈接情況


命令:netstat -lntp 只看tcp的,不包含socket

[root@aaa-01 ~]# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      893/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      998/master          
tcp6       0      0 :::22                   :::*                    LISTEN      893/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      998/master


命令:netstat -lunp只查看udp的

[root@aaa-01 ~]# netstat -lunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 127.0.0.1:323           0.0.0.0:*                           546/chronyd         
udp6       0      0 ::1:323                 :::*                                546/chronyd


命令:ss -an 跟netstat殊途同歸,缺點是不能顯示進程的名字。

狀態:TIME_WAIT 客戶端與服務端兩臺機器,相互通訊完以後,他們的連接還沒斷開,處於一種相互等待的狀態,等待這兩個機器再一次鏈接傳輸數據

命令:netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'  查看全部狀態用數字列出來

wKioL1lzIpXynh2nAADEvWC24ac696.png

若是ESTABLISHED很大,證實你的系統很忙,這個數據表示有多少個客戶端在和服務端進行通訊

LRFVFV1[@)IXL}4L(S1VPH1.png



tcptump 抓包工具

安裝:yum install -y tcpdump

在你判斷你的服務器上有流量***時,使用抓包工具來抓一下包,就知道那些IP在***你了。


命令:tcpdump -nn 兩個n表示IP地址和端口號,不加-nn的話它顯示的是名字,你分不清是哪一個。

image.png

image.png

命令:tcpdump -nn -i ens33 加上網卡的名字

命令:tcpdump -nn port 指定端口,例如ens33網卡的22端口,tcpdump -nn -i ens33 port 22

命令:tcpdump -nn not port 不要某個端口,例如ens33網卡的22端口,tcpdump -nn -i ens33 not port 22

命令:tcpdump -nn -i ens33 not port  22 and host 192.168.0.100  不要某個端口而且只要一個指定IP的。

命令:tcpdump -nn -c 指定抓包的個數。好比只要100個:tcpdump -nn -i ens33 -c 100


命令:tcpdump -nn -w 把抓到的包存到一個文件裏去(文件名字能夠本身取)。例如:tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap

[root@aaa-01 ~]# tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
10 packets captured
10 packets received by filter
0 packets dropped by kernel

能夠用file命令查看它的信息,可是不能查看內容:file /tmp/1.cap

[root@aaa-01 ~]# file /tmp/1.cap
/tmp/1.cap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 262144)

tcpdump -r /etc/1.cop,能夠查看文件內容,由於他是一個數據包,因此它顯示的只是一些數據的流向

[root@aaa-01 ~]# tcpdump -r /tmp/1.cap 
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
19:08:27.654122 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 2889311389:2889311537, ack 3110138182, win 274, length 148
19:08:27.654290 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [.], ack 148, win 254, length 0
19:08:59.507789 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [P.], seq 1:69, ack 148, win 254, length 68
19:08:59.508025 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 148:216, ack 69, win 274, length 68
19:08:59.553682 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [P.], seq 69:169, ack 216, win 254, length 100
19:08:59.553749 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [P.], seq 169:237, ack 216, win 254, length 68
19:08:59.553971 IP aaa-01.ssh > 192.168.232.1.53070: Flags [.], ack 237, win 274, length 0
19:08:59.563115 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 216:268, ack 237, win 274, length 52
19:08:59.570663 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 268:384, ack 237, win 274, length 116
19:08:59.570876 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [.], ack 384, win 253, length 0
[root@aaa-01 ~]#


tshark抓包工具(須要記住)

安裝:yum install -y wireshark

命令:tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"   能夠查看指定網卡80端口web訪問的狀況。本身的實驗虛擬機是抓不到的由於他沒有80端口的服務

[root@aaa-01 ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri" 
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'bluetooth0'



linux 網絡相關

命令:ifconfig 查看默認網卡ip  須要安裝包:(yum install net-tools)

命令:ifconfig -a 在你網卡被當(down)掉不顯示時,或者沒有ip時,它會顯示出來。


命令:ifup ens33開啓網卡  

命令:ifdown ens33關閉網卡   在咱們編輯一個網卡而且不想讓全部網卡都從新關閉開啓,只須要指定一個網卡關閉重啓時再用它

若是咱們遠程登陸服務器,當使用ifdown eth0這個命令的時候,頗有可能後面的命令ifup eth0不會被運行,這樣致使咱們斷網而沒法鏈接服務器,因此請儘可能使用 service network restart 這個命令來重啓網卡。


命令:ifdown ens33 && ifup ens33 一次性關閉並重啓網卡,爲了安全起見能夠這樣結合使用

[root@aaa-01 ~]# ifdown ens33 && ifup ens33
成功斷開設備 'ens33'。
鏈接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/6)


設定虛擬網卡

例如:設定虛擬網卡ens33:1 

方法:

 第一步,先到網卡所在的目錄中去:cd /etc/sysconfig/network-scripts/

 第二步,把ens33拷貝到ens33:1裏:cp ifcfg-ens33 ifcfg-ens33\:1

 第三步,編輯配置文件:vi ifcfg-ens33\:1

 第四步,把裏邊帶ens33的改爲ens33:1,把ip改一下,網關跟DNS1均可以不要。

 第五步,重啓網卡:ifdown ens33 && ifup ens33

 

mii-tool ens33 查看網卡是否鏈接,顯示link ok 證實鏈接。

[root@aaa-01 network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

 ethtool ens33 也能夠查看網卡是否鏈接,最後一行顯示yes證實鏈接。


查看主機名:hostname

 更改主機名:hostnamectl set-hostname aminglinux

配置文件:cat /etc/hostname


DNS配置文件

/etc/resolv.conf

[root@aaa-01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 119.29.29.29

 

特殊文件:/etc/hosts 

[root@aaa-01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


編輯它的配置文件能夠給域名指定IP,vim /etc/hosts

格式:指定IP+域名  例如:192.168.232.140   www.qq.com  一個IP能夠指定多個域名,僅僅在本機生效

wKioL1l0YZzzD_jOAADZz-a_XIo360.png

更改前

image.png

更改後

image.png

一個IP能夠設置多個域名

image.png



Linux 防火牆

centos六、五、4...使用netfilter防火牆

centos7開始使用firewalld防火牆


netfilter防火牆(centos6以及之前的版本使用的)

命令:getenforce 查看selinux防火牆是否開啓

Enforcing表示打開,Permissive表示關閉,其實他只是遇到一些須要阻斷是時候他不真正的去阻斷,僅僅是有一個提醒,這個提醒咱們是看不到的,他本身會記錄。

image.png

selinux臨時關閉命令: setenforce 0

[root@aaa-01 ~]# setenforce 0
[root@aaa-01 ~]# getenforce
Permissive


selinux永久關閉

變配置文件:vi /etc/selinux/config   ##把enforcing改爲disabled

Q1C83ISUS8N4FAH$U%XV$Q8.png


在centos7上開起netfilter防火牆方法:

命令:getenforce 查看selinux防火牆是否開啓

關閉firewalld開啓netfilter方法

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

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

第三步,而後開啓netfilter防火牆,開啓以前須要安裝包:yum install -y iptables-services

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

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

命令:iptables -nvL 查看它的默認規則

netfilter是防火牆的名字,而iptables只是它的一個工具


netfilter的5個表

filter表用於過濾包,最經常使用的表,包含三個內置的鏈,有INPUT、FORWARD、OUTPUT三個鏈

filter 這個表主要用於過濾包的,是系統預設的表,這個表也是用的最多的。內建三個鏈INPUT、  OUTPUT以及FORWARD。INPUT做用於進入本機的包(數據包進來的時候要通過的一個鏈,假如把80端口進來的數據包訪問我80端口的數據包檢查一下它的源IP是什麼發現可疑的IP給他禁掉);OUTPUT做用於本機送出的包(對本機送出的包進行操做);FORWARD做用於那些跟  本機無關的包。

nat表用於網絡地址轉換,有PREROUTING、OUTPUT、POSTROUTING三個鏈

nat 主要用處是網絡地址轉換,還能夠作端口映射,也有三個鏈。PREROUTING 鏈的做用是在包剛剛到達防火牆時改變它的 目的地址,若是須要的話。OUTPUT鏈改變本地產生的包的目的地址。POSTROUTING鏈在包就要離開防火牆以前改變其源地址。

 managle表用於給數據包作標記,幾乎用不到

raw表能夠實現不追蹤某些數據包。

security表在centos6中並無,用於強制訪問控制(MAC)的網絡規則


iptables傳輸數據包過程

參考文章:iptables詳解

通過本機:PREROUTING > INPUT > 主機 > OUTPUT > POSTROUTING

不通過本機:PREROUTING > FORWARD POSTROUTING

5E8P_JZBBM3SKR4IAM_QO(9.png


數據包流向與netfilter的5個鏈

 PREROUTING:數據包進入路由表以前

 INPUT:經過路由表後目的地爲本機

 FORWARD:經過路由表後,目的地不爲本機

 OUTPUT:由本機產生,向外發出

 POSTROUTING:發送到網卡接口以前


iptables 基本語法

 查看iptables默認規則:iptables -nvL

 規則保存地址:cat /etc/sysconfig/iptables 配置文件的路徑

 iptables -F 清空規則。 service iptables restart 重啓加載回來

 service iptables save 保存規則(把當前的規則保存到配置文件去),由於剛纔清空了規則沒設置新的規則,因此如今保存他會是空規則

 iptables -t 指定表默認是filter表。iptables -t filter -nvL;iptables -t nat -nvL(nat表的規則是空的)

 iptables -Z 能夠把計數器清零,格式:iptables -Z; iptables -nvL

image.png

 

iptables -A 增長一條規則(默認增長到最後邊)看下圖

 例如:iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 

 解釋:-s:指定來源IP   -p:指定協議(tcp、odp、icmp)   --sport:目標端口  -b:目標IP   -j:最後操做   DROP:把數據直接扔掉   REJECT:拒絕 這兩個的最終結果都是讓這個數據包過不來封掉了這個IP 

 

iptables -I 插入規則。(插入到最前邊)例如:iptables -I INPUT -p tcp --dport 80 -j DROP

image.png

 

iptables -D 刪除規則。例如刪除前兩條規則:

[root@aaa-01 ~]# iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
[root@aaa-01 ~]# iptables -D INPUT -p tcp --dport 80 -j DROP

若是你寫的規則好久了記不得了能夠用這條命令,它會把規則的序列號打印出來根據序列號刪規則。

列出序列號:iptables -nvL --line-numbers
刪除指定的規則:iptables -D INPUT 1

Q9$U30O6LO(52Q0{0BN8P~G.png

 

iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP

針對網卡設置規則:iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

 iptables -P INPUT DROP 更改默認規則的。最好不用動!!假如說你更改了鏈接中斷的工具會斷開鏈接,你只能到終端上去把它更改回來:iptables -P INPUT ACCEPT


iptables小案例

image.png 

定義解釋器 定義變量名 清空全部規則 把INPUT鏈收到的數據包扔掉 接受發出去的全部包

先編輯vi /usr/local/sbin/iptables.sh 加入以下內容

 #! /bin/bash

 ipt="/usr/sbin/iptables"  儘可能寫全局的絕對路徑!

 $ipt -F              把以前的規則清除掉

 $ipt -P INPUT DROP

 $ipt -P OUTPUT ACCEPT

 $ipt -P FORWARD ACCEPT

 $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 $ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT

 $ipt -A INPUT -p tcp --dport 80 -j ACCEPT

 $ipt -A INPUT -p tcp --dport 21 -j ACCEPT 

 w查看一下。

 執行一下:sh /usr/local/sbin/iptables.sh 

wKiom1l0iiuw_jWxAAE9OTk8zQU687.png

icmp示例

 命令:iptables -I INPUT -p icmp --icmp-type 8 -j DROP  加上這條規則以後,你能夠ping外網,可是外網不能ping你,由於它把icmp的8種類型給DROP掉了



nat表應用

如今有兩臺機器,A機器有兩塊網卡一塊網卡咱們把它比喻成是外網,另一塊網卡是內網,ens33是外網,ens37是內網。

另一臺B機器只有一塊內網網卡(ens37),它默認是不能連外網的不能跟外網通訊。咱們的需求是讓B機器能夠連外網,說白了咱們就是要作一個小路由器,路由器能夠上網咱們的電腦就能夠上網

準備工做:

首先準備兩臺機器

image.png


第一步,給A機器添加一塊網卡

W1I@5XDXKQR}(CAGSB{[IKN.png

image.png

選擇LAN區段,就至關於咱們給網卡連到了一個內網的交換機上,這個交換機我們的Windows機器是連不上的,這樣的話,咱們這臺機器和另一臺機器連上同一個內網交換機,它們二者之間通訊

image.png

image.png

給第二臺機器添加一塊網卡由於咱們已經設置了一塊網卡,咱們把它先禁用掉,把啓動時連接給斷掉,重新增長一塊。

image.png

image.png

image.png

這兩臺機器必須選擇同一個LAN區段才能進行內網通訊

image.png

命令行給兩臺機器上的ens37設置IP,也能夠設置配置文件,把ens33網卡配置文件複製一份給ens37

A機器:設置IP,ifconfig ens37 192.168.100.1/24(他只是一個臨時的一重啓就沒有了)

image.png

B機器設置IP,爲了保險能夠把ens33網卡當掉ifdown ens33

只能在終端上設置IP:ifconfig ens37 192.168.100.100/24

image.png

兩臺機器互相ping一下內網IP看看能不能ping通

image.png

image.png

而Windows機器是ping不通的

image.png

準備工做作完,下面實驗。

A機器兩塊網卡ens33(192.168.232.132)、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

[root@aaa-01 ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@aaa-01 ~]# echo "1">/proc/sys/net/ipv4/ip_forward
[root@aaa-01 ~]# cat /proc/sys/net/ipv4/ip_forward
1

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

查看一下規則:iptables -t nat -nvL

image.png

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

image.png

而如今pingA機器IP就通了,這證實他能夠跟外網通訊了

image.png

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

ping一下119.29.29.29  在ping一下www.qq.com

 需求2:C機器只能和A通訊,讓C機器能夠直接連通B機器的22端口,假如C機器就是咱們的電腦

 第一步,A上打開路由端口轉發(由於上邊已經作了就能夠省略)echo "1">/ proc/sys/net/ipv4/ip_forward

 在A上刪掉上一個實驗的規則:iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

 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

相關文章
相關標籤/搜索