Linux常用命令詳解(六)_網絡

ifconfig命令

ifconfig命令被用於配置和顯示Linux內核中網絡接口的網絡參數。用ifconfig命令配置的網卡信息,在網卡重啓後機器重啓後,配置就不存在。要想將上述的配置信息永遠的存的電腦裏,那就要修改網卡的配置文件了。

格式:

ifconfig [net_equipment] [para]

參數:

add<地址>:設置網絡設備IPv6的ip地址

del<地址>:刪除網絡設備IPv6的IP地址

down:關閉指定的網絡設備

<硬件地址>:設置網絡設備的類型與硬件地址

io_addr:設置網絡設備的I/O地址

irq:設置網絡設備的IRQ

media<網絡媒介類型>:設置網絡設備的媒介類型

mem_start<內存地址>:設置網絡設備在主內存所佔用的起始地址

metric<數目>:指定在計算數據包的轉送次數時,所要加上的數目

mtu<字節>:設置網絡設備的MTU

netmask<子網掩碼>:設置網絡設備的子網掩碼

tunnel<地址>:建立IPv4與IPv6之間的隧道通信地址

up:啓動指定的網絡設備

-broadcast<地址>:將要送往指定地址的數據包當成廣播數據包來處理

-pointopoint<地址>:與指定地址的網絡設備建立直接連線,此模式具有保密功能

-promisc:關閉或啓動指定網絡設備的promiscuous模式

IP地址:指定網絡設備的IP地址

網絡設備:指定網絡設備的名稱。

實例應用:

1.顯示網絡設備信息

[shmilychan@localhost ~]$ ifconfig
eth0    Link encap:Ethernet HWaddr 00:0c:29:d2:c3:f5 
        inet addr:192.168.72.128 Bcast:192.168.72.255 Mask:255.255.255.0 
        UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
        RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0 
        TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 
        RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB) 
lo      Link encap:Local Loopback 
        inet addr:127.0.0.1 Mask:255.0.0.0 
        UP LOOPBACK RUNNING MTU:16436 Metric:1 
        RX packets:56103 errors:0 dropped:0 overruns:0 frame:0 
        TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 
        RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB)

備註:

eth0表示第一塊網卡,其中HWaddr表示網卡的物理地址,可以看到目前這個網卡的物理地址(MAC地址)是00:0c:29:d2:c3:f5。

inet addr用來表示網卡的IP地址,此網卡的IP地址是192.168.72.128,廣播地址Bcast:192.168.72.255,掩碼地址Mask:255.255.255.0。

lo是表示主機的回壞地址,這個一般是用來測試一個網絡程序,但又不想讓局域網或外網的用戶能夠查看,只能在此臺主機上運行和查看所用的網絡接口。比如把httpd服務器的指定到回壞地址,在瀏覽器輸入127.0.0.1就能看到你所架WEB網站了。但只是您能看得到,局域網的其它主機或用戶無從知道。

第一行:連接類型:Ethernet(以太網)HWaddr(硬件mac地址)。

第二行:網卡的IP地址、子網、掩碼。

第三行:UP(代表網卡開啓狀態)RUNNING(代表網卡的網線被接上)MULTICAST(支持組播)MTU:1500(最大傳輸單元):1500字節。

第四、五行:接收、發送數據包情況統計。

第七行:接收、發送數據字節數統計信息。

2.啓動關閉指定網卡

$ ifconfig eth0 up

$ ifconfig etho down

3.爲網卡配置和刪除IPV6地址

$ ifconfig eth0 add 33ffe:3240:800:1005::2/64

$ ifconfig eth0 del 33ffe:3240:800:1005::2/64

4.用ifconfig修改MAC地址

$ ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

5.配置IP地址

$ ifconfig eth0 ip_adress

備註:

ifconfig eth0 192.168.72.128 netmask 255.255.255.0 

給eth0網卡配置IP地址:192.168.72.128 ,並加上子掩碼:255.255.255.0

ifconfig eth0 192.168.72.128 netmask 255.255.255.0 broadcast 192.168.72.255

/給eth0網卡配置IP地址:192.168.72.128,加上子掩碼:255.255.255.0,加上個廣播地址: 192.168.72.255

6.啓動和關閉ARP協議

ifconfig eth0 arp       //啓動
ifconfig eth0 -arp

7.設置最大傳輸單元

ifconfig eth0 mtu 1500

ping命令

ping命令用來測試主機之間網絡的連通性。執行ping指令會使用ICMP傳輸協議,發出要求迴應的信息,若遠端主機的網絡功能沒有問題,就會迴應該信息,因而得知該主機運作正常。

ping 命令每秒發送一個數據報並且爲每個接收到的響應打印一行輸出。ping 命令計算信號往返時間和(信息)包丟失情況的統計信息,並且在完成之後顯示一個簡要總結。ping 命令在程序超時或當接收到 SIGINT 信號時結束。Host 參數或者是一個有效的主機名或者是因特網地址。

格式:

ping [option] [para]

選項:

-d 使用Socket的SO_DEBUG功能。

-f  極限檢測。大量且快速地送網絡封包給一臺機器,看它的迴應。

-n 只輸出數值。

-q 不顯示任何傳送封包的信息,只顯示最後的結果。

-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。通常是查看本機的網絡接口是否有問題。

-R 記錄路由過程。

-v 詳細顯示指令的執行過程。

<p>-c 數目:在發送指定數目的包後停止。

-i 秒數:設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。

-I 網絡界面:使用指定的網絡界面送出數據包。

-l 前置載入:設置在送出要求信息之前,先行發出的數據包。

-p 範本樣式:設置填滿數據包的範本樣式。

-s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。

-t 存活數值:設置存活數值TTL的大小。

參數:

目的主機:指定發送ICMP報文的目的主機

應用實例:

$ ping www.baidu.com    //ping主機地址

$ ping -c [num] www.baidu.com      //指定ping的次數,num次數可以自定義

$ ping -c [num] -i [time] ip_adress        //時間間隔和次數限制的ping

$ ping -i [time] -s 1024 -t 255 ip_adress      //多參數

telnet命令

telnet命令用於登錄遠程主機,對遠程主機進行管理。telnet因爲採用明文傳送報文,安全性不好,很多Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。但仍然有很多別的系統可能採用了telnet方式來提供遠程登錄,因此弄清楚telnet客戶端的使用方式仍是很有必要的。

格式:

telnet [option] [para]

選項:

-8 允許使用8位字符資料,包括輸入與輸出。

-a 嘗試自動登入遠端系統。

-b<主機別名> 使用別名指定遠端主機名稱。

-c 不讀取用戶專屬目錄裏的.telnetrc文件。

-d 啓動排錯模式。

-e<脫離字符> 設置脫離字符。

-E 濾除脫離字符。

-f 此參數的效果和指定"-F"參數相同。

-F 使用Kerberos V5認證時,加上此參數可把本地主機的認證數據上傳到遠端主機。

-k<域名> 使用Kerberos認證時,加上此參數讓遠端主機採用指定的領域名,而非該主機的域名。

-K 不自動登入遠端主機。

-l<用戶名稱> 指定要登入遠端主機的用戶名稱。

-L 允許輸出8位字符資料。

-n<記錄文件> 指定文件記錄相關信息。

-r 使用類似rlogin指令的用戶界面。

-S<服務類型> 設置telnet連線所需的IP TOS信息。

-x 假設主機有支持數據加密的功能,就使用它。

-X<認證形態> 關閉指定的認證形態。

參數:

  • 遠程主機:指定要登錄進行管理的遠程主機
  • 端口:指定Telnet協議使用的端口號

應用實例:

$ telnet 168.10.10.1 11211

netstat命令

netstat用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各端口的網絡連接情況。

格式:

netstat [option]

選項:

-a或–all 顯示所有連線中的Socket。

-A<網絡類型>或–<網絡類型> 列出該網絡類型連線中的相關地址。

-c或–continuous 持續列出網絡狀態。

-C或–cache 顯示路由器配置的快取信息。

-e或–extend 顯示網絡其他相關信息。

-F或–fib 顯示FIB。

-g或–groups 顯示多重廣播功能羣組組員名單。

-h或–help 在線幫助。

-i或–interfaces 顯示網絡界面信息表單。

-l或–listening 顯示監控中的服務器的Socket。

-M或–masquerade 顯示僞裝的網絡連線。

-n或–numeric 直接使用IP地址,而不通過域名服務器。

-N或–netlink或–symbolic 顯示網絡硬件外圍設備的符號連接名稱。

-o或–timers 顯示計時器。

-p或–programs 顯示正在使用Socket的程序識別碼和程序名稱。

-r或–route 顯示Routing Table。

-s或–statistice 顯示網絡工作信息統計表。

-t或–tcp 顯示TCP傳輸協議的連線狀況。

-u或–udp 顯示UDP傳輸協議的連線狀況。

-v或–verbose 顯示指令執行過程。

-V或–version 顯示版本信息。

-w或–raw 顯示RAW傳輸協議的連線狀況。

-x或–unix 此參數的效果和指定”-A unix”參數相同。

–ip或–inet 此參數的效果和指定”-A inet”參數相同。

應用實例:

1.無參使用

$ netstat

2.列出所有端口(包含監聽和未監聽)

$ netstat -a       //列出所有端口

$ netstat -at  //列出所有TCP端口

$ netstat -au  //列出所有UDP端口

3.列出所有處於監聽的sockets

$ netstat -l       //只顯示監聽端口

$ netstat -lt  //只列出所有監聽 TCP 端口

$ netstat -lu  //只列出所有監聽 UDP 端口

$ netstat -lx  //只列出所有監聽 UNIX 端口

4.顯示每個協議的統計信息

$ netstat -s   //顯示所有端口的統計信息
$ netstat -st  //顯示 TCP 端口統計信息
$ netstat -su  //顯示UDP端口的統計信息

5.在netstat輸出中顯示PID和進程名稱

$ netstat -pt

備註:
netstat -p 可以與其他選項一起使用,就可以添加“PID/進程名稱”到netstat輸出中,這樣debugging的時候可以很方便的發現特定端口運行的程序。

6.在netstat輸出中不顯示主機,端口和用戶名(host, port or user)

當你不想讓主機,端口和用戶名顯示,使用netstat -n。將會使用數字代替那些名稱。同樣可以加速輸出,因爲不用進行比對查詢。

$ netstat -an

如果只是不想讓這三個名稱中的一個被顯示,使用以下命令:

$ netsat -a --numeric-ports 
$ netsat -a --numeric-hosts 
$ netsat -a --numeric-users 

7.持續輸出netstat信息

$ netstat -c       //每隔一秒輸出網絡信息 

8.顯示系統不支持的地址族(Address Families)

$ netstat --verbose 

在輸出的末尾,會有如下的信息:

netstat: no support for `AF IPX' on this system. 

netstat: no support for `AF AX25' on this system. 

netstat: no support for `AF X25' on this system. 

netstat: no support for `AF NETROM' on this system. 

9.顯示核心路由信息

$ netstat -r 

使用netstat -rn顯示數字格式,不查詢主機名稱。

10.找出程序運行的端口

並不是所有的進程都能找到,沒有權限的會不顯示,使用 root 權限查看所有的信息。

$ netstat -ap | grep ssh 

找出運行在指定端口的進程:

$ netstat -an | grep ':80' 

11.顯示網絡接口列表

$ netstat -i 

顯示詳細信息,像是ifconfig使用netstat -ie。

12.IP和TCP分析

查看連接某服務端口最多的的IP地址:

$ netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr 

TCP各種狀態列表:

$ netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}' 

查看phpcgi進程數,如果接近預設值,說明不夠用,需要增加:

$ netstat -anpo | grep "php-cgi" | wc -l

route命令

Route命令是用於操作基於內核ip路由表,它的主要作用是創建一個靜態路由讓指定一個主機或者一個網絡通過一個網絡接口,如eth0。當使用”add”或者”del”參數時,路由表被修改,如果沒有參數,則顯示路由表當前的內容。

格式:

route [option] [para]

選項:

-A:設置地址類型

-C:打印將Linux核心的路由緩存

-v:詳細信息模式

-n:不執行DNS反向查找,直接顯示數字形式的IP地址

-e:netstat格式顯示路由表

-net:到一個網絡的路由表

-host:到一個主機的路由表。

參數:

Add:增加指定的路由記錄

Del:刪除指定的路由記錄

Target:目的網絡或目的主機

gw:設置默認網關

mss:設置TCP的最大區塊長度(MSS),單位MB

window:指定通過路由表的TCP連接的TCP窗口大小

dev:路由記錄所表示的網絡接口

應用實例:

1.顯示當前路由

shmilychan@ubuntu:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.72.2    0.0.0.0         UG    100    0        0 ens33
link-local      *               255.255.0.0     U     1000   0        0 ens33
192.168.72.0    *               255.255.255.0   U     100    0        0 ens33


shmilychan@ubuntu:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.72.2    0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
192.168.72.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

備註:
Flags標誌位說明:

U Up表示此路由當前爲啓動狀態

H Host,表示此網關爲一主機

G Gateway,表示此網關爲一路由器

R Reinstate Route,使用動態路由重新初始化的路由

D Dynamically,此路由是動態性地寫入

M Modified,此路由是由路由守護程序或導向器動態修改

! 表示此路由當前爲關閉狀態

2.添加網關/設置網關

$ route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0  //增加一條到240.0.0.0的路由

3.屏蔽一條路由

$ route add -net 224.0.0.0 netmask 240.0.0.0 reject        //增加一條屏蔽的路由,目的地址爲224.x.x.x將被拒絕

4.刪除路由記錄

$ route del -net 224.0.0.0 netmask 240.0.0.0
$ route del -net 224.0.0.0 netmask 240.0.0.0 reject

5.刪除和添加默認網關

$ route del default gw 192.168.72.128
$ route add default gw 192.168.72.168

ss命令

ss命令用來顯示處於活動狀態的套接字信息。ss命令可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。但ss的優勢在於它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。

當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。可能你不會有切身的感受,但請相信我,當服務器維持的連接達到上萬個的時候,使用netstat等於浪費 生命,而用ss纔是節省時間。

ss快的祕訣在於,它利用到了TCP協議棧中tcp_diag。tcp_diag是一個用於分析統計的模塊,可以獲得Linux 內核中第一手的信息,這就確保了ss的快捷高效。當然,如果你的系統中沒有tcp_diag,ss也可以正常運行,只是效率會變得稍慢。

格式:

ss [option]

選項:

-h, --help  幫助信息

-V, --version   程序版本信息

-n, --numeric   不解析服務名稱

-r, --resolve        解析主機名

-a, --all   顯示所有套接字(sockets)

-l, --listening 顯示監聽狀態的套接字(sockets)

-o, --options        顯示計時器信息

-e, --extended       顯示詳細的套接字(sockets)信息

-m, --memory         顯示套接字(socket)的內存使用情況

-p, --processes 顯示使用套接字(socket)的進程

-i, --info  顯示 TCP內部信息

-s, --summary   顯示套接字(socket)使用概況

-4, --ipv4           僅顯示IPv4的套接字(sockets)

-6, --ipv6           僅顯示IPv6的套接字(sockets)

-0, --packet            顯示 PACKET 套接字(socket)

-t, --tcp   僅顯示 TCP套接字(sockets)

-u, --udp   僅顯示 UCP套接字(sockets)

-d, --dccp  僅顯示 DCCP套接字(sockets)

-w, --raw   僅顯示 RAW套接字(sockets)

-x, --unix  僅顯示 Unix套接字(sockets)

-f, --family=FAMILY  顯示 FAMILY類型的套接字(sockets),FAMILY可選,支持  unix, inet, inet6, link, netlink

-A, --query=QUERY, --socket=QUERY

      QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D, --diag=FILE     將原始TCP套接字(sockets)信息轉儲到文件

-F, --filter=FILE   從文件中都去過濾器信息
        FILTER := [ state TCP-STATE ] [ EXPRESSION ]

應用實例:

1.顯示TCP連接

$ ss -t -a

2.顯示sockets摘要

$ ss -s

3.列出所有打開的網絡連接端口

$ ss -l

4.查看進程使用socket

$ ss -pl

5.找出打開套接字/端口應用程序

$ ss -pl | grep 3306

6.顯示所有 UDP sockets

$ ss -u -a

7.ss 和 netstat 效率對比

$ time netstat -at
$ time ss
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章