Centos7.5- Linux網絡管理技術

本節所講內容:

- 18.1  OSI七層模型和TCP/IP四層模型
- 18.2  linux網絡相關的調試命令
 - 18.3  實戰-在局域網中使用 awl僞裝MAC地址進行多線程SYN洪水***

18.1 OSI七層模型和TCP/IP四層模型

18.1.1 OSI七層參考模型,TCP/IP四層參考模型

在這裏插入圖片描述

OSI七層模型:OSI(Open System Interconnection)開放系統互連參考模型是國際標準化組織(ISO)制定的一個用於計算機或通信系統間互聯的標準體系。
TCP/IP四層模型:TCP/IP參考模型是計算機網絡的祖父ARPANET和其後繼的因特網使用的參考模型。
分層作用:方便管理
在這裏插入圖片描述
七層模型優點:
1、把複雜的網絡劃分成爲更容易管理的層(將整個龐大而複雜的問題劃分爲若干個容易處理的小問題)
2、沒有一個廠家能完整的提供整套解決方案和所有的設備,協議.
3、獨立完成各自該做的任務,互不影響,分工明確,上層不關心下層具體細節,分層同樣有益於網絡排錯
功能與代表設備
分層 名字 功能 工作在該層的設備
7 應用層 提供用戶界面 QQ,IE 。應用程序
6 表示層 表示數據,進行加密等處理
5 會話層 將不同應用程序的數據分離
4 傳輸層 提供可靠或不可靠的傳輸,在重傳前執行糾錯 防火牆
3 網絡層 提供邏輯地址,路由器使用它們來選擇路徑 三層交換機、路由器
2 數據鏈路層 將分組拆分爲字節,並講字節組合成幀,使用MAC地址提供介質訪問,執行錯誤檢測,但不糾錯 二層交換機,網卡
1 物理層 在設備之間傳輸比特,指定電平,電纜速度和電纜針腳 集線器

互動:爲什麼現代網絡通信過程中用TCP/IP四層模型,而不是用OSI七層模型呢?
OSI七層模型是理論模型,一般用於理論研究,他的分層有些冗餘,實際應用,選擇

  • TCP/IP的四層模型。而且 OSI 自身也有缺陷,大多數人都認爲 OSI
    模型的層次數量與內容可能是最佳的選擇,其實並非如此,其中會話層和表示層幾乎是空的,而數據鏈路層和網絡層包含內容太多,有很多的子層插入,每個子層都有不同的功能。

18.1.2 常見網絡相關的協議

  • ARP(Address Resolution Protocol):地址解析協議,將IP解析成MAC地址 DNS:域名解析協議
    www.baidu.com SNMP(Simple Network Management Protocol)網絡管理協議
    DHCP(Dynamic Host Configuration
    Protocol)動態主機配置協議,它是在TCP/IP網絡上使客戶機獲得配置信息的協議 FTP(File Transfer
    Protocol)文件傳輸協議,它是一個標準協議,是在計算機和網絡之間交換文件的最簡單的方法。 HTTP(Hypertext
    Transfer Protocol ):超文本傳輸協議 HTTPS(Secure Hypertext Transfer
    Protocol):安全超文本傳輸協議,它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操作.
    ICMP(Internet Control Message Protocol):Internet控制信息協議,互聯網控制報文協議 ping
    ip定義消息類型有:TTL超時、地址的請求與應答、信息的請求與應答、目的地不可到達 SMTP(Simple Mail Transfer
    Protocol):簡單郵件傳送協議 TELNET Protocol:虛擬終端協議 TFTP(Trivial File Transfer
    Protocol):小文件傳輸協議 UDP(User Datagram
    Protocol):用戶數據報協議,它是定義用來在互連網絡環境中提供包交換的計算機通信的協議 TCP(Transmission
    Control Protocol): 傳輸控制協議,是一種面向連接的、可靠的、基於字節流的傳輸層通信協議
    log轉發:開啓一個協議:tcp(三次握手和四次揮手)

