#20 ifconfig、route、netstat、ip、ss命令詳解與修改主機名與網卡配置文件

  網絡的結構:

    硬件:計算機、互聯設備、網絡設備

    軟件:操作系統、協議、應用程序、數據庫


  網絡的功能:

    資源共享:目的

    數據通信:手段


  網絡通信模型

    ISO/OSI:

      應用層

      表示層

      會話層

      傳輸層

      網絡層

      數據鏈路層

      爲物理層


    TCP/IP: 

      應用層

      傳輸層

      互聯網層

      網絡訪問層  


  數據報文封裝格式:

    對等通信:

    應用層:數據流進程封裝;

    傳輸層:數據段(TCP segment)或數據報(UDP data-prog);

      最大的報文不能超過65535字節;

    互聯網層:數據包或IP數據報(ip package);

      最大的報文不能超過65535字節;

    網絡訪問層:數據幀(ether frame)

      最大的報文使用MTU定義,MTU=1500+首部+尾部

                流式數據,0,1二進制的順序列;


  通信界定地址;

    物理地址:

      在以太網中,物理地址被定義爲Mac(media access control)地址;

      實現真正的本地通信;

      使用範圍,本地局域網並且不跨路由;


    邏輯地址:

      在TCP/IP協議棧中,邏輯地址被定義爲IP地址;

      界定主機到主機的通信:點對點通信

      使用範圍:全球互聯網

      注意:邏輯地址僅僅只作用主機定位,不用於真正的通信;


    邏輯端口號:

      界定進程

        1-1023:固定

        1024-45000+:半固定

        其他:可自由分配


    邏輯地址:邏輯端口號 —— 套接字(socket)

      能夠界定特定主機上的特定進程;


  如何讓主機加入到網絡中並能夠正常訪問網絡資源;

    配置ip+netmask:當前廣播域內的通信;

    網關(路由):跨廣播域通信;

    DNS服務器地址:實現基於主機名的通信;


    注意:ip地址必須和網關在同一邏輯網段中;




centos中網絡管理:

  1.爲網卡設置網絡屬性;

    自動獲取:

      在主機所在的網絡中,至少有一臺DHCP服務器;


    手動配置(靜態指定):

      a.使用命令

        net-tools家族(ifcfg家族);

          ifconfig(ipconfig)

            查看網絡接口的配置信息;

            配置網絡屬性;

            管理接口狀態;

          route:

            查看路由信息;

            配置路由信息(網關,靜態路由,靜態默認路由);

          netstat:

            狀態及統計數據的查看


        iproute家庭:

          ip OBJECT

            其中OBJECT可以是:

              addr:IP地址和掩碼的管理

              link:物理接口的管理

              route:路由管理


          ss:

            狀態及統計數據的查看;


        注意:以上命令,在任何的Linux發行版中都適用;


        nm家族:network manager

          nmcli:命令行工具

          nmtui:text-window的工具


        nm家族只在centos7以上中能夠使用;


        system-config-network

        system-config-network-cmd

        system-config-network-tui


        上述三個工具都是setup的子命令;在centos6中可以使用上述命令;


      b.修改配置文件,


  2.網絡接口的命名方式;

    思科的交換機:fastethernet0/1,gigabitethernet0/1

    思科的路由器:Ethernet0/0,fastethernet0/0


    Linux的接口命名的方式:

      a.傳統的命名方式:

        以太網:ethX,X從0開始的整數;如:eth0,eth1,...

        PPP網絡:PPPoE,PPP over Ethernet

          PPPX,X從0開始的整數;如:PPP0,PPP1,...

        環回接口:lo,loopback;

        

        在centos6及之前的發行版本中使用;


      b.可預測的命名方案(centos7開始)

        可以支持很多種的命名機制:

          1)根據firmware進行命名:

            每一臺計算機的網卡在其計算機的硬件固件中都有唯一的標識符,比如:MAC地址,廠商標識,電器編號; 

          2)根據物理拓撲結構:

            每一臺計算機的主板上都有固定數量的插槽或接口,如主板上第二個插槽連接網卡的第一個物理接口等;


        根據不同的命名機制,可以有如下的命名標準,

          1)如果firmware或BIOS是主板上集成的設備提供的索引信息並且該信息可用,則根據此索引信息進行設備命名,如:enoX,eno1,eno16777736,...


          2)如果firmware或BIOS是主板上擴展插槽所提供的索引信息並且該信息可用,則根據此索引信息進行設備命名,如:ensX,ens0,ens2,...


          3)如果硬件接口的物理拓撲的位置信息存在並可用,則可以根據此信息進行設備命名,如:enp1s0


          4)如果用戶顯示的定義,可以根據諸如MAC地址進行命名;如enx


          5)如果上述可預測命名皆不可用,則延用傳統命名方式對網絡設備進行命名;


          命名的格式組成:

            en:Ethernet

            wl:WLAN

            ww:wwan


          名稱的類型:

            o<index>:集成設備的索引編號;

            s<slot_num>:擴展插槽的索引編號;

            x<mac>:基於MAC地址進行命名:

            p<bus>s<slot>:基於總線+擴展插槽的索引聯合索引編號;


  net-tools家族(ifcfg家族):

    1.ifconfig命令

      ifconfig - configure a network interface


      ifconfig [-v] [-a] [-s] [interface]:用於查看網絡接口的配置信息;

        如果執行ifconfig命令,不帶任何接口做參數,則顯示所有處於激活狀態的網絡接口信息;

        如果執行ifconfig命名,帶有特定接口名稱作爲參數,


      ifconfig interface address:用於配置指定接口的網絡參數:

        ifconfig interface ip/[prefix_len] [up|down]

        ifconfig interface ip/netmask subnet_mask [up|down]


        示例:

          ifconfig eth1 172.16.100.125

          ifconfig eth1 172.16.100.125/24

          ifconfig eth1 172.16.100.125 netmask 255.255.255.192

          ifconfig eth1 up|down


      常用選項:

        -a:顯示所有的網絡接口,無論其是否處於激活狀態;


        示例:

          ifconfig -a


    2.route命令:查看和管理路由信息;

        路由表中的路由條目,可能包括下列幾種類型;

          1.主機路由:目標地址是特定的單個IP地址;

          2.網絡路由:子網路由;主網路由;超網路由(CIDR,聚合路由)

              子網路由:10.10.10.0/24

              主網路由:192.168.1.0/24

              超網路由:192.168.0.0/16

          3.默認路由:目標地址爲0.0.0.0/0的路由條目;到達任意地址的路由;


      常用選項:

        -n:以數字化顯示主機名(IP地址)和端口


      設置路由信息:

        route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]


        route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


      設置默認網關的方法:default === -net 0.0.0.0 netmask 0.0.0.0

        route add default gw 192.168.100.1

        route add default gw 192.168.100.1 dev eth2


      刪除默認網關的方法:

        route del default

        route del default gw 172.16.0.1


      添加靜態路由的方法:

        route add -net 10.0.0.0/8 gw 192.168.220.100 [dev eth2]


      刪除靜態路由的方法:

        route del -net 10.0.0.0/8

        route del -net 10.0.0.0/8 gw 192.168.220.100


netstat命令:

  Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships


  Print network connections

    [--tcp|-t]:只顯示與TCP協議相關的網絡連接

    [--udp|-u]:只顯示與UDP協議相關的網絡連接

    [--udplite|-U]:只顯示udplite協議相關的網絡連接

    [--sctp|-S]:

    [--raw|-w]:顯示與裸套接字相關的網絡連接

    [--listening|-l]:顯示處於LISTEN狀態的TCP連接

    [--all|-a]:查看所有狀態的任意連接

    [--numeric|-n]:數字化顯示結果中的主機名、端口號、用戶ID等信息;

      [--numeric-hosts]

      [--numeric-ports]

      [--numeric-users]

    [--extend|-e[--extend|-e]]:以擴展格式顯示結果

    [--program|-p]:顯示與該網絡連接相關的應用程序及進程ID


    TCP的有限狀態機(TCP FSM):

      State

        The  state  of  the socket. Since there are no states in raw mode and usually no states used in UDP and UDPLite, this column may be left blank. Normally this can be one of several values:


       ESTABLISHED

              The socket has an established connection.


       SYN_SENT

              The socket is actively attempting to establish a connection.


       SYN_RECV

              A connection request has been received from the network.


       FIN_WAIT1

              The socket is closed, and the connection is shutting down.


       FIN_WAIT2

              Connection  is  closed, and the socket is waiting for a shutdown from the

              remote end.


       TIME_WAIT

              The socket is waiting after close to handle packets still in the network.


       CLOSE  The socket is not being used.


       CLOSE_WAIT

              The remote end has shut down, waiting for the socket to close.


       LAST_ACK

              The remote end has shut down, and  the  socket  is  closed.  Waiting  for

              acknowledgement.


       LISTEN The  socket  is listening for incoming connections.  Such sockets are not

              included in the output unless you specify the --listening (-l)  or  --all

              (-a) option.


       CLOSING

              Both sockets are shut down but we still don't have all our data sent.


       UNKNOWN

              The state of the socket is unknown.



    常用的選項組合:

      -tan, -uan, -tnl, -unl, -tnlp, -unlp, -tunlp


  Print routing tables

    {--route|-r}:顯示路由表信息

    [--numeric|-n]:數字化信息

    [--extend|-e]:顯示擴展信息


    常用的選項組合:

      -rn, -rne


  Print interface statistics:

    {--interfaces|-I|-i}

    [--all|-a]

    [--extend|-e]

    [--verbose|-v]

    [--program|-p]

    [--numeric|-n]


  Print Protocol statistics:

    {--statistics|-s}:顯示詳細的各個協議的統計信息;

    [--tcp|-t]

    [--udp|-u]

    [--udplite|-U]

    [--sctp|-S]

    [--raw|-w]


iproute家族:

  ip:show / manipulate routing, devices, policy routing and tunnels

    ip [ OPTIONS ] OBJECT { COMMAND | help }


      OBJECT := { link | addr | route | netns }



    ip link COMMAND

      COMMAND: add, delete, set, show, help


      ip link set - 修改網絡設備的配置參數

        ip link set [dev] IFACE_NAME { up | down }:激活或禁用網絡接口;

        ip link set [dev] IFACE_NAME [ arp { on | off } ]:是否允許此網絡接口使用ARP協議;

        ip link set [dev] IFACE_NAME name IFACE_NEW_NAME:更改網絡接口名稱,需要將設備先down掉;

        ip link set [dev] IFACE_NAME [ mtu MTU ]:修改網絡接口的MTU數值;

        ip link set [dev] IFACE_NAME [ netns PID ]:

        ip link set [dev] IFACE_NAME [ netns NAME ]:將指定的網絡接口加入到指定的網絡名稱空間中;


      ip link { show | list }:列表顯示所有的鏈路接口;只顯示鏈路層信息;

      ip link help:獲得簡短的幫助信息


    ip netns COMMAND - 設置內核中的網絡名稱空間;

      ip netns list:列表顯示所有的自定義的名稱空間;

      ip netns add NS_NAME:創建名稱空間;

      ip netns exec NS_NAME cmd:在指定的名稱空間中使用命令;

      ip netns delete NS_NAME:刪除指定的名稱空間;


    ip addr COMMAND - 查看和設置三層邏輯網絡地址;

      ip addr add IFADDR dev IFACE_NAME:爲指定的網絡接口添加IP地址;

      ip addr del IFADDR dev IFACE_NAME:將IP地址從指定的網絡接口上刪除;

      ip addr flush dev IFACE_NAME:將指定接口上配置的所有IP地址全部清除;

      ip addr { show | list } [dev IFACE_NAME]:顯示網絡接口上配置的IP地址;


      爲網絡接口增加多個IP地址,並能夠使用ifconfig查看;

        ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL


        ifconfig IFACE_NAME_LABEL IFADDR


        IFACE_NAME_LABEL : IFACE_NAME:#


    ip route COMMAND - 查看和設置路由表信息

      ip route { add | del } TARGET/PREFIX via NEXT_HOP [dev IFACE_NAME]

      ip route list


  ss - another utility to investigate sockets

    ss [options] [ FILTER ]


    常用選項:

      -t:TCP協議相關的連接狀態

      -u:UDP協議相關的連接

      -w:raw socket相關的連接

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

      -a:所有的狀態的套接字連接

      -n:數字化顯示結果

      -p:顯示相關的應用程序及PID

      -e:顯示詳細的擴展信息

      -m:顯示內存使用量

      -o:計時器信息


    常用的選項組合:

      -tan, -uan, -tnl, -unl, -tulp, -unlp


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


      TCP-STATE:TCP協議有限狀態機中的所有可用狀態;


      EXPRESSION:

        dport= :port

        sport= :port


        EXPRESSION示例:

          '( dport = :22 or sport = :22 )'


net-tools

iproute

  特點:使用命令配置網絡參數以後,網絡參數會立即生效;但是,只要重新啓動或重新激活網絡接口,其配置的網絡參數立即丟失;


  上述命令的配置結果,並沒有影響或修改網絡設備的配置文件;


配置文件:

  CentOS6中:

    跟IP、MASK、GATEWAY、DNS Server相關的配置文件:

      /etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

        DEVICE:此網絡接口的名稱

        TYPE:此網絡接口的類型,比較常見的是Ethernet,Bridge,Token Ring,...

        HWADDR:此設備的物理地址,在以太網中是MAC地址;

        ONBOOT:在系統引導的過程中,是否激活此設備;

        NETBOOT:是否可以使用此設備進行網絡引導;

        BOOTPROTO:激活此接口時使用何種協議來配置此接口的屬性;

          動態配置:dhcp,bootp

          靜態配置:static,none

        IPV6INIT:是否在此接口上初始化IPV6協議;

        USERCTL:是否允許普通用戶能夠管理此接口;推薦取值爲no;

        IPADDR:指定此接口的固定IP地址,前提是BOOTPROTO應該是static或none;

        NETMASK:設置IP地址對應的子網掩碼;如:255.255.255.0

        PREFIX:設置IP地址的網絡前綴的位數;如:24

        GATEWAY:設置默認網關

        DNS1:首選DNS服務器的地址指向;

        DNS2:備用DNS服務器的地址指向;

        DNS3:第三DNS服務器的地址指向;

        PEERDNS:是否允許從DHCP服務器獲得的DNS服務器的地址指向替代此配置文件中的DNS服務器的地址指向;默認值爲允許;

        NM_CONTROLLED:是否允許NetworkManager服務管理網絡接口;此服務在CentOS6中非常不完善,所以建議不使用此服務進行網絡接口的管理;而且最好將此服務永久關閉,執行下列兩條命令即可;

          # service NetworkManager stop

          # chkconfig NetworkManager off


    主機名稱的配置文件:/etc/sysconfig/network

      HOSTNAME:當前Linux系統使用的主機名稱


      # hostname 查看當前系統的FQDN

      # hostname NEW_HOSTNAME

        註銷後重新登錄,即可生效


  CentOS7中:

    跟IP、MASK、GATEWAY、DNS Server相關的配置文件:

      /etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

        多數的配置語句與Center6相同,多出了下列幾項:

        UUID:全局唯一標識符,用來唯一標識此網絡接口;

        NAME:此網絡接口的顯示名稱;

        DEFROUTE:是否允許此網絡接口運行默認路由;


    主機名稱的配置文件:/etc/sysconfig/network


      # hostnamectl set-hostname NEW_HOSTNAME


  本地解析配置文件:/etc/hosts

    格式爲:  IP地址    主機名(多個主機名之間使用空白字符隔開)


  解析器文件:/etc/resolv.conf

    search DOMAIN_NAME

    nameserver DNS_SERVER_IP_ADDRESS


  靜態路由的配置文件:/etc/sysconfig/network-scripts/route-IFACE_NAME


    IFACE_NAME:必須爲此次路由出站接口的名稱;

    兩種風格的寫法:

      1.每條路由信息佔用一行;

        TARGET via NEXT_HOP [dev IFACE_NAME]


        示例:

          10.0.0.0/8 via 192.168.100.254


      2.每條路由信息佔用多行;

        ADDRESS#=TARGET

        NETMASK#=MASK

        GATEWAY#=NEXT_HOP


        示例:

          ADDRESS0=172.16.0.0

          NETMASK0=255.255.0.0

          GATEWAY0=192.168.10.254


Bonding —— 綁定

  就是將多塊網卡(多個網絡接口設備)綁定同一IP地址,對外提供網絡服務;這些網卡之間可以實現負載均衡或高可用技術;


  通過bonding,虛擬一個網卡對外提供服務及網絡連接,所有的物理網卡都被修改爲相同的MAC地址;


  Bonding的工作模式:

    Mode 0——負載均衡解決方案,其負載均衡的算法爲balance-rr(round robin, 輪詢);輪詢策略意味着:從頭到尾順序的在每個slave接口上面發送數據包;該模式可以提供負載均衡以及容錯的能力;


    Mode 1——主備解決方案,(active-backup, master-backup),在此模式中,只有一個slave被激活,用於正常數據傳輸;而其他的接口都監視此接口的工作狀態;當且僅當活動的slave接口失敗的時候,纔會從其他備份的接口中選擇一個用於激活;該模式只能實現容錯,無法進行負載均衡;


    Mode 3——全廣播解決方案,在所有的slave接口上傳輸全部報文;


    miimon用來進行鏈路監測。如果miimon=100,則系統每100ms監測一次鏈路連接的狀態;如果某個網絡接口在miimon監測的結果爲不連通,則進行故障倒換;


  使用Bonding的時候,我們需要配置:

    1.創建虛擬接口

    2.選擇miimon的監測時間及Bonding的工作模式;

    3.選擇用於此次Bonding的物理接口;


  在/etc/sysconfig/network-scripts/ifcfg-bond0文件中指定Bonding的特性即可:

    DEVICE=bond0

    ONBOOT=yes

    NM_CONTROLLED=no

    BOOTPROTO=none

    BONDING_OPTS="miimon=100 mode=0"

    IPADDR=172.16.100.135

    PREFIX=16


  修改物理網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth1

    DEVICE=eth1

    BOOTROTO=none

    MASTER=bond0

    SLAVE=yes

    USERCTL=no


  修改物理網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth2

    DEVICE=eth2

    BOOTROTO=none

    MASTER=bond0

    SLAVE=yes

    USERCTL=no


  Bonding最好在CentOS6中實現。


  在CentOS7中使用網絡組來實現更加強大的容錯;

    nmcli


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