天天看點

Linux網絡(二)

一、Linux網絡指令分類

二、ifcfg家族

三、iproute2家族

四、nmtui家族

五、TCP FSM

分類:

1.ifcfg家族://net-tools 

    ifconfig:配置ip,netmask,gateway

    route:配置網關和路由

    netstat:網絡狀态及統計資料的檢視

    其他指令:

====================================

netstat ifconfig route arp

ether-wake slattach ipmaddr iptunnel

mii-diag mii-tool nameif plipconfig

2.iproute2家族

    ip OBJECT:

        addr:位址和掩碼配置

        link:接口

        route:路由

    ss:統計

    ifstat :檢視接口狀态資料

其他指令:

==================================

ip ifcfg ifstat  ss tc

arpd bridge lnstat nstat cbq ctstat devlink genl 

routef routel rtacct rtmon rtpr rtstat

3.Centos7:nm(network manager)家族//指令修改配置檔案

    nmcli:指令行工具

    nmtul:text windows工具

        nm                    nm-connection-editor  nmtui-connect

        nmblookup             nm-online             nmtui-edit

        nmcli                 nmtui                 nmtui-hostname    

1.ifconfig

    txqueue:傳輸隊列長度

    RX errors 0  dropped 0  overruns 0  frame 0

        RX:收到的包,drop丢失的包,overruns:溢出的,frame:幀

    ifconfig [INTERFACE] [up|down] 

        -a //顯示所有的接口,包括未激活的

        -s //顯示摘要資訊

    ifconfig IFACE ip/mask up

        ifconfig eth0 10.0.0.1/24 up

    ifconfig iface ip netmask NETMASK

    [-]allmulti //啟用多點傳播,-關閉

    [-]promisc //混雜模式

    [-]arp 

    mtu N 

    add addr/prefixlen //管理ipv6位址

    del addr/prefixlen

    txqueuen length //傳輸隊列 長度

    注意:一個網卡設定兩個ip

        ifconfig eno16777736:1 192.168.3.150 netmask 255.255.255.0 up

        ifconfig eno16777736:3 192.168.3.128/24  up

2.route:路由檢視及管理

    主機路由:目标位址為單個ip

    網絡路由:目标位址為IP網絡

    預設路由:目标為任意主機,0.0.0.0/0.0.0.0

    -n //numberic address,顯示數字,而不顯示域名

        U :up狀态

        UG :up且是網關

        Metric:路徑成本,話費的開銷

        iface:經過本地的接口

    route  [-A family |-4|-6] add [-net|-host] target 

        [netmask Nm] [gw Gw] [metric N] [[dev] If]

    route  [-A family |-4|-6] del [-net|-host] 

        target [gw Gw] [netmask Nm] 

        [metric N] [[dev] If]

    -A family //區分v4和v6

    route add default gw 10.0.0.1 

    route add 10.0.0.0/24 gw 10.0.0.1 [ dev eth0 ] //dev可以省略

    route del -net 10.0.0.0/24

    route del default //删除預設網關

3.netstat 指令

    netstat - Print network connections, routing tables, interface statistics,

            masquerade connections, and multicast memberships

    路由:    

        -r :顯示路由表

        -n :數字顯示

    網絡狀态

        -t ;tcp -u ; udp;-U;--update -S;--sctp  --raw;-w

            sctp:比tcp功能更強悍,更安全,更不容易導緻阻塞

            -U:一種更新版本的udp

            TCP的相關連接配接,連接配接均有其狀态;FSM(Finate State Machine)

        -l;listening,監聽狀态

        -a ;所有狀态的連結

        -n;number-show

            --numeric-ports:隻把端口數字顯示

            --numeric-hosts:隻把主機數字顯示

        -e:顯示擴充字段的資訊

        -p:顯示相應的程式

        -w:raw socket相關的連結,裸套接字

        -v;詳細

    [root@MT ~]# netstat -tn

    Active Internet connections (w/o servers)

    Proto Recv-Q Send-Q Local Address           Foreign Address         State      

    tcp        0      0 192.168.3.117:22        192.168.3.112:52083     ESTABLISHED

    tcp        0     52 192.168.3.122:22        192.168.3.112:53521     ESTABLISHED

    //Recv-Q接受隊列,

        netstat -un //隻顯示已經建立的udp連結

        netstat -tae //所有狀态的tcp連結

        netstat -unl //監聽狀态的

    顯示接口的統計資料://表格形式

    netstat {--interfaces|-I|-i} [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] 

            [--numeric|-n]  [--numeric-hosts]  [--numeric-ports] [--numeric-users] 

            [--continuous|-c] [delay]

        -e //拓展

        -p //顯示相應的程式

        -i //所有接口

        -I //指定接口 netstat -Ieno16777736

        -a //所有狀态

    顯示統計資訊:

    netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [delay]    

        netstat -su //分别統計,文檔方式

    TCP:面向連結的協定,通信開始之前,要建立一個虛鍊路;通信完成後拆除虛鍊路

    UDP:無連接配接的協定,直接發送資料封包

4. [ifup|ifdown] 接口 

    注意:通過配置檔案/etc/sysconfig/network-script/ifcfg-IFACE來識别接口并完成配置

    ifconfig eth0 [up|down]

5.hostname和dns配置

    臨時有效

        hostname 

        hostname HOSTNAME

永久有效

    hostnamectl set-default HOSTNAME

    hostnamectl status //檢視主機名狀态資訊

    nmtui-hostname

    /etc/sysconfig/network CENTOS6

        HOSTNAME=主機名

配置DNS:/etc/resolv.conf

    nameserver DNS_SERVER_IP //最多三個

    /etc/hosts //本地的解析檔案,先找hosts找不到,然後找dns

測試DNS

    dig -t A www.baidu.com

    dig -x 10.0.0.1 //反向解析

1.ip //檢視和管理路由,裝置,政策路由,以及隧道

ip [ OPTIONS] OBJECT COMMAND

OBJECT={link | addr | route | netns|....} //object可以簡寫,object的子指令也可以簡寫

link    set  [dev] eth0 down|up        //改變網絡屬性

        set arp on|off //啟用或者禁用arp

        set multicast on|off //啟用或者禁用多點傳播

        set name  //修改名字

            ip link set lo name eth0//需要先down才能修改名字

        set mtu,預設為1500

        set txqlen

        link show|list  [eth0] //檢視裝置屬性

        ip li sh //相當于ip link show

        注意:man ip-link,man ip-route

        ip link help //檢視簡單幫助資訊                

netns //ip netns help :ns namespace命名空間

    ip netns add mynet

    ip netns list //列出所有的netns

    ip link set eno16777736 netns mynet //移動到該空間

    ip netns exec mynet ip link show //在netns中運作該指令

    ip  netns del mynet //删除該命名空間

addr //man ip-address

    add:ip addr IFADDR dev IFACE

        ip addr add eth0 192.168.0.1/24 dev eth1 

        ip addr add 192.168.0.2/24 dev eth0 //添加多塊位址

        ip addr list eth0 //隻能用這個指令檢視備用ip位址

            注意:ifconfig預設不能顯示該位址

        ip addr add 192.168.0.4/24 label eth0:2 dev eth0 //添加标簽

            注意:ip addr隻有添加标簽後,ifconfig才能看見

        scope 作用域:

            global:全局可用

            site:

            link:接口可用,外部的其他接口不可用。自己ping自己可以,隻用于自己和自己通信

            host:隻在本機内部是可用的

    del:

        ip addr del IFADDR/prefix dev eth0

    flush: //清空所有的ip位址

        ip addr flush dev eth0

    show [eth0]    

route

    ip route { add | del | change | append | replace } ROUTE

    ip route add TYPE PREFIX via gw [dev IFACE] [src SOURCE_IP]

    ip route change

    ip route replace

        to TYPE PREFIX (default) //to:到達指定目标,

                                //TYPE:目标可以使主機路由,或者網絡路由等

                                //PREFIX:掩碼字尾

        dev //本地出接口

        via ADDRESS //下一跳

        src ADDRESS //源位址

        ip route add 192.168.0.0/24 via 10.0.0.1 dev eth0

        ip route add 192.168.1.0/24 via 10.0.0.1 dev eth0 src 10.0.0.120 //假如有多個位址的話,可以指定源位址

        ip route add default via 192.168.0.1 dev eth0

        //replace和change都是一樣的                

    ip route delete

        ip route delete 192.168.0.0/24

    ip route show|list

        src|to  

        ip route show src 192.168.3.124

        ip route show to 192.168.1.0/24

    ip route flush //清空所有路由表

        ip route flush 192.168.1/24 //清空192.168.1.0的所有路由

    ip route get

        to|from|iif|oif  ADDRESS    

2.ss:另一個現實socket的資料的

ss [option] [FILTER]

    -t:tcp -u:udp -l:listening -a:all -n:numeric -r:resolve解析

     -e:extend的套接字資訊 -m:memory -p:process -s:summary 

     -4|-6 -d:dhcp -w:raw裸套接字 -o:timer計時器資訊

     FILTER:[state TCP-STATE] [EXPRESSION] 過濾器

        //UDP是沒有狀态的

    TCP的常見狀态:

        TCP FSM:

            listen:監聽,ESTABLISHED:已建立的連結,

            FIN_WAIT_1:一方啟動,等待對方

            FIN_WAIT_2:分手的時候,一方分手,一方确認

            SYN_SENT:

            SYN_RECV:

            CLOSED:

        EXPRESSION:

            dport= 

            sport=

                示例:‘( dport = 22 or sport = :22 )'

                 ss -tan state ESTABLISHED '( sport = :22 )'

                ss -tan  '( sport = :22 or dport = :22 )'

    ss -o state established

    配置檔案 :

        IP/NETMASK/GW/DNS等屬性配置檔案:/etc/sysconfig/network-scripts/ifcfg-IFACE

        路由的配置檔案:/etc/sysconfig/network-scriptes/route-IFACE

        1.配置檔案:/etc/sysconfig/network-scripts/ifcfg-IFACE通過大量參數來定義接口的屬性

        專用修改:

            system-config-network(setup) //Centos6:

            nutui //Centos7

        配置檔案參數:cat ifcfg-eno16777736

            TYPE=Ethernet    //接口類型,常見的有Ethernet,bridge

            BOOTPROTO=dhcp    //引導時使用什麼協定來配置接口protocol

                            //常見的有:dhcp,bootp,static,none//後面兩個都是靜态的

            DEFROUTE=yes    //是否為預設路由使用的接口

            DNS1=192.169.0.1    //第一個DNS伺服器指向

            DNS2    //備用DNS

            DOMAIN=test.com   //目前DNS搜尋域

            IPADDR=192.168.0.1 //和BOOTPROTO沖突,隻能使用一個

            NETMASK=255.255.0.0  //子網路遮罩,Centos7支援以長度方式指明子網路遮罩

            GATEWAY=10.0.0.1 //預設網關

            USERCTL=yes/no    //是否允許普通使用者控制此裝置,預設為no

            PEERDNS=yes //預設yes;如果BOOTPROTO的值為’dhcp‘,是否允許dhs server配置設定的dns伺服器指定,覆寫手動修改的dns

            NM_CONTROL=no/yes //是否使用NewworkManager服務來控制此檔案,系統開機時會通過該服務讀取網絡配置新

                網絡服務:

                    network //穩定Centos6,建議使用

                    networmanager //不太完善,實驗階段,是Centos6的話,建議關閉該服務,并改為no

                        chkconfig --list //檢視該服務是否啟用 

                HW_ADDR

            PEERROUTES=yes

            NETBOOT=yes     //是否支援網絡引導

            IPV4_FAILURE_FATAL=no

            IPV6INIT=yes        //是否初始化ipv6

            IPV6_AUTOCONF=yes

            IPV6_DEFROUTE=yes

            IPV6_PEERDNS=yes

            IPV6_PEERROUTES=yes

            IPV6_FAILURE_FATAL=no

            NAME=eno16777736    

            UUID=42abd456-f5b8-4311-badc-c6a6827e318d  //裝置的唯一辨別

            DEVICE=eno16777736    //次裝置檔案對應的裝置的名稱

            ONBOOT=no        //開機啟用yes/no

        2.管理網絡服務:

            Centos6:service SERVICE {status|stop|start|restart}

            Centos7:

            對配置檔案修改之後,如果要生效,需要重新開機網絡服務

                service network restart

                [root@MT network-scripts]# cat ifcfg-eno16777736  //手動指定Centos7,ip位址

                TYPE=Ethernet    #

                BOOTPROTO=none    #

                DEFROUTE=yes

                IPV6INIT=no

                NAME=eno16777736    #

                DEVICE=eno16777736    #

                ONBOOT=yes            #

                IPADDR=192.168.3.124    #

                PREFIX=24    //可以這樣用NETMASK

            systemctl restart network.service

        3.用到非網關預設路由:/etc/sysconfig/network-scripts/route-IFACE

            支援兩種配置方式,但不可混用

            (1)每行一個路由條目

                TARGE via GW

            (2)每三行一個路由條目

                ADDRESS#=TARGET

                NETMASK#=MASK

                GATEWAY#=NEXTHOP

            添加靜态路由風格1:

                vim /etc/sysconfig/network-scripts/route-eno16777736

                    192.168.10.0/24 via 192.168.3.1

                    192.168.100.0/24 via 192.168.3.1

                systemctl restart network.service

            添加靜态路由風格2:

                    ADDRESS0=20.0.0.0

                    NETMASK0=255.255.0.0

                    GATEWAY0=192.168.3.1

                    ADDRESS1=30.0.0

                    NETMASK1=255.255.0.0

                    GATEWAY1=192.168.3.1

                    ADDRESS1=0.0.0.0

                    NETMASK1=0.0.0.0

        4. ip addr 之外,ifconfig或配置檔案都可以

            (1)ifconfig IFACE_LABEL IPADDR/NETMASK

                IFACE_LABEL: eth0:1,eth0:2,...

            (2)永久添加多個位址

                cp ifcfg-eno16777736 ifcfg-eno16777736:0

                vim ifcfg-eno16777736:0

                    TYPE=Ethernet

                    BOOTPROTO=none  //不能為dhcp等動态,隻能手動指定,static或者none

                    DEFROUTE=yes

                    IPV6INIT=no

                    DEVICE=eno16777736:0

                    ONBOOT=yes

                    IPADDR=192.168.3.110

                    PREFIX=24

    nmcli指令

    nmctl [options] OBJECT {COMMAND|help}

        device :顯示和管理網絡接口

            nmctl device show|status|disconnect|connect

        connection:COMMAND := { show | up | down | add | edit | modify | delete | reload | load }

            nmcli conn show    

            edit //修改各種屬性

            nmcli conn modify eno16777736 +ipv4.address 192.168.0.100

            nmcli conn up eno16777736

        如何修改IP位址等屬性

            nmcli conn modify IFACE [+|-]setting.property value

                ipv4.address

                ipv4.gateway

                ipv4.dns1

                ipv4.method

                    manual

    使用nmtui就行了,nm指令比較難用

五、TCP FSM        

附件:tcp FSM :TCP Finite State Machine //TCP的有限狀态機制

    CLOSED 呈阻塞、關閉狀态,表示主機目前沒有活動的傳輸連接配接或正在進行傳輸連接配接

    LISTEN 呈監聽狀态,表示伺服器正在等待新的傳輸連接配接進入

    SYN RCVD 表示主機已收到一個傳輸連接配接請求,但尚未确認

    SYN SENT 表示主機已經發出一個傳輸連接配接請求,等待對方确認

    ESTABLISHED 傳輸連接配接建立,通信雙方進入正常資料傳輸狀态

    FIN WAIT 1(主動關閉)主機已經發送關閉連接配接請求,等待對方确認 //我已發送關閉請求

    FIN WAIT 2(主動關閉)主機已收到對方關閉傳輸連接配接确認,等待對方發送關閉傳輸連接配接請求 //已經收到對方關閉确認,等待對方關閉傳輸請求

    TIMED WAIT 完成雙向傳輸連接配接關閉,等待所有分組消失        //等待分組完成

    CLOSING 雙方同時嘗試關閉傳輸連接配接,等待對方确認        //等待對方确認

    CLOSE WAIT(被動關閉)收到對方發來的關閉傳輸連接配接請求,并已确認  //被

    LAST ACK (被動關閉)等待最後一個關閉傳輸連接配接确認,并等待所有分組消失

<a href="https://s2.51cto.com/oss/201710/29/b6ffc5cc711700af092f8c7b82e785c4.png" target="_blank"></a>

本文轉自MT_IT51CTO部落格,原文連結:http://blog.51cto.com/hmtk520/1977185,如需轉載請自行聯系原作者

繼續閱讀