TCP協議和UDP協議的區別
(1)TCP協議:TCP(Transmission Control Protocol,傳輸控制協議)是面向連接的協議,在收發數據前,必須和對方建立可靠的連接。
(2)UDP協議:UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務
總結:TCP與UDP的區別:
1.基於連接與無連接;
2.對系統資源的要求(TCP較多,UDP少);
3.UDP程序結構較簡單;UDP信息包的標題很短,只有8個字節,相對於TCP的20個字節信息包的額外開銷很小。所以傳輸速度可更快
4.TCP保證數據正確性,UDP可能丟包;TCP保證數據順序,UDP不保證。
場景: 視頻,語音通訊使用udp,或網絡環境很好,比如局域網中通訊可以使用udp。 udp數據傳輸完整性,可以通過應用層的軟件來校對就可以了。
tcp傳文件,數據完整性要求高。

18.1.3 TCP和UDP 常用端口號名稱

(1)TCP 端口分配
21  ftp 文件傳輸服務
22  ssh 安全遠程連接服務
23  telnet  遠程連接服務
25  smtp    電子郵件服務
53  DNS 域名解析服務,有tcp53也有用udp53端口傳輸
80  http    web服務
443 https   安全web服務

互動:如果你不知道哪個端口對應哪個服務怎麼辦?如873端口是哪個服務的?

[root@xuegod63 ~]# vim /etc/services    #此文件中,包含所有常見端口號及服務名稱

#此文件可以查看常用端口對應的名字。iptables或netstat要把端口解析成協議名時,都需要使用到這個文件。另外後期xinetd服務管理一些小服務時,也會使用到此文件來查詢對應的小服務端口號。
注:有的服務是UDP和TCP端口都會監聽的

18.1.4 IP地址分類

IP地址分5類,常見的地址是A、B、C 三類
A類地址:範圍從0-127,0是保留的並且表示所有IP地址,而127也是保留的地址,並且是用於測試環回口用的。因此A類地址的可用的範圍其實是從1-126之間。以子網掩碼:255.0.0.0.
B類地址:範圍從128-191,如172.168.1.1,以子網掩碼來進行區別:255.255.0.0
C類地址:範圍從192-223,以子網掩碼來進行區別: 255.255.255.0
D類地址:範圍從224-239,被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協議的一組計算機。

E類地址:範圍從240-254,爲將來使用保留。 

ABC 3類中私有IP地址範圍:
A:10.0.0.0--10.255.255.255  /8
B:  172.16.0.0--172.31.255.255  /16
C:  192.168.0.0--192.168.255.255  /24

互動: ping 127.0.0.1 可以ping通。ping 127.23.23.23 可以ping通嗎?
結論:這個127這個網段都用於環回口

[root@xuegod63 ~]# ping 127.23.23.23
PING 127.23.23.23 (127.23.23.23) 56(84) bytes of data.
64 bytes from 127.23.23.23: icmp_seq=1 ttl=64 time=0.360 ms
64 bytes from 127.23.23.23: icmp_seq=2 ttl=64 time=0.068 ms

18.2 linux網絡相關的調試命令

18.2.1 查看網卡物理連接是否正常

[root@xuegod63 ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

查看IP相關信息

ifconfig命令被用於配置和顯示Linux內核中網絡接口的網絡參數。
[root@xuegod63 ~]# ifconfig

常見的一些網絡接口
eth0 ..... eth4 ...   以太網接口(linux6)
waln0      無線接口
eno177776  以太網接口 (linux7)
ens33   以太網接口(linux7)
bond0  team0   網卡綁定接口
virbr0  虛擬交換機橋接接口
br0    虛擬網橋接口
lo      本地迴環接口
vnet0   KVM虛擬機網卡接口
18.2.2  修改網卡IP地址
方法1:手工修改網卡配置文件
[root@xuegod63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet            #設置類型是以太網設備,如圖:

在這裏插入圖片描述

PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none    # 參數:static靜態IP 或dhcp 或none無(不指定),如是none,配上IP地址和static效果一樣
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=ens33    #網卡名字
UUID=c713acec-674b-411d-9e61-646482a292ca   #網卡UUID,全球唯一
DEVICE=ens33   #設備名字,在內核中識別的名字
ONBOOT=yes    #啓用該設備,如果no,表示不啓動此網絡設備
IPADDR=192.168.1.63    #IP地址
PREFIX=24           #子網掩碼,24相當於255.255.255.0
GATEWAY=192.168.1.1    #默認網關
DNS1=114.114.114.114    #首選DNS地址
DNS2=8.8.8.8    #備用DNS地址
IPV6_PRIVACY=no 
PEERDNS=no

例1: 給虛擬機再添加一個網卡,並手動成生網卡配置文件

[root@xuegod63 ~]# init 0
添加一塊網卡

新加的網卡,也使用橋接模式。

[root@xuegod63 ~]# ifconfig -a   # -a查看所有網絡設備,包括沒有啓動的網卡設備
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
。。。
ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
注:我這裏顯示第二塊網卡名字是ens38,你那邊可能不是。這是由內核實別出來的

默認新增加的網卡沒有配置文件,現在手動添加一個
[root@xuegod63 ~]# cd /etc/sysconfig/network-scripts/
[root@xuegod63 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@xuegod63 network-scripts]# vim ifcfg-ens38    #修改內容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=ens38
UUID=c713acec-674b-411d-9e61-646482a292ca   #這一行刪除掉
DEVICE=ens38
ONBOOT=yes
IPADDR=192.168.1.68   #改成68 IP
PREFIX=24
GATEWAY=192.168.1.1
DNS1=114.114.114.114
IPV6_PRIVACY=no
PEERDNS=no
[root@xuegod63 ~]# systemctl restart NetworkManager   
[root@xuegod63 ~]# ifconfig  #發現ens38 ,IP地址沒有修改成功
[root@xuegod63 ~]# service  network restart   #重啓網絡服務生效
[root@xuegod63 ~]# ifconfig  #發現ens38 ,IP地址配置成功

方法2:[root@panda ~]# nmtui-edit 字符界面配IP, 瞭解一下

例1:啓動關閉指定網卡:

[root@xuegod63 ~]# ifconfig ens38 down
[root@xuegod63 ~]# ifconfig 
[root@xuegod63 ~]# ifconfig ens38 up

例2:臨時配置IP地址

[root@xuegod63 ~]# ifconfig ens38 192.168.1.90

[root@xuegod63 ~]# ifconfig ens38 192.168.1.90 netmask 255.255.255.0

例3:給一個網絡臨時配置多個IP地址

[root@xuegod63 ~]# ifconfig ens33:1  192.168.1.3 netmask 255.255.255.0
[root@xuegod63 ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 。。。
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.3  netmask 255.255.255.0  broadcast 192.168.1.255

Centos7.5- Linux網絡管理技術18.2.3 查看端口的監聽狀態

netstat 命令: 查看系統中網絡連接狀態信息,   
常用的參數格式 :  netstat -anutp  
   -a, --all  顯示本機所有連接和監聽的端口
   -n, --numeric    don't resolve names  以數字形式顯示當前建立的有效連接和端口
   -u  顯示udp協議連接
   -t  顯示tcp協議連接
   -p, --programs   顯示連接對應的PID與程序名

Proto===連接協議的種類
Recv-Q====接收到字節數
Send-Q====從本服務器,發出去的字節數
Local Address====本地的IP地址,可以是IP,也可以是主機名
Foreign Address====遠程主機的IP 地址
網絡連接狀態STATE:
      CLOSED : 初始(無連接)狀態。
      LISTEN :  偵聽狀態,等待遠程機器的連接請求。
            ESTABLISHED: 完成TCP三次握手後,主動連接端進入ESTABLISHED狀態。此時,TCP連接已經建立,可以進行通信。
             TIME_WAIT :  在TCP四次揮手時,主動關閉端發送了ACK包之後,進入TIME_WAIT狀態,等待最多MSL時間,讓被動關閉端收到ACK包。
      擴展:MSL 
MSL,即Maximum Segment Lifetime,一個數據分片(報文)在網絡中能夠生存的最長時間,在RFC 793中定義MSL通常爲2分鐘,即超過兩分鐘即認爲這個報文已經在網絡中被丟棄了。對於一個TCP連接,在雙方進入TIME_WAIT後,通常會等待2倍MSL時間後,再關閉掉連接,作用是爲了防止由於FIN報文丟包,對端重發導致與後續的TCP連接請求產生順序混亂

實戰:服務器上有大量TIME_WAI連接,如何優化TCP連接,快速釋放tcp連接 ?
[root@iZ2zee35aswj00xgdqoanhZ ~]# netstat  -antup | grep   TIME_WAI 
tcp        0      0 123.57.82.225:80            111.196.245.241:4002        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3970        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:4486        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3932        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3938        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3917        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3944        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3957        TIME_WAIT   -                   
tcp        0      0 123.57.82.225:80            111.196.245.241:3922        TIME_WAIT   -
解決:
例:linux下默認MSL等待時間是60秒
[root@xuegod63 ipv4]# cat /proc/sys/net/ipv4/tcp_fin_timeout
60 秒    
[root@xuegod63 ipv4]# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout  #通過縮短時間time_wait時間來快速釋放鏈接

修改主機名配置文件,作用:設置主機名永久生效

[root@xuegod63 ~]# vim  /etc/hostname
xuegod63.cn

配置IP與主機名(域名)的對應關係。

[root@xuegod63 ~]# vim /etc/hosts  #優先級高於DNS解析
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63   xuegod63.cn
192.168.1.64   xuegod64.cn
192.168.1.62   xuegod62.cn

18.2.4 配置DNS-路由相關信息

DNS配置的配置文件
[root@xuegod63 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search cn
nameserver 114.114.114.114 
注:在centos5版本,配置DNS用這個文件。在centos6以後,直接在網卡配置文件中指定:DNS1=192.168.1.1
默認情況下,域名解析順序: 本地hosts文件-》DNS查詢

互動:是不是一定先解析hosts再解析DNS?

本機域名解析順序
[root@xuegod63 ~]# vim /etc/nsswitch.conf   #查找以下內容
#hosts:     db files nisplus nis dns
hosts:      files dns myhostname   #可以看到是先查看 files hosts文件,再查看DNS的

查看路由信息:

[root@xuegod63 ~]# route  -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0       U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0         U     1002   0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0              UG    0      0        0 eth0
注:0.0.0.0         192.168.1.1     0.0.0.0   #0.0.0.0是32位二進制轉換成十進制的寫法。32位子網掩碼都爲0。表示IP地址32位都是主機位。如果IP地址是0.0.0.0,子網掩碼也是0.0.0.0,則表示所有的IP地址,或者是沒有IP地址。
參數:  -n  :不要使用通訊協定或主機名稱,直接使用 IP 或 port number;
route命令輸出的路由表字段含義如下:
    Destination 目標  :The destination network or destination host. 目標網絡或目標主機。
      Gateway 網關  :網關地址,如果是本地網段IP,就顯示0.0.0.0 
      Genmask  :子網掩碼  

添加/刪除路由條目:
[root@linux ~]# route add [-net|-host] [網域或主機] netmask [mask] [gw|dev]
[root@linux ~]# route del [-net|-host] [網域或主機] netmask [mask] [gw|dev]
增加 (add) 與刪除 (del) 路由的相關參數:
  -net    :表示後面接的路由爲一個網域;
  -host  :表示後面接的爲連接到單部主機的路由;
  netmask :與網域有關,可以設定 netmask 決定網域的大小;
  gw      :gateway 的簡寫,後續接的是 IP 的數值喔,與 dev 不同;
  dev    :如果只是要指定由那一塊網路卡連線出去,則使用這個設定,後面接 eth0 等
例:
添加/刪除路由條目:
添加路由(把Linux做成路由器時或服務器有多個網卡,指定到不同網段走哪個網卡)
實戰場景:多個網卡,多個網段,實現不同數據走不同網卡。如果網絡管理和生產數據分開管理。 
[root@xuegod63 ~]#  route add -net 192.168.2.0 netmask 255.255.255.0 dev ens38
[root@xuegod63 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 ens38
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 ens38
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 ens38

刪除路由
[root@xuegod63 ~]# route del -net 192.168.2.0 netmask 255.255.255.0

路由跟蹤:查看經過多少個路由器到目標網址:
實戰場景: 新上線的服務器 www.xuegod.cn , 北京用戶需要經過幾跳可以到達服務器。 
[root@xuegod63 ~]# traceroute baid.com
traceroute to baid.com (184.154.126.180), 30 hops max, 60 byte packets
 1  gateway (192.168.1.1)  173.447 ms  170.522 ms  170.644 ms
 2  10.70.0.1 (10.70.0.1)  424.751 ms  424.462 ms  424.138 ms
 3  61.51.54.41 (61.51.54.41)  172.110 ms  171.752 ms  171.413 ms
 4  bt-227-241.bta.net.cn (202.106.227.241)  171.245 ms  171.062 ms  170.805 ms
 5  202.96.12.1 (202.96.12.1)  169.427 ms  169.097 ms  168.747 ms
 6  219.158.15.38 (219.158.15.38)  168.518 ms 219.158.19.226 (219.158.19.226)  39.792 ms  39.078 ms
 7  219.158.103.42 (219.158.103.42)  39.969 ms  48.603 ms  48.222 ms
 8  219.158.103.30 (219.158.103.30)  47.984 ms 219.158.98.94 (219.158.98.94)  38.772 ms  47.271 ms
 9  219.158.30.42 (219.158.30.42)  200.250 ms  204.371 ms  204.074 ms
10  sjo-b21-link.telia.net (213.248.73.189)  290.052 ms  290.775 ms  287.952 ms
11  kanc-b1-link.telia.net (213.155.132.181)  331.740 ms  333.284 ms  333.632 ms
12  chi-b21-link.telia.net (213.155.130.176)  340.701 ms  339.143 ms *
13  * * serverhub-ic-324864-chi-b21.c.telia.net (62.115.154.247)  336.831 ms
14  agg1.c13.r07.s101.chi03.singlehop.net (67.212.190.226)  352.706 ms  758.439 ms  552.097 ms
15  cr1.c09c10.r15.s101.chi03.singlehop.net (67.212.183.211)  325.025 ms  339.397 ms  340.297 ms
16  server2.homelike.com (184.154.126.180)  341.447 ms  342.154 ms  343.028 ms

ping命令的一般格式爲:

-c 數目 在發送指定數目的包後停止。
-i 秒數 設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。
[root@bogon ~]# ping -i 0.01 192.168.1.1

指定從哪個端口出去。使用參數大寫的I
ping -I ens33 192.168.1.1   

互動:當IP地址衝突後或網關衝突後,在windows下有這個,在linux怎麼辦?

arping: 查看IP地址是否有衝突
例:查看網關是否有衝突
[root@xuegod63 ~]# arping -I ens33  192.168.1.1
ARPING 192.168.1.1 from 192.168.1.63 ens33
Unicast reply from 192.168.1.1 [80:9F:AB:08:EB:CA]  3.786ms
Unicast reply from 192.168.1.1 [80:9F:AB:08:EB:CA]  2.631ms

watch 
作用:實時監測命令的運行結果,可以看到所有變化數據包的大小
-d, --differences  ['dɪfərəns]       #高亮顯示指令輸出信息不同之處;
-n, --interval seconds   [ˈɪntəvl]   #指定指令執行的間隔時間(秒);
例1:每隔1秒高亮差異顯示ens33相關信息
[root@xuegod63 ~]# watch -d -n 1  "ifconfig ens33"
Ctrl+c 就可以退出~

<font color=#000000 size=5 face="微軟雅黑">18.3 實戰-在局域網中使用 awl僞裝MAC地址進行多線程SYN洪水***

http://ssa.yundun.com/cc 雲盾全球實時***圖  
你現在學得是第一階段中的內容,這個案例是讓你開眼界!

18.3.1 tcp三次握手及tcp連接狀態

TCP報文段的首部格式:

需要了解的信息:
ACK : TCP協議規定,只有ACK=1時有效,也規定連接建立後所有發送的報文的ACK必須爲1
SYN(SYNchronization) : 在連接建立時用來同步序號。當SYN=1而ACK=0時,表明這是一個連接請求報文。對方若同意建立連接,則應在響應報文中使SYN=1和ACK=1. 因此,  SYN置1就表示這是一個連接請求或連接接受報文。
synchronization  [ˌsɪŋkrənaɪ'zeɪʃn]  同步
FIN (finis)即完,終結的意思, 用來釋放一個連接。當 FIN = 1 時,表明此報文段的發送方的數據已經發送完畢,並要求釋放連接。
finis   ['faɪnɪs]  終結

建立tcp連接時的tcp三次握手和斷開tcp連接時的4次揮手整體過程說明圖:
在這裏插入圖片描述
實戰1:使用tcpdump抓包查看tcp三次握手過程

tcp三次握手過程:
Client:我可以給你發數據嗎?
Server:可以
Client:好的

三次握手的核心是: 確認每一次包的序列號。

tcp三次握手過程:
1、首先由Client發出請求連接即 SYN=1,聲明自己的序號是 seq=x
2、然後Server 進行回覆確認,即 SYN=1 ,聲明自己的序號是 seq=y, 並設置爲ack=x+1,
3、最後Client 再進行一次確認,設置  ack=y+1.

tcpdump常用參數:
-c         指定包個數
-n        IP,端口用數字方式顯示
port   指定端口 

互動:如何產生tcp的鏈接?

在xuegod63上登錄xuegod64,抓取ssh遠程登錄xuegod64時,產生的tcp三次握手包:
[root@xuegod63 ~]# ifconfig ens38 down 
[root@xuegod63 ~]# tcpdump   -n  -c 3 port 22  -i ens33
打開另一個終端,開始建立tcp連接:
[root@xuegod63 Desktop]# ssh [email protected]
The authenticity of host '192.168.1.64 (192.168.1.64)' can't be established.
RSA key fingerprint is b2:29:c8:62:98:80:92:3c:e2:67:3f:f0:7c:40:69:63.
Are you sure you want to continue connecting (yes/no)?   #到這裏就不用執行了,tcp已經建立連接

查看數據包:

[root@xuegod63 ~]# tcpdump   -n  -c 3 port 22  -i ens33 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
10:34:54.874512 IP 192.168.1.63.59528 > 192.168.1.64.ssh: Flags [S], seq 2421809005, win 29200, options [mss 1460,sackOK,TS val 2231108 ecr 0,nop,wscale 7], length 0
10:34:54.876367 IP 192.168.1.64.ssh > 192.168.1.63.59528: Flags [S.], seq 4293815945, ack 2421809006, win 28960, options [mss 1460,sackOK,TS val 542827 ecr 2231108,nop,wscale 7], length 0
10:34:54.877387 IP 192.168.1.63.59528 > 192.168.1.64.ssh: Flags [.], ack 1, win 229, options [nop,nop,TS val 2231111 ecr 542827], length 0

注:Flags [S] 中的 S 表示爲SYN包爲1

client主機返回ACK,包序號爲ack=1 ,這是相對序號,如果需要看絕對序號,可以在tcpdump命令中加-S
[root@xuegod63 ~]# tcpdump -n -c 3 port 22  -S  -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:00:54.310316 IP 192.168.1.63.57528 > 192.168.1.64.ssh: Flags [S], seq 1932774705, win 14600, options [mss 1460,sackOK,TS val 5103659 ecr 0,nop,wscale 7], length 0
16:00:54.311072 IP 192.168.1.64.ssh > 192.168.1.63.57528: Flags [S.], seq 3006844046, ack 1932774706, win 14480, options [mss 1460,sackOK,TS val 3869455 ecr 5103659,nop,wscale 7], length 0
16:00:54.311175 IP 192.168.1.63.57528 > 192.168.1.64.ssh: Flags [.], ack 3006844047, win 115, options [nop,nop,TS val 5103660 ecr 3869455], length 0
3 packets captured
3 packets received by filter
0 packets dropped by kernel

TCP三次握手連接狀態詳解:
在這裏插入圖片描述

TCP連接狀態詳解:

服務器端:LISTEN:偵聽來自遠方的TCP端口的連接請求
客戶端:SYN-SENT:在發送連接請求後等待匹配的連接請求
服務器端:SYN-RECEIVED:在收到和發送一個連接請求後等待對方對連接請求的確認
客戶端/服務器端:ESTABLISHED:代表一個打開的連接

18.3.2 實戰:在局域網中使用 awl僞裝IP地址進行多線程SYN洪水***

SYN洪水**概述:SYN洪水主要源於: tcp協議的三次握手機制**

**SYN洪水*的過程:

  • 在服務端返回一個確認的SYN-ACK包的時候有個潛在的弊端,如果發起的客戶是一個不存在的客戶端,那麼服務端就不會接到客戶端迴應的ACK包。
    這時服務端需要耗費一定的數量的系統內存來等待這個未決的連接,直到等待超關閉,才能施放內存。

**如果惡意者通過通過ip欺騙,發送大量SYN包給受害者系統,導致服務端存在大量未決的連接並佔用大量內存和tcp連接,從而導致正常客戶端無法訪問服務端,這就是SYN洪水*的過程。
懂:1 不懂:2
實戰拓撲圖:

在這裏插入圖片描述

**下載地址:https://gitlab.com/davical-project/awl/tags
在xuegod63 安裝awl軟件進行*
在這裏插入圖片描述

通過xshell上傳awl-0.2.tar.gz到Linux系統中

開始安裝awl

[root@xuegod63 ~]#tar zxvf awl-0.2.tar.gz  #解壓
[root@xuegod63 ~]#cd awl-0.2
[root@xuegod63 awl-0.2]#./configure   # 查檢軟件包安裝環境
[root@xuegod63 awl-0.2]#make  -j  4   
#make  把源代碼編譯成可執行的二進制文件

# -j 4以4個進程同時編譯,速度快

[root@xuegod63 awl-0.2]#make install   #安裝
查看安裝的命令:
[root@xuegod63 awl-0.2]# which awl
/usr/local/bin/awl

在xuegod64上搭建一臺web服務器,模擬要被***的服務器
[root@xuegod64 ~]# yum install httpd -y  #安裝web服務器
[root@xuegod64 ~]# systemctl start httpd
[root@xuegod64 ~]# iptables -F

**開始*

實戰4: 在局域網中使用 awl僞裝IP地址進行多線程SYN***

獲取對方的IP地址解析成MAC地址
[root@xuegod63 ~]# ping 192.168.1.64

[root@xuegod63 ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.17             ether   e0:b9:a5:ac:c5:76        C                     eth0
192.168.1.64             ether   00:0c:29:57:f5:b5        C                     eth0

**開始*
awl參數如下:

-i 發送包的接口,如果省略默認是eth0
-m 指定目標mac地址    注:如果-m沒有指定mac,默認目標MAC地址是“FF.FF.FF.FF.FF.FF”,
FF.FF.FF.FF.FF.FF  MAC地址是什麼?
這表示向同一網段內的所有主機發出ARP廣播,進行SYN***,還容易使整個局域網癱瘓。
-d 被***機器的IP
-p 被***機器的端口

兩臺機器:
[root@xuegod63 ~]# iptables -F
[root@xuegod63 ~]# awl -i ens33 -m 00:0c:29:57:f5:b5 -d 192.168.1.64 -p 80

測試***效果:
在xuegod64上查看:發現很多僞裝成公網的IP在***我們

總結:

  • 18.1 OSI七層模型和TCP/IP四層模型
  • 18.2 linux網絡相關的調試命令
  • 18.3 實戰:在局域網中使用 awl僞裝MAC地址進行多線程SYN洪水***
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章