測試網路連通性
ping
顯示正確的路由表
ip route
route
跟蹤路由
traceroute
tracepath
mtr
確定名稱伺服器使用
nslookup
host
dig
抓包工具
tcpdump
wireshark
安全掃描工具
nmap
netcat :網路界的瑞士軍刀,即nc
流量控制工具
tc
tc qdisc
add
dev eth0 root netem loss
50%
tc qdisc
add
dev eth0 root netem delay
1000
ms
tc qdisc
show
dev eth0
tc qdisc del
fping
fping是一個程式,用於將ICMP探測傳送到網路主機,類似於
ping
,fping的歷史由來已久:Roland
Schemers在
1992
年確實釋出了它的第一個版本,從那時起它就確立了自己的地位,成為網路診斷和統
計的標準工具
相對於
ping
多個主機時效能要高得多。 fping完全不同於
ping
,可以在命令列上定義任意數量的主機,
或者指定包含要
ping
的IP地址或主機列表的檔案, 常在shell 指令碼中使用
CentOS 中由EPEL源提供
官網:http://www.fping
.org
/
[
root@centos8 ~
]
#yum -y install fping
[
root@centos8 ~
]
#fping 10.0.0.7
10.0.0.7is
alive
[
root@centos7 ~
]
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
[
root@centos8 ~
]
#fping 10.0.0.7
10.0.0.7is
unreachable
[
root@centos8 ~
]
#fping 10.0.0.7
10.0.0.7is
unreachable
[
root@centos8 ~
]
#fping 10.0.0.7 10.0.0.8
10.0.0.8is
alive
10.0.0.7is
unreachable
#-g 選項可以指定網段或地址範圍
[
root@centos8 ~
]
#fping -g 10.0.0.0/24
10.0.0.1is
alive
10.0.0.2is
alive
10.0.0.8is
alive
10.0.0.100is
alive
ICMP Host Unreachable
from10.0.0.8for
ICMP Echo sent to
10.0.0.3
[
root@centos8 ~
]
#fping -g 10.0.0.5 10.0.0.10
10.0.0.8is
alive
ICMP Host Unreachable
from10.0.0.8for
ICMP Echo sent to
10.0.0.6
ICMP Host Unreachable
from10.0.0.8for
ICMP Echo sent to
10.0.0.6
#對檔案中的主機時行測試
[
root@centos8 ~
]
#tee hosts.txt <<EOF
10.0.0.7
10.0.0.6
EOF
10.0.0.7
10.0.0.6
[
root@centos8 ~
]
#fping < hosts.txt
10.0.0.6is
alive
10.0.0.7is
unreachable
[
root@centos8 ~
]
#fping -s < hosts.txt
10.0.0.6is
alive
10.0.0.7is
unreachable
2
targets
1
alive
1
unreachable
0
unknown addresses
tcpdump
tcpdump [-adeflnNOpqStvx][-c<資料包數目>][-dd][-ddd][-F<表達檔案>][-i<網路介面>][-r<
資料包檔案>][-s<資料包大小>][-tt][-T<資料包型別>][-vv][-w<資料包檔案>][輸出資料欄位]
引數說明:
-a 嘗試將網路和廣播地址轉換成名稱。
-c<資料包數目> 收到指定的資料包數目後,就停止進行傾倒操作。
-d 把編譯過的資料包編碼轉換成可閱讀的格式,並傾倒到標準輸出。
-dd 把編譯過的資料包編碼轉換成C語言的格式,並傾倒到標準輸出。
-ddd 把編譯過的資料包編碼轉換成十進位制數字的格式,並傾倒到標準輸出。
-e 在每列傾倒資料上顯示連線層級的檔案頭。
-f 用數字顯示網際網路地址。
-F<表達檔案> 指定內含表達方式的檔案。
-i<網路介面> 使用指定的網路截面送出資料包。
-l 使用標準輸出列的緩衝區。
-n 不把主機的網路地址轉換成名字。
-N 不列出域名。
-O 不將資料包編碼最佳化。
-p 不讓網路介面進入混雜模式。
-q 快速輸出,僅列出少數的傳輸協議資訊。
-r<資料包檔案> 從指定的檔案讀取資料包資料。
-s<資料包大小> 設定每個資料包的大小。
-S 用絕對而非相對數值列出TCP關聯數。
-t 在每列傾倒資料上不顯示時間戳記。
-tt 在每列傾倒資料上顯示未經格式化的時間戳記。
-T<資料包型別> 強制將表達方式所指定的資料包轉譯成設定的資料包型別。
-v 詳細顯示指令執行過程。
-vv 更詳細顯示指令執行過程。
-x 用十六進位制字碼列出資料包資料。
-w<資料包檔案> 把資料包資料寫入指定的檔案。
[
root@CentOS-8~
]
# tcpdump -D
1.bond0
[
Up
,
Running
]
2.eth1
[
Up
,
Running
]
3.lo
[
Up
,
Running
,
Loopback
]
4.any(Pseudo-devicethatcapturesonallinterfaces)
[
Up
,
Running
]
5.eth0
[
Up
]
6.virbr0
[
Up
]
7.bluetooth-monitor(BluetoothLinuxMonitor)
[
none
]
8.nflog(Linuxnetfilterlog(NFLOG)interface)
[
none
]
9.nfqueue(Linuxnetfilterqueue(NFQUEUE)interface)
[
none
]
10.bluetooth0(Bluetoothadapternumber0)
[
none
]
11.usbmon0(AllUSBbuses)
[
none
]
12.usbmon1(USBbusnumber1)
13.usbmon2(USBbusnumber2)
14.virbr0-nic
[
none
]
#不指定任何引數,監聽第一塊網絡卡上經過的資料包。主機上可能有不止一塊網絡卡,所以經常需要指定網絡卡。
tcpdump
#監聽特定網絡卡
tcpdump-ien0
#監聽特定主機,監聽主機10.0.0.100 的通訊包,注意:出、入的包都會被監聽。
tcpdumphost10.0.0.100
#特定來源、目標地址的通訊
#特定來源
tcpdumpsrchosthostname
#特定目標地址
tcpdumpdsthosthostname
#如果不指定src跟dst,那麼來源或者目標是hostname的通訊都會被監聽
tcpdumphosthostname
#面試題
[
root@centos8~
]
#tcpdump -i eth0 -nn icmp and src host 10.0.0.6 and dst host
10.0.0.7
#特定埠
tcpdumpport3000
#監聽TCP/UDP,伺服器上不同服務分別用了TCP、UDP作為傳輸層,假如只想監聽TCP的資料包
tcpdumptcp
#來源主機+埠+TCP,監聽來自主機10.0.0.100在埠22上的TCP資料包
tcpdumptcpport22andsrchost10.0.0.100
#監聽特定主機之間的通訊
tcpdumpiphost10.0.0.101and10.0.0.102
#10.0.0.101和除了10.0.0.1之外的主機之間的通訊
tcpdumpiphost10.0.0.101and!10.0.0.1
#詳細示例
tcpdumptcp-ieth1-t-s0-c100anddstport!22andsrcnet192.168.1.0/24
-w./target.cap
(1)tcp:ipicmparprarp和tcp、udp、icmp這些選項等都要放到第一個引數的位置,用來過濾數
據報的型別
(2)-ieth1 :只抓經過介面eth1的包
(3)-t:不顯示時間戳
(4)-s0 :抓取資料包時預設抓取長度為68位元組。加上-S0後可以抓到完整的資料包
(5)-c100 :只抓取100個數據包
(6)dstport!22 :不抓取目標埠是22的資料包
(7)srcnet 192.168.1.0/24 :資料包的源網路地址為192.168.1.0/24
(8)-w./target.cap:儲存成cap檔案,方便用wireshark分析
#限制抓包的數量,如下,抓到1000個包後,自動退出
tcpdump-c1000
#儲存到本地,tcpdump預設會將輸出寫到緩衝區,只有緩衝區內容達到一定的大小,或者tcpdump退出時,
才會將輸出寫到本地磁碟,可以加上-U強制立即寫到本地磁碟(一般不建議,效能相對較差)
tcpdump-n-vvv-c1000-w/tmp/tcpdump_save.cap
nmap
nmap [Scan Type(s)] [Options] {target specification}
命令選項
-sT TCP connect() 掃描,這是最基本的 TCP掃描方式。這種掃描很容易被檢測到,在目標主機的日誌中會記錄大批的連線請求以及錯誤資訊
-sS TCP 同步掃描 (TCP SYN),因為不必全部開啟一個TCP連線,所以這項技術通常稱為半開掃描(half-open)。這項技術最大的好處是,很少有系統能夠把這記入系統日誌
-sF,-sX,-sN 秘密 FIN 資料包掃描、聖誕樹 (Xmas Tree)、空 (Null) 掃描模式。這些掃描方式的理論依據是:關閉的埠需要對你的探測包回應 RST 包,而開啟的埠必需忽略有問題的包
-sP ping 掃描,用 ping 方式檢查網路上哪些主機正在執行。當主機阻塞 ICMP echo 請求包是ping 掃描是無效的。nmap 在任何情況下都會進行 ping 掃描,只有目標主機處於執行狀態,才會進行後續的掃描
-sU UDP 的資料包進行掃描,想知道在某臺主機上提供哪些 UDP 服務,可以使用此選項
-sA ACK 掃描,這項高階的掃描方法通常可以用來穿過防火牆。
-sW 滑動視窗掃描,非常類似於 ACK 的掃描
-sR RPC 掃描,和其它不同的埠掃描方法結合使用。
-b FTP 反彈攻擊 (bounce attack),連線到防火牆後面的一臺
FTP 伺服器做代理,接著進行埠掃描。
-P0 在掃描之前,不 ping 主機。
-PT 掃描之前,使用 TCP ping 確定哪些主機正在執行
-PS 對於 root 使用者,這個選項讓 nmap 使用 SYN 包而不是 ACK 包來對目標主機進行掃描。
-PI 設定這個選項,讓 nmap 使用真正的 ping(ICMP echo 請求)來掃描目標主機是否正在執行。
-PB 這是預設的 ping 掃描選項。它使用 ACK(-PT) 和 ICMP(-PI) 兩種掃描型別並行掃描。如果防火牆能夠過濾其中一種包,使用這種方法,你就能夠穿過防火牆。
-O 這個選項啟用對 TCP/IP 指紋特徵 (fingerprinting) 的掃描,獲得遠端主機的標誌,也就是作業系統型別
-I 開啟 nmap 的反向標誌掃描功能。
-f 使用碎片 IP 資料包傳送SYN、FIN、XMAS、NULL。包增加包過濾、入侵檢測系統的難度,使其無法知道你的企圖
-v 冗餘模式。強烈推薦使用這個選項,它會給出掃描過程中的詳細資訊。
-S <IP> 在一些情況下,nmap 可能無法確定你的源地址。在這種情況使用這個選項給出指定 IP 地址
-g port 設定掃描的源埠
-oN 把掃描結果重定向到一個可讀的檔案 logfilename 中
-oS 掃描結果輸出到標準輸出。
--host_timeout 設定掃描一臺主機的時間,以毫秒為單位。預設的情況下,沒有超時限制
--max_rtt_timeout 設定對每次探測的等待時間,以毫秒為單位。如果超過這個時間限制就重傳或者超時。預設值是大約 9000 毫秒
--min_rtt_timeout 設定 nmap對每次探測至少等待你指定的時間,以毫秒為單位
-M count 置進行 TCP connect() 掃描時,最多使用多少個套接字進行並行的掃描
#Tcpack
掃描,併發
2000
,速度快
nmap-n-PA--min-parallelism2000172.16.0.0
/
16
#僅列出指定網段上的每臺主機,不傳送任何報文到目標主機.
[root@centos8 ~]#nmap-sL10.0.0.0
/
24
StartingNmap7.70
(
https
:
//nmap.org ) at 2020-04-23 12:28 CST
Nmap scan report for
10.0
.
0.0
Nmap scan report for
10.0
.
0.1
......
Nmap scan report for
10.0
.
0.254
Nmap scan report for
10.0
.
0.255
Nmap
done
:
256
IP addresses (
0
hosts up) scanned in
1.04
seconds
#可以指定一個IP地址範圍
[root
@centos8
~]#nmap -sP
10.0
.
0.1
-
10
Starting Nmap
7.70
(
https
:
//nmap.org ) at 2020-04-23 12:30 CST
Nmap
scan
report for
10.0
.
0.1
Host is up (
0.000081s
latency).
#批次掃描一個網段的主機存活數
nmap -sP -v
192.168
.
1.0
/
24
nmap –v –sn ip/
24
#有些主機關閉了ping檢測,所以可以使用-P0跳過ping的探測,可以加快掃描速度.
nmap -P0
192.168
.
1.100
#掃描主機
nmap –v –A IP
#一次性掃描多臺目標主機
[root
@centos8
~]#nmap
10.0
.
0.610.0
.
0.7
Starting Nmap
7.70
(
https
:
//nmap.org ) at 2020-04-23 12:39 CST
Nmap
scan
report for
10.0
.
0.6
Host is up (
0.00055s
latency).
#探測目標主機開放的埠,可指定一個以逗號分隔的埠列表(如-PS22,
443
,
80
)
[root
@centos8
~]#nmap -PS22,
80
,
44310.0
.
0.1
Starting Nmap
7.70
(
https
:
//nmap.org ) at 2020-04-23 12:31 CST
Nmap
scan
report for
10.0
.
0.1
#使用SYN半開放掃描
[root
@centos8
~]#nmap -sS
10.0
.
0.1
Starting Nmap
7.70
(
https
:
//nmap.org ) at 2020-04-23 12:33 CST
#掃描開放了TCP埠的裝置
[root
@centos8
~]#nmap -sT
10.0
.
0.1
Starting Nmap
7.70
(
https
:
//nmap.org ) at 2020-04-23 12:34 CST
#掃描開放了UDP埠的裝置
[root
@centos8
~]#nmap -sU
10.0
.
0.1
Starting Nmap
7.70
(
https
:
//nmap.org ) at 2020-04-23 12:34 CST
#只掃描UDP埠
nmap –e eth1 -sU -O
10.0
.
0.1
#掃描TCP和UDP埠
nmap -sTU -O
10.0
.
0.1
#用於掃描目標主機服務版本號
[root
@centos8
~]#nmap -sV
10.0
.
0.7
Starting Nmap
7.70
(
https
:
//nmap.org ) at 2020-04-23 12:37 CST
#檢視主機當前開放的埠
nmap localhost
#檢視主機埠(
1024
-
65535
)中開放的埠
nmap -p
1024
-
65535
localhost
#探測目標主機開放的埠
nmap -PS
10.0
.
0.1
#探測所列出的目標主機埠
nmap -PS22,
80
,
330610.0
.
0.1
#探測目標主機作業系統型別
nmap -O
10.0
.
0.1
#探測目標主機作業系統型別
nmap -A
10.0
.
0.1