1. 程式人生 > >Linux相關網絡命令

Linux相關網絡命令

實現 交互式 sport alt 快捷 表示 help 網絡設備 pin

1、簡述osi七層模型和TCP/IP四層模型

OSI七層模型

技術分享圖片

TCP/IP四層模型

技術分享圖片

2、簡述iproute家族命令

ip命令:

  ip [OPTIONS] OBJECT {COMMAND|help}

  ip link:network device configuration.

    ip link set DEV:修改設備屬性

      1) up或down:啟用或停用接口;示例,ip link set eth1 up/down

      2) multicast on 或 multicast off:啟用或禁用多播功能;示例,ip link set eth1 multicast on/off

      3) name NAME:重命名接口;示例,ip link set eth1 name eth666

      4) mtu NUMBER:設置MTU的大小,默認為1500;(MTU,最大傳輸單元,某一層通信協議上所能承受的最大數據包大小;MTU越大承載的有效數據包就越大)

      5) netns PID:將指定的網卡移動到指定的虛擬網絡(本地系統將看不到這塊網卡)

         示例,ip netns add mynet ( 構建虛擬網絡mynet )

            ip link set eth1 netns mynet ( 將接口eth1添加到虛擬網絡mynet )

            ip netns exec mynet ip link show ( 查看虛擬網絡mynet的接口信息 )

            ip netns del mynet ( 刪除虛擬網絡 )

    ip link show/list:顯示設備屬性

    ip link help:顯示簡要使用幫助

  ip netns:manage network namespaces.

  釋義:netns是linux中提供網絡虛擬化的一個項目,使用netns可以在本地虛擬化出多個網絡環境,每個虛擬網絡空間都獨立於當前系統的網絡空間,其中的網絡設備及iptables規則等都是獨立的。

    1) ip netns list:列出所有的netns

    2) ip netns add NAME:創建指定的netns

    3) ip netns del NAME:刪除指定的netns

    4) ip netns exec NAME COMMAND:在指定的netns中運行命令

    5) ip netns help:顯示簡要使用幫助
    6) exit:退出虛擬網絡

  ip address:protocol address management.

    1) ip address add IFADDR dev IFACE:給指定網卡添加多一個IP;示例,ip address add 192.168.10.2/24 dev eth1

        [label NAME]:為額外添加的地址指明接口別名;示例,ip address add 10.1.1.10/8 dev eth1 label eth1:0

        [broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算得到;

        [scope SCOPE_VALUE]:global:全局可用;link:接口可用;host:僅本機可用

    2) ip address delete IFADDR dev IFACE:刪除接口的ip;示例,ip address delete 10.1.1.10/8 dev eth1

    3) ip address list/show [IFACE]:顯示接口的地址信息;示例,ip address show,ip address list eth1

    4) ip address flush dev IFACE:清空接口所有的地址信息;示例,ip address flush dev eth1

  ip route:routing table management.

    1) ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]:添加路由信息;
      示例,ip route add 10.0.2.0/24 via 10.0.1.11 (到達10.0.2.0/24網絡的下一跳地址為10.0.1.11)
         ip route add 10.0.2.0/24 dev eth0 (通過接口eth0到達10.0.2.0/24網絡)
         ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 (到達192.168.1.0/24網絡須通過接口eth1的下一跳地址10.0.0.1)

         ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 src 10.0.10.100 (通過eth1接口的10.0.10.100地址,經下一跳10.0.0.1到達網絡192.168.1.0/24;此條路由的網關是本機)

         ip route add default via 172.16.0.1 dev eth0 (添加默認路由,通過eth0接口經下一跳172.16.0.1出去)

    2) ip route del:刪除路由信息

      示例,ip route delete 192.168.1.0/24

         ip route show:顯示路由信息

    3) ip route flush - flush routing tables

      示例,ip route flush 192.168.1.0/24

    4) ip route get:獲取路由信息

      示例,ip route get 192.168.0.0/24
ss命令:

  獲取socket信息,顯示和netstat類似的內容,但比netstat更高效。

  ss [options] [FILTER]

  options:

    -t:TCP協議的相關連接

    -u:UDP相關的連接

    -w:僅顯示raw套接字的連接

    -l:顯示處於監聽狀態的連接

    -a:所有狀態的連接

    -n:不解析服務名稱

    -p:顯示使用socket的進程

    -e:顯示詳細的信息

    -m:內存用量
    -s:顯示socket使用概況

    -o:計時器信息

  FILTER:
    =[state TCP-STATE] [EXPRESSION]

    TCP-STATE包括:

        LISTEN:監聽

        ESTABLISEHD:建立的連接

        FIN_WAIT_1:等待遠程TCP連接中斷請求

        FIN_WAIT_2:從遠程TCP等待連接中斷請求

        SYN_SENT:客戶端發送請求連接

        SYN_RECV:服務端接收請求連接

        CLOSED:沒有任何連接

        示例,ss -tan state ESTABLISHED

    EXPRESSION:

        dport=

        sport=

        示例,ss -tan ‘( dport = :22 or sport = :22 )‘ (註意,此命令空格不能省略)

3、詳細說明進行管理工具htop、vmstat等相關命令,並舉例

htop

  基於文本模式的、交互式的進程查看器,主要用於控制臺或shell中,比top命令更加人性化,可以說是top的高級版。Linux系統默認不安裝htop,需要自行安裝,可以登錄官網下載安裝或配置epel源,通過yum install htop安裝。

  htop的使用:

    [root@happiness ~]# htop

技術分享圖片

    總共分成四個區:

    1)上左區:顯示CPU(1、2表示CPU的核數)、物理內存和交換分區的信息;

    2)上右區:顯示任務數量(tasks)、平均負載(load average)和系統從開機到現在的運行時長;

    3)進程區域:動態顯示當前系統中的所有進程;

    4)操作提示區:顯示當前界面中F1~F10功能鍵中定義的快捷功能。

  htop常用功能鍵:

    F1 : 查看htop使用說明

    F2 : 設置

    F3 : 搜索進程

    F4 : 過濾器,按關鍵字搜索

    F5 : 顯示樹形結構

    F6 : 選擇排序方式

    F7 : 減少nice值,這樣就可以提高對應進程的優先級

    F8 : 增加nice值,這樣可以降低對應進程的優先級

    F9 : 殺掉選中的進程

    F10 : 退出htop

    / : 搜索字符

    h : 顯示幫助

    l :顯示進程打開的文件

    u :顯示所有用戶,並可以選擇某一特定用戶的進程

    s : 將調用strace追蹤進程的系統調用

    t : 顯示樹形結構

    H :顯示/隱藏用戶線程

    I :倒轉排序順序

    K :顯示/隱藏內核線程

    M :按內存占用排序

    P :按CPU排序

    T :按運行時間排序

    上下鍵或PgUP,PgDn:移動選中進程

    左右鍵或Home,End:移動列表

    Space(空格):標記/取消標記一個進程

  htop常用選項:

    -d #:指定延遲時間間隔

    -u UserName:僅顯示指定用戶的進程

    -s COLUME:以指定字段進行排序

vmstat

  指定時間間隔內,動態監控系統的虛擬內存、進程、CPU活動的整體情況,屬於低開銷工具。命令格式:vmstat [options] [ delay [count] ]。

    delay:刷新時間間隔,如果不指定,只顯示一條結果;

    count:刷新次數;如果不指定count但指定了delay,這時會一直刷新。

  常用的options選項:

    -a:顯示活躍和非活躍內存

    -f:顯示從系統啟動至今的fork數量

    -m:顯示slab信息(slab,Linux的內存分配機制)

    -n:只在開始時顯示一次各字段名稱

    -s:顯示內存相關統計信息及多種系統活動數量

    -d:顯示磁盤相關統計信息

    -p:顯示指定磁盤分區統計信息

    -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(bytes)。默認單位為K(1024 bytes)

    -V:顯示vmstat版本信息

  示例:

    默認顯示1次摘要信息

    技術分享圖片

    間隔2秒刷新1次摘要,總共顯示3次

   技術分享圖片

    關鍵字釋義:

    技術分享圖片

4、使用until和while分別實現ping 192.168.0.0/24

#!/bin/bash
declare -i up=0
declare -i down=0
declare -i i=0
declare -i j=1
trap interrupt_trap INT

interrupt_trap() {
    echo "QUIT"
    echo "There are $up ips being up."
    echo "There are $down ips being down."
    exit 1
}

while [ $i -le 255 ]; do
    while [ $j -le 255 ]; do
        if [ $i -eq 255 -a $j -eq 255 ]; then
            break
        fi
        ping -W1 -c1 192.168.$i.$j &> /dev/null 
        if [ $? -eq 0 ]; then
            echo "192.168.$i.$j is up."
            let up++
        else
            echo "192.168.$i.$j is down."
            let down++
        fi
        let j++
        [ $j -eq 256 ] && j=1
    done
    let i++
done

echo "There are $up ips being up."
echo "There are $down ips being down."

Linux相關網絡命令