一起來學linux:網絡命令


首先介紹最基本也是經常用到的命令ifconfig,對應windows中的ipconfig。執行ifconfig會將所有的端口信息都顯示出來,包括IP地址,MTU 接收和發送的報文還有HWaddr也就是MAC地址
root@zhf-linux:/home/zhf# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:23:5a:b6:de:9f  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:820 errors:0 dropped:0 overruns:0 frame:0
          TX packets:820 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:66752 (66.7 KB)  TX bytes:66752 (66.7 KB)

wlan0     Link encap:Ethernet  HWaddr 00:26:82:07:ef:3c  
          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::226:82ff:fe07:ef3c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10115 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5520 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6316755 (6.3 MB)  TX bytes:686532 (686.5 KB)
如果只是想列出某個端口的網絡地址可以使用ifconfig wlan0的方法
root@zhf-linux:/home/zhf# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:26:82:07:ef:3c  
          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::226:82ff:fe07:ef3c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10902 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6101 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6499772 (6.4 MB)  TX bytes:773060 (773.0 KB)

我們還可以通過ifconfig來修改這些網絡的相關信息。
修改MTU信息:
root@zhf-linux:/home/zhf# ifconfig wlan0 mtu 1400

wlan0     Link encap:Ethernet  HWaddr 00:26:82:07:ef:3c  
          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::226:82ff:fe07:ef3c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1400  Metric:1
          RX packets:11902 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6912 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7099710 (7.0 MB)  TX bytes:864672 (864.6 KB)

修改端口的IP地址
root@zhf-linux:/home/zhf# ifconfig eth0 192.168.0.15

如果時候ifconfig錯誤的修改了網絡佩之,可以通過/etc/init.d/networking restart的方式來重新啟動某個網口,之前手動的設置數據會全部失效。

如果我使用的是無線網卡,查看具體的無線網絡信息通過iwconfig命令
root@zhf-linux:/home/zhf# iwconfig
wlan0     IEEE 802.11bg  ESSID:"zhf_dxx"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: A4:56:02:4D:65:1F   
          Bit Rate=18 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=70/70  Signal level=-3 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:330  Invalid misc:735   Missed beacon:0



路由信息:
上網除了配置IP地址等信息外,路由也是一個關鍵的因素。路由顧名思義就是如何轉發數據包的依據。
route命令可以查看當前服務器的信息。
Destinaton和Genmask分別是網絡地址與網絡掩碼。第一條路由信息中Destination是default, Genmask是0.0.0.0. 可以認為是全網路由,也就是可以達到任務的網絡地址。
Gateway就是網關,從當前服務器出去的數據都是通過網關地址設備來進行轉發。這里網關地址為192.168.0.1也就是無線路由器的地址。
Flags: 路由的標識。  U表示路由是啟動的。H目標是一台主機而非網絡 。G:需要通過外部的主機來傳遞數據包。R:動態路由。 D:動態路由。M:路由被修改了
Iface:路由傳遞數據報的接口

root@zhf-linux:/home/zhf# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0

我們還可以手動添加和刪除路由:
添加的時候需要設置-net 目標網絡地址,netmask 網絡掩碼  gw:網關
root@zhf-linux:/home/zhf# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
root@zhf-linux:/home/zhf# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
root@zhf-linux:/home/zhf# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0
192.168.1.0     192.168.0.1     255.255.255.0   UG    0      0        0 wlan0
刪除的時候可以不帶網關地址。
root@zhf-linux:/home/zhf# route del -net 192.168.1.0 netmask 255.255.255.0
root@zhf-linux:/home/zhf# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0


下面介紹一個綜合前面route 和ifconfig的命令:ip. 主要有幾個參數;
-s:顯示出設備的統計數據,如接收數據包的總數等
link: 與設備相關的設置,包括MTU,Mac地址等
addr/address:關於額外的IP協議
route: 與路由有關的相關設置
比如ip link show顯示所有端口的硬件信息
root@zhf-linux:/home/zhf# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:23:5a:b6:de:9f brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 00:26:82:07:ef:3c brd ff:ff:ff:ff:ff:ff

還可以通過ip link set eth0 up/ip link set eth0 down來啟動和關閉端口

還可以修改端口的名稱,但首先要關閉這個端口。否則無法修改
root@zhf-linux:/home/zhf# ip link set eth0 name zhf
RTNETLINK answers: Device or resource busy
root@zhf-linux:/home/zhf# ip link set eth0 down
root@zhf-linux:/home/zhf# ip link set eth0 name zhf

root@zhf-linux:/home/zhf# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: zhf: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:23:5a:b6:de:9f brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 00:26:82:07:ef:3c brd ff:ff:ff:ff:ff:ff

ip route添加路由
root@zhf-linux:/home/zhf# ip route add 192.168.5.0/24 dev eth0
root@zhf-linux:/home/zhf# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0
192.168.5.0     *               255.255.255.0   U     0      0        0 eth0


接着介紹幾個網絡定位的命令。 首先來看用到最多的命令ping
ping的參數如下;
-c 后面接ping的次數
-s ping報文的大小
-t TTL的數值
-W:等待響應對方主機的秒數
-M:主要檢測網絡的MTU數值大小
比如ping 5次新浪網。從第一行可以看到ping包的字節默認為56個字節,加上28個字節的頭信息
root@zhf-linux:/home/zhf# ping -c 5 www.sina.com.cn
PING www.sina.com.cn (218.30.66.248) 56(84) bytes of data.
64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=1 ttl=54 time=19.8 ms
64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=2 ttl=54 time=19.2 ms
64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=3 ttl=54 time=22.0 ms
64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=4 ttl=54 time=33.3 ms
64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=5 ttl=54 time=21.8 ms

--- www.sina.com.cn ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 19.202/23.265/33.306/5.144 ms

改變ping包字節大小為120字節。加上頭信息為148字節
root@zhf-linux:/home/zhf# ping -c 5 -s 120 www.sina.com.cn
PING www.sina.com.cn (218.30.66.248) 120(148) bytes of data.
128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=1 ttl=54 time=19.5 ms
128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=2 ttl=54 time=22.7 ms
128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=3 ttl=54 time=18.8 ms
128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=4 ttl=54 time=45.0 ms
128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=5 ttl=54 time=18.0 ms
--- www.sina.com.cn ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 18.062/24.846/45.060/10.230 ms

我們可以根據ping 命令來寫一個探測網絡內存在的主機:
for siteip in $(seq 1 254)
    do
       site="192.168.1.${siteip}"
       ping -c 2 ${site} &>/dev/null
       if [ "$?" == 0 ];then
           echo "$site is up"
       else
           echo "$site is down"
       fi
    done

root@zhf-linux:/home/zhf/zhf/shell_prj# sh ping_test.sh
192.168.1.1 is up
192.168.1.2 is up
192.168.1.3 is down
192.168.1.4 is down
192.168.1.5 is down
192.168.1.6 is down
192.168.1.7 is down

ping命令雖然能檢測鏈路是否通,但是網絡傳輸中會經過很多個網絡節點。如果不通的話數據包是在哪個網絡節點遇到故障了呢,這個時候就需要用到traceroute命令。
主要參數如下;
-n: 不必進行主機的名稱解析,單純用IP
-U:使用UDP的port 33434進行檢測。這是Linux默認的協議。windows是采用ICMP
-I:使用ICMP的方式進行檢測
-T:使用TCP進行檢測
-w: 設置等待對方響應的時間
-p:端口號
可以看到traceroute會顯示經過的每個節點的IP以及所消耗的時延。這樣就十分便於我們定位問題到底出在哪
root@zhf-linux:/home/zhf/zhf/shell_prj# traceroute -n www.sina.com.cn
traceroute to www.sina.com.cn (218.30.66.248), 30 hops max, 60 byte packets
 1  192.168.1.1  4.485 ms  4.505 ms  4.578 ms
 2  100.64.0.1  8.041 ms  8.262 ms  10.867 ms
 3  100.64.0.1  11.015 ms  11.144 ms  11.284 ms
 4  220.167.87.17  19.405 ms  19.595 ms  19.651 ms
 5  171.208.203.69  22.509 ms 171.208.203.57  22.172 ms  22.257 ms
 6  202.97.48.125  35.747 ms 202.97.48.117  36.414 ms 202.97.48.125  30.744 ms
 7  218.30.19.94  37.071 ms 218.30.69.2  25.474 ms 218.30.19.94  38.695 ms^C
root@zhf-linux:/home/zhf/zhf/shell_prj# traceroute www.sina.com.cn
traceroute to www.sina.com.cn (218.30.66.248), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  7.411 ms  7.513 ms  7.563 ms
 2  100.64.0.1 (100.64.0.1)  8.165 ms  8.451 ms  8.686 ms
 3  100.64.0.1 (100.64.0.1)  9.012 ms  9.000 ms  9.268 ms
 4  220.167.87.17 (220.167.87.17)  48.949 ms  49.123 ms  49.170 ms
 5  171.208.203.69 (171.208.203.69)  10.046 ms 171.208.203.57 (171.208.203.57)  9.840 ms 171.208.198.25 (171.208.198.25)  13.523 ms
 6  202.97.48.125 (202.97.48.125)  34.782 ms  26.170 ms 202.97.48.117 (202.97.48.117)  31.479 ms
 7  218.30.69.2 (218.30.69.2)  22.882 ms 218.30.19.94 (218.30.19.94)  31.512 ms 218.30.69.2 (218.30.69.2)  23.094 ms

即使有了traceroute命令,我們也只是知道問題是出在哪。但是問題的根因是什么我們還是不知道。很多時候需要抓包進行問題分析。這時候就要用到tcpdump命令。tcpdump不但可以分析數據包的流向,而且連數據包的內容也可以進行監聽
關鍵參數如下:
-A: 數據包的內容以ASCII顯示
-e:使用數據鏈路層MAC數據包數據來顯示
-nn:直接以IP及port number顯示
-q:僅列出簡短的數據信息
-X:列出十六進制以及ASCII的數據包內容
-i: 要監聽的網絡接口 例如eth0,lo,wlan等
-w: 如果你要將監聽所得的數據包數據存儲下來,后面接文件名
-r:從后面的文件將數據包數據讀出來

抓取wlan0端口的數據並存儲到test1.txt文件中。
tcpdump -i wlan0 -nn -X > test1.txt
21:48:06.869312 IP 180.149.136.194.80 > 192.168.0.11.50592: Flags [S.], seq 3280367214, ack 1401941542, win 14600, options [mss 1440,nop,nop,sackOK,nop,wscale 7], length 0
    0x0000:  4500 0034 475e 0000 3706 3e5b b495 88c2  E..4G^..7.>[....
    0x0010:  c0a8 000b 0050 c5a0 c386 6e6e 538f ee26  .....P....nnS..&
    0x0020:  8012 3908 fe65 0000 0204 05a0 0101 0402  ..9..e..........
    0x0030:  0103 0307                                ....
21:48:06.869360 IP 192.168.0.11.50592 > 180.149.136.194.80: Flags [.], ack 1, win 229, length 0
    0x0000:  4500 0028 ae0b 4000 4006 8eb9 c0a8 000b  E..(..@.@.......
    0x0010:  b495 88c2 c5a0 0050 538f ee26 c386 6e6f  .......PS..&..no
    0x0020:  5010 00e5 7747 0000                      P...wG..
21:48:06.870044 IP 192.168.0.11.50592 > 180.149.136.194.80: Flags [.], seq 1:1441, ack 1, win 229, length 1440: HTTP: GET /mfp/view?type=3&t=MjAxNy0xMC0xOCAyMTo0ODowNAkxMTguMTEzLjQzLjIzNgkyMjIuMjEwLjE2NC4yMTBfMTQ0ODQ2MDA0Ni4yNDE1ODMJaHR0cDovL3d3dy5zaW5hLmNvbS5jbi8JUERQUzAwMDAwMDAwNTQ5NAk2NTdkZDFiOC0xYjVhLTQ2N2YtOTNiOC02MWM0MzcxODIwYzQJREI0QTk5OEZDOEE4CURCNEE5OThGQzhBOAlhdXRvX2xldmVsOjE4MDEwMHx1c2VyX2dyb3VwOjkwOSw5MTN8dXNlcl90YWc6MjA5NTZ8cG9zOlBEUFMwMDAwMDAwMDU0OTR8d2FwX29zOjcwMHx1c2VyX2FnZTo2MDIsNjAxLDYwM3x2X3pvbmU6MzI2MDAwLDMyNjAwMXx1c2VyX2dlbmRlcjo1MDF8X3Zfem9uZTozMjYwMDAsMzI2MDAxfGF1dG9fcHJpY2U6MTgwMjAwfG1vYmlsZV9icmFuZDoxMjA5fG1vYmlsZV9icm93c2VyOjgwN3x2ZXJzaW9uOmdsX2JwMV8xLHBjOjEuMAkJMzI2MDAwfDMyNjAwMQlEQjRBOTk4RkM4QTgJTkIxNzA0MDI0MQkJREI0QTk5OEZDOEE4CUFFCS0JMQktCS0JLQktCS0JLQktCS0JLQkxCS0JMAkwCWNoYW5uZWwyOmJsb2dfc3xvczp1YnVudHV8YnJvd3NlcjpmaXJlZm94fHBsYXRmb3JtOm90aGVyfGRldmljZTpvdGhlcnxhZFBsYXRGb3JtOjA%3D&userid=222.210.164.210_1448460046.241583&viewlog=false&hashCode=3400c1d3fbc463e290cf234cd786ceed&_sinaads_sio_log_ivciiq HTTP/1.1

由於數據較多,可以將數據內容都存在文件中,后面來查看。cap文件可以用wireshark軟件打開。
root@zhf-linux:/home/zhf/zhf# tcpdump -i wlan0 -w tcpdump_test.cap

想監聽某一個端口,比如監控網頁的數據。可以指定端口
root@zhf-linux:/home/zhf/zhf# tcpdump -i wlan0 -nn port 8080


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM