Linux网络

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络相关的知识,希望对你有一定的参考价值。

一、Linux网络命令分类
二、ifcfg家族
三、iproute2家族
四、nmtui家族
五、TCP FSM




一、Linux网络命令分类
分类:
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    
    
    
二、ifcfg家族
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;详细
    [[email protected] ~]# 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 //反向解析
            
三、iproute2家族
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
                [[email protected] 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:
                vim /etc/sysconfig/network-scripts/route-eno16777736
                    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
                    GATEWAY1=192.168.3.1
                systemctl restart network.service
        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
                service network restart
                
四、nmtui家族
    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 (被动关闭)等待最后一个关闭传输连接确认,并等待所有分组消失
    
技术分享
    



本文出自 “黑马腾空” 博客,请务必保留此出处http://hmtk520.blog.51cto.com/12595610/1977185

以上是关于Linux网络的主要内容,如果未能解决你的问题,请参考以下文章

linux 查看当前的网络配置

linux网络设置

Kali Linux该怎么进行网络配置

理解 Linux 网络栈 (Linux networking stack):Linux 网络协议栈简单总结

linux如何消耗网络流量?

Linux高级网络编程系列教程