1. ping
簡介
ping屬于一個通信協(xié)議,是TCP/IP協(xié)議的一部分。它的原理是:利用網(wǎng)絡(luò)上機器IP地址的唯一性,給目標(biāo)IP地址發(fā)送一個數(shù)據(jù)包,通過對方回復(fù)的數(shù)據(jù)包來確定兩臺網(wǎng)絡(luò)機器是否連接相通,時延是多少。
示例
[root@192 ~]# ping www.baidu.com
PING www.baidu.com (36.152.44.95) 56(84) bytes of data.
64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=1 ttl=128 time=11.2 ms
64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=2 ttl=128 time=12.5 ms
64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=3 ttl=128 time=12.2 ms
^C
--- www.baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 11.284/12.017/12.501/0.534 ms
- 返回內(nèi)容包括:
1)ping目標(biāo)主機的域名和IP(ping會自動將域名轉(zhuǎn)換為IP)
2)不帶包頭的包大小和帶包頭的包大小
3)icmp_seq:ping序列,從1開始;如果數(shù)字不是按順序遞增也就意味著丟包了;
ttl:剩余的ttl(Time To Live,TTL由IP數(shù)據(jù)包的發(fā)送者設(shè)置,在IP數(shù)據(jù)包從源到目的的整個轉(zhuǎn)發(fā)路徑上,每經(jīng)過一個路由器,則把該TTL的值減1,然后再將IP包轉(zhuǎn)發(fā)出去。如果在IP包到達目的IP之前,TTL減少為0,路由器將會丟棄收到的TTL=0的IP包,并向IP包的發(fā)送者發(fā)送 ICMP time exceeded消息,以防止數(shù)據(jù)包不斷在IP互聯(lián)網(wǎng)絡(luò)上永不終止地循環(huán)。);
time: 響應(yīng)時間,數(shù)值越小,聯(lián)通速度越快;
4)發(fā)出去的包數(shù),返回的包數(shù),丟包率,耗費時間;
5)最小/最大/平均響應(yīng)時間和本機硬件耗費時間;
原理
ping是應(yīng)用層直接使用網(wǎng)絡(luò)層ICMP的一個例子,它沒有通過運輸層的TCP或UDP。ping命令底層使用的是ICMP,ICMP報文封裝在ip包里,所以ICMP屬于網(wǎng)絡(luò)層協(xié)議。
ping 命令每秒發(fā)送一個ICMP ECHO_REQUEST數(shù)據(jù)報并且為每個接收到的響應(yīng)打印一行輸出。ping 命令計算信號往返時間和(信息)包丟失情況的統(tǒng)計信息,并且在完成之后顯示一個簡要總結(jié)。ping 命令在程序超時或當(dāng)接收到 SIGINT 信號時結(jié)束。
有些服務(wù)器為了防止通過ping探測到,通過防火墻設(shè)置了禁止ping或者在內(nèi)核參數(shù)中禁止ping,這樣就不能通過ping確定該主機是否還處于開啟狀態(tài)。
fping
fping命令類似于ping(ping是通過ICMP(網(wǎng)絡(luò)控制信息協(xié)議InternetControl Message Protocol)協(xié)議回復(fù)請求以檢測主機是否存在)。Fping與ping不同的地方在于,fping可以在命令行中指定要ping的主機數(shù)量范圍,也可以指定含有要ping的主機列表文件。與ping要等待某一主機連接超時或發(fā)回反饋信息不同,fping給一個主機發(fā)送完數(shù)據(jù)包后,馬上給下一個主機發(fā)送數(shù)據(jù)包,實現(xiàn)多主機同時ping。如果某一主機ping通,則此主機將被打上標(biāo)記,并從等待列表中移除,如果沒ping通,說明主機無法到達,主機仍然留在等待列表中,等待后續(xù)操作。
2. telnet
簡介
- Telnet協(xié)議是TCP/IP協(xié)議族中的一員,telnet是連接遠程計算機的連接協(xié)議。但由于其是明文傳輸,逐漸被ssh取代。但我們可以使用telnet 命令來測試遠程端口是否連通。
telnet IP port
3. traceroute
簡介
- 應(yīng)用的數(shù)據(jù)包在發(fā)送到服務(wù)器之前都要經(jīng)過層層的路由轉(zhuǎn)發(fā)。而Traceroute是一種常規(guī)的網(wǎng)絡(luò)分析工具,用來定位到目標(biāo)主機之間的所有路由器。
- 基于ICMP或UDP或TCP協(xié)議
示例
[root@192 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (36.152.44.95), 30 hops max, 60 byte packets
1 192.168.182.2 0.184 ms 0.143 ms 0.142 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
...
- 返回的記錄按序列號從1開始,每個紀錄就是一跳 ,每跳表示一個網(wǎng)關(guān),每行有三個時間,分別表示探測數(shù)據(jù)包向每個網(wǎng)關(guān)發(fā)送三個數(shù)據(jù)包后,網(wǎng)關(guān)響應(yīng)后返回的時間。
- 常用參數(shù):
-n: 使用IP,不使用域名,速度更快
- 基于TCP SYN:
# traceroute -T -p 80 -n www.jd.com
traceroute to www.jd.com (117.59.121.81), 30 hops max, 60 byte packets
1 192.168.182.2 0.260 ms 0.178 ms 0.299 ms
2 117.59.121.81 20.067 ms 20.017 ms 19.587 ms
原理
- traceroute的實現(xiàn)借助了TTL,通過向目的地址發(fā)送一系列的探測包,設(shè)置探測包的TTL初始值分別為1,2,3…,根據(jù)返回的超時通知(ICMP Time Exceeded Message)得到源地址與目的地址之間的每一跳路由信息。
- Linux和Mac OS等系統(tǒng)使用UDP包進行探測,目標(biāo)端口號默認為33434,每次探測目標(biāo)端口號加1。Traceroute故意使用了一個大于 30000 的目標(biāo)端口號,以保證目標(biāo)地址收到數(shù)據(jù)包后能夠返回一個“端口不可達”的 ICMP 報文,于是源地址就可將端口不可達報文當(dāng)作跟蹤結(jié)束的標(biāo)志。
- Traceroute每跳默認發(fā)送3個探測包(發(fā)包的數(shù)量可通過-q進行設(shè)置),探測包的返回會受到網(wǎng)絡(luò)情況的影響。如果防火墻封掉了ICMP的返回信息,那么相應(yīng)的延時位置會以*顯示。如果某臺網(wǎng)關(guān)阻塞或者某臺DNS出現(xiàn)問題,那么相應(yīng)行的延時會變長??梢约?n 參數(shù)來避免DNS解析,以IP格式輸出數(shù)據(jù)。
4. ifconfig
簡介
- Linux ifconfig命令用于顯示或設(shè)置網(wǎng)絡(luò)設(shè)備。
ifconfig可設(shè)置網(wǎng)絡(luò)設(shè)備的狀態(tài),或是顯示目前的設(shè)置。用ifconfig命令配置的網(wǎng)卡信息,在網(wǎng)卡重啟后機器重啟后,配置就不存在。要想將上述的配置信息永遠的存的電腦里,那就要修改網(wǎng)卡的配置文件了。 - ip addr命令也有相似功能。
示例
[root@192 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.182.130 netmask 255.255.255.0 broadcast 192.168.182.255
inet6 fe80::a15c:47dd:2868:7170 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8d:54:79 txqueuelen 1000 (Ethernet)
RX packets 9287 bytes 728375 (711.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2378 bytes 213886 (208.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 448 bytes 37968 (37.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 448 bytes 37968 (37.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33是內(nèi)置的PCI-E網(wǎng)卡
第一行:
UP:代表此網(wǎng)絡(luò)接口為啟用狀態(tài)(down為關(guān)閉狀態(tài)) ;
RUNNING:代表網(wǎng)卡設(shè)備已連接
MULTICAST:表示支持組播
MTU:為數(shù)據(jù)包最大傳輸單元
第二行:網(wǎng)卡的IP地址、子網(wǎng)掩碼、廣播地址
第三行:IP v6地址
第四行:ether:表示為網(wǎng)卡的MAC地址,Ethernet(以太網(wǎng))表示連接類型;
第五行:接受數(shù)據(jù)包個數(shù)、大小統(tǒng)計信息
第六行:異常接受包的個數(shù)、如丟包量、錯誤等
第七行:發(fā)送數(shù)據(jù)包個數(shù)、大小統(tǒng)計信息
第八行:發(fā)送包的個數(shù)、如丟包量、錯誤等
lo 是表示主機的回壞地址,IP地址固定為127.0.0.1,子網(wǎng)掩碼為8位,表示本機。
還可以通過ifconfig add 命令來為網(wǎng)卡配置IP地址,但重啟后會失效。可以通過/etc/sysconfig/network-scripts/ifcfg-[網(wǎng)卡名]來配置永久的信息
5. netstat
簡介
- 用于顯示網(wǎng)絡(luò)狀態(tài)。
- 命令格式:netstat [-acCeFghilMnNoprstuvVwx][-A<網(wǎng)絡(luò)類型>][--ip]
- 常用參數(shù)說明:
-a或--all 顯示所有連線中的Socket。。
-l或--listening 顯示監(jiān)控中的服務(wù)器的Socket。
-n或--numeric 直接使用IP地址,而不通過域名服務(wù)器。
-p或--programs 顯示正在使用Socket的程序識別碼和程序名稱。
-t或--tcp 顯示TCP傳輸協(xié)議的連線狀況。
-u或--udp 顯示UDP傳輸協(xié)議的連線狀況。
示例
[root@192 ~]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:889 0.0.0.0:*
udp 0 0 192.168.122.1:53 0.0.0.0:*
udp 0 0 0.0.0.0:67 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 0.0.0.0:50870 0.0.0.0:*
udp 0 0 0.0.0.0:5353 0.0.0.0:*
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 :::889 :::*
udp6 0 0 :::111 :::*
udp6 0 0 ::1:323 :::*
- 可以通過該命令判斷計算機開啟了哪些服務(wù)
- 只有tcp有l(wèi)isten狀態(tài),udp沒有
netstat -an
- ESTABLISH代表連接已經(jīng)建立,兩臺機器正在通信。
6. nsloopup
簡介
- nslookup用于查詢DNS的記錄,查詢域名解析是否正常,在網(wǎng)絡(luò)故障時用來診斷網(wǎng)絡(luò)問題
- nslookup有“交互模式”和“非交互模式”兩種工作模式
示例
[root@192 ~]# nslookup www.baidu.com
Server: 192.168.182.2
Address: 192.168.182.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 36.152.44.95
Name: www.a.shifen.com
Address: 36.152.44.96
Non-authoritative answer: 代表結(jié)果是從Server的緩存中得到的。
若個DNS server沒有某域名的記錄信息,當(dāng)有客戶端通過它請求獲取該域名信息,此DNS Server會通過多個層級迭代遞歸的方式最終從實際存儲此記錄信息的DNS server中獲取域名信息,反饋給發(fā)出請求的客戶端,同時會把域名的記錄信息放在自身緩存中放置一段時間,當(dāng)又有客戶端請求test.com域名解析時,此DNS server直接從自身緩存中提取返回給客戶端,這個回答叫“非權(quán)威回答”
通過
nslookup -debug www.baidu.com
可以查看域名的緩存時間
Name:指的是域名實際對應(yīng)的主機名記錄。
7. route
route命令是用于操作基于內(nèi)核ip路由表,它的主要作用是創(chuàng)建一個靜態(tài)路由讓指定一個主機或者一個網(wǎng)絡(luò)通過一個網(wǎng)絡(luò)接口,如eth0。當(dāng)使用"add"或者"del"參數(shù)時,路由表被修改,如果沒有參數(shù),則顯示路由表當(dāng)前的內(nèi)容。
直接在命令行下執(zhí)行route命令來添加路由,不會永久保存,當(dāng)網(wǎng)卡重啟或者機器重啟之后,該路由就失效了;可以在/etc/rc.local中添加route命令來設(shè)置路由永久有效。
查看路由信息:
[root@192 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.182.2 0.0.0.0 UG 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.182.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
第一行表示去任何地方(0.0.0.0),都由接口ens33發(fā)給192.168.182.2,因為是默認網(wǎng)關(guān)。
第三行表示主機所在網(wǎng)絡(luò)的地址為192.168.182.0,若數(shù)據(jù)傳送目標(biāo)是在本局域網(wǎng)內(nèi)通信,則可直接通過ens33轉(zhuǎn)發(fā)數(shù)據(jù)包;
其中Flags為路由標(biāo)志,U表示此路由當(dāng)前為啟動狀態(tài);UG表示此路由為默認網(wǎng)關(guān)。
- 增加路由條目: route add [-host|-net] IP -netmask 子網(wǎng)掩碼 gw 網(wǎng)關(guān)地址
添加一條路由,要訪問192.56.76.0這個網(wǎng)絡(luò)需要走ens33網(wǎng)卡
[root@192 ~]# route add -net 192.56.76.0 netmask 255.255.255.0 dev ens33
[root@192 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.182.2 0.0.0.0 UG 100 0 0 ens33
192.56.76.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.182.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
- 刪除路由條目
route del -net 192.56.76.0 netmask 255.255.255.0 dev ens33
- 添加一個默認網(wǎng)關(guān): (只有連外網(wǎng)的網(wǎng)卡可以設(shè)置網(wǎng)關(guān))
route add default gw 192.168.182.2
- 刪除默認網(wǎng)關(guān):
route del default gw 192.168.182.2
8.arp
- 用于操作主機的arp緩沖區(qū),它可以顯示arp緩沖區(qū)中的所有條目、刪除指定的條目或者添加靜態(tài)的IP地址與MAC地址對應(yīng)關(guān)系。
- 查詢arp緩沖區(qū)中指定主機的arp條目:
[root@192 ~]# arp -v
Address HWtype HWaddress Flags Mask Iface
192.168.182.2 ether 00:50:56:f4:ed:49 C ens33
192.168.182.254 ether 00:50:56:e9:cb:6c C ens33
Entries: 2 Skipped: 0 Found: 2
- 將目標(biāo)ip地址映射固定mac:arp -s IP地址 mac地址
- 刪除映射:arp -d IP地址
9. hostname
- 顯示主機名
[root@192 ~]# hostname
192.168.182.131
- 更改主機名(重啟后失效)
[root@192 ~]# hostname localhost
[root@192 ~]# hostname
localhost
- 永久更改主機名(重啟后生效): etc/sysconfig/network
10. nmap
- nmap是一個網(wǎng)絡(luò)連接端掃描軟件,用來掃描網(wǎng)上電腦開放的網(wǎng)絡(luò)連接端。確定哪些服務(wù)運行在哪些連接端,并且推斷計算機運行哪個操作系統(tǒng)
# nmap www.baidu.com
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-31 18:10 CST
Nmap scan report for www.baidu.com (36.152.44.95)
Host is up (0.0023s latency).
Other addresses for www.baidu.com (not scanned): 36.152.44.96
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 51.19 seconds
- 常用參數(shù)
-sT TCP connect()掃描,這種方式會在目標(biāo)主機的日志中記錄大批的鏈接請求以及錯誤信息。
-sP ping掃描,加上這個參數(shù)會使用ping掃描,只有主機存活,nmap才會繼續(xù)掃描,一般最好不加,因為有的主機會禁止ping,卻實際存在。
-sS 半開掃描,一般不會記入日志,不過需要root權(quán)限。
-sU udp掃描,但是一般不可靠,
-sA 用來穿過防火墻的規(guī)則集,速度慢。
-sV 端口服務(wù)及版本
-A 包含了-sV,-O,全面系統(tǒng)檢測,啟動腳本檢測,掃描等。
-P0 掃描之前不使用ping,適用于防火墻禁止ping,比較有用。
-v 顯示掃描進程
-O 探測目標(biāo)系統(tǒng)的漏洞,容易誤報
-oN/-oX/-oG 將報告寫入文件,格式分別為正常(自定義.txt),XML,grepable.
-iL 掃描主機列表
-sC –script=default 默認的腳本掃描,主要是搜集各種應(yīng)用服務(wù)的信息
-p 掃描指定端口或端口段
11. iptable
- iptables是linux下的應(yīng)用層防火墻命令工具集。
- iptables基于
Netfilter。 Netfilter是Linux操作系統(tǒng)核心層內(nèi)部的一個數(shù)據(jù)包處理工具。
Netfilter對于網(wǎng)絡(luò)層IP包有5條
鏈 (hook point),分別是:PRE_ROUTING,INPUT,OUTPUT,FORWARD和POST_ROUTING。Netfilter包含了4張
表(table):起過濾作用的filter表、起地址轉(zhuǎn)發(fā)作用的nat表,用于修改報文的mangle表,用于數(shù)據(jù)跟蹤的raw表。其中filter表和nat表最常用。-
網(wǎng)絡(luò)層IP包通過每一個
hook point都有機會通過各種表對IP包進行操作。
當(dāng)一個數(shù)據(jù)包到達一個鏈時,iptables就會從鏈中第一條規(guī)則開始檢查,看該數(shù)據(jù)包是否滿足規(guī)則所定義的條件,如果滿足規(guī)則,系統(tǒng)就會根據(jù)該條規(guī)則所定義的方法處理該數(shù)據(jù)包,如果不滿足規(guī)則,繼續(xù)檢查下一條規(guī)則,如果該數(shù)據(jù)包不符合鏈中任一條規(guī)則,iptables就會根據(jù)該鏈預(yù)先定義的默認策略來處理數(shù)據(jù)包;
iptables -t 表名 <-A/I/D/R> 規(guī)則鏈名 [規(guī)則號] <-i/o 網(wǎng)卡名> -p 協(xié)議名 <-s 源IP/源子網(wǎng)> --sport 源端口 <-d 目標(biāo)IP/目標(biāo)子網(wǎng)> --dport 目標(biāo)端口 -j 動作

