介紹
-
XTerm是一個X Window System上的終端模擬器,用來提供多個獨立的SHELL輸入輸出。
-
XTerm
使用虛擬終端技術將遠程主機的終端模擬出來,實現了遠程終端控制。 -
Iperf 是一個網絡性能測試工具,可以測試最大
TCP
和UDP
帶寬性能,具有多種參數和UDP
特性,可以根據需要調整,可以報告帶寬、延遲抖動和數據包丟失。 -
iperf
常用參數表。
參數 | 說明 |
---|---|
-b | UDP 模式的帶寬限制,單位bps |
-e | 顯示更多信息 |
-f | 設置帶寬單位bps 、Kbps 、Mbps 、Gbps 以及對應的Bps |
-i | 發包的間隔時間,單位s |
-l | 緩沖區大小,默認TCP 為128K |
-m | 輸出TCP 的最大端長度(MSS =MTU -TCP/IP header ) |
-o | 將信息輸出到文件file 中 |
-p | 指定端口號 |
-u | 選擇UDP 模式,默認TCP |
-w | 設置套接字緩沖區大小 |
-B | 綁定到多個地址中的一個,UDP 時用於組播分組 |
-M | 設置TCP 的最大端長度 |
-s | 服務器模式 |
-t | 設置傳輸的總時間,單位s |
-c | 客戶端模式 |
-n | 設置發包的大小,單位Byte |
-P | 設置線程數,默認1 線程,服務器端和客戶端同時定義 |
-T | 設置TTL 值 |
目的
- 在
mininet
中使用XTerm
+iperf
實現TCP
和UDP
發包模擬。 - 對不同流量強度進行分析,模擬正常發包和攻擊流量。
配置
apt install mininet
安裝mininet
環境。apt install xterm
安裝XTerm
。- 使用
mn
打開mininet
默認拓撲,輸入xterm h1 h2
打開虛擬終端。
模擬
正常TCP
TCP
的模擬發包需要建立連接,這里使用h1
作為接收端(服務端),h2
作為發送端(客戶端)。- 設置服務端接收端口為
5566
,時間間隔為1s
。
# iperf -s -p 5566 -i 1
-
此時使用
ifstat
查看網絡流量,發現並無大量流量生成。 -
-
設置客戶端使用服務端套接字連接,發送
10s
的數據包。
# iperf -c 10.0.0.1 -p 5566 -t 10
客戶端啟動到建立
TCP
連接后,服務端才能在該端口接收數據包。
- 經過
10s
的傳輸后,客戶端停止發送,服務端產生如下輸出。
------------------------------------------------------------
Server listening on TCP port 5566
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 14] local 10.0.0.1 port 5566 connected with 10.0.0.2 port 47854
[ ID] Interval Transfer Bandwidth
[ 14] 0.0- 1.0 sec 2.59 GBytes 22.3 Gbits/sec
[ 14] 1.0- 2.0 sec 2.62 GBytes 22.5 Gbits/sec
[ 14] 2.0- 3.0 sec 2.53 GBytes 21.7 Gbits/sec
[ 14] 3.0- 4.0 sec 2.57 GBytes 22.1 Gbits/sec
[ 14] 4.0- 5.0 sec 2.67 GBytes 22.9 Gbits/sec
[ 14] 5.0- 6.0 sec 2.71 GBytes 23.3 Gbits/sec
[ 14] 6.0- 7.0 sec 2.66 GBytes 22.8 Gbits/sec
[ 14] 7.0- 8.0 sec 2.69 GBytes 23.1 Gbits/sec
[ 14] 8.0- 9.0 sec 2.70 GBytes 23.2 Gbits/sec
[ 14] 9.0-10.0 sec 2.73 GBytes 23.4 Gbits/sec
[ 14] 0.0-10.0 sec 26.5 GBytes 22.7 Gbits/sec
- 正常
TCP
模擬發包成功。
正常UDP
- 相對於
TCP
的三次握手,UDP
則簡單粗暴,直接根據給定套接字就可以進行發包。 - 仍然選擇
h2
作為發送端,設置服務端套接字,選擇UDP
模式。
# iperf -c 10.0.0.1 -p 5566 -i 1 -u
h1
作為服務端,如果不打開服務端口接收數據,通過ifstat
仍然可以看到有流量發送出。
與
TCP
模式不同,如果服務端未啟動,客戶端是無法發出數據包的。
- 設置服務端接收端口,再次查看效果。
- 發現服務端成功接收
UDP
數據包,正常UDP
發包模擬完成。
DoS攻擊
- 這里使用
scapy
模擬DoS
攻擊,scapy
是用python
編寫的,所以使用pip install
安裝即可。 - 具體實現腳本參考我的另一篇博客。
Ping-DoS
-
將每個攻擊腳本進程設置為
20
,在XTerm
中直接使用python3
運行。 -
-
可以很明顯的看到目標機的端口流量激增。
-
使用
htop
查看本地進程,看到幾乎全是腳本進程。 -
-
Ping DoS
完成。
目標機帶寬足夠,
Ping DoS
無顯著影響但我物理機跑得呼呼響。
SYN-Flood
-
操作類似
Ping DoS
,這里只給出實現效果。 -
-
由於只發送
SYN
,而不完全建立連接,故沒有發送其他數據包,目標機端口流量不會有變化。
這里只用了
5
個進程,但是效果很強烈,物理機出現卡頓。