Linux网络管理及命令详解

ifconfigios

    ifconfig是传统的网络管理命令,用于查看和配置网络接口,常规使用方法以下:
express

        ifconfig [-a] :用于查看当前全部网络接口的状态,-a可省略
bash

[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500               #网络接口名、状态、最大传输单元
        inet 192.168.254.148  netmask 255.255.255.0  broadcast 192.168.254.255  #IP地址、子网掩码、组播地址
        inet6 fe80::20c:29ff:fe1f:3407  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1f:34:07  txqueuelen 1000  (Ethernet)                    #MAC地址、网络类型
        RX packets 9784  bytes 6661801 (6.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3204  bytes 334670 (326.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536                                    #本地回还测试网卡
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 8  bytes 704 (704.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 704 (704.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:b9:d3:ee  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        ipconfig INTERFACE:用于查看具体某个网路接口的信息
服务器

[root@localhost ~]# ifconfig eno16777736
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.254.148  netmask 255.255.255.0  broadcast 192.168.254.255
        inet6 fe80::20c:29ff:fe1f:3407  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1f:34:07  txqueuelen 1000  (Ethernet)
        RX packets 10412  bytes 6710915 (6.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3386  bytes 363486 (354.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


        ifconfig INTERFACE [up|down]:启用和关闭某网络接口网络

    使用ifconfig配置IP地址的两种方法
dom

        ifconfig INTERFACE ip/mask [up],例如:ifconfig eno16777736 192.168.100.100/24
ssh

        ifconfig INTERFACE ip mask  例如ifconfig eno16777736 192.168.100.100 255.255.255.0
socket

        以上两种方法配置IP地址可当即生效,可是重启network服务或重启电脑后就会失效。
tcp

    能够经过 ifconfig [-]promisc 来开启或关闭混杂模式,混杂模式主要用于网络抓包
ide

        ifconfig promisc :开启混杂模式

        ifconfig -promisc: 关闭混杂模式

 

route

    route命令主要用于路由查看、建立、修改、删除等管理操做,具体用法以下:

        route -n :查看路由状态

[root@localhost ~]# route -n
Kernel IP routing table
Destination(目标)   Gateway(网关)    Genmask(掩码)    Flags(状态,U表明启用,G表明从网关链接,H表明仅链接到某主机) Metric(路由开销) Ref    Use   Iface(网络接口名称)
0.0.0.0              192.168.254.2       0.0.0.0              UG                                                            100                0      0   eno16777736
192.168.122.0        0.0.0.0             255.255.255.0        U                                                             0                  0      0   virbr0
192.168.254.0        0.0.0.0             255.255.255.0        U                                                             100                0      0   eno16777736

        route add :增长路由条目。

            格式:route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If] -net为网络路由,-host为主机路由

            示例1:增长一条主机路由,目标:10.10.10.1  子网掩码:255.255.255.0  网关:192.168.254.2

[root@localhost ~]# route add -host 10.10.10.1 gw 192.168.254.2 dev eno16777736
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.254.2   0.0.0.0         UG    100    0        0 eno16777736
10.10.10.21     192.168.254.2   255.255.255.255 UGH   0      0        0 eno16777736
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.254.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736

            示例2:增长一条网络路由,目标:10.10.10.0 子网掩码:255.255.255.0  网关:192.168.254.2

[root@localhost ~]# route add -net 10.10.10.0/24 gw 192.168.254.2 dev eno16777736
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.254.2   0.0.0.0         UG    100    0        0 eno16777736
10.10.10.0      192.168.254.2   255.255.255.0   UG    0      0        0 eno16777736
10.10.10.21     192.168.254.2   255.255.255.255 UGH   0      0        0 eno16777736
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.254.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736

        route del:删除路由条目

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

            示例1:删除一条主机路由,目标:10.10.10.1 子网掩码:255.255.255.0  网关:192.168.254.2 

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.254.2   0.0.0.0         UG    100    0        0 eno16777736
10.10.10.0      192.168.254.2   255.255.255.0   UG    0      0        0 eno16777736
10.10.10.21     192.168.254.2   255.255.255.255 UGH   0      0        0 eno16777736
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.254.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
[root@localhost ~]# route del 10.10.10.21
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.254.2   0.0.0.0         UG    100    0        0 eno16777736
10.10.10.0      192.168.254.2   255.255.255.0   UG    0      0        0 eno16777736
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.254.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736

            示例2:删除一条网络路由,目标:10.10.10.0 子网掩码:255.255.255.0  网关:192.168.254.2

[root@localhost ~]# route del -net 10.10.10.0/24
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.254.2   0.0.0.0         UG    100    0        0 eno16777736
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.254.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736

            Tip:删除主机路由条目时可 [-host] 和[netmask]可省略,进指定删除的目标IP便可,删除网络路由时[-net]和[netmask]均不能省略。

 

DNS设置与解析

    通常本地会从/etc/resolv.conf文件中读取DNS信息,文件内容以下:

 # Generated by NetworkManager
search localdomain
nameserver 192.168.21.2         #格式为nameserver  DNS地址,共计能够设置三个DNS地址。

     DNS正解,FQDN-->IP

        dig -t A FQDN :将FQDN解析为IP地址

[root@localhost ~]# dig -t A n-test.testAD.com
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> -t A n-wangyanglin.zjipst.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43502
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0005 , udp: 4000
;; QUESTION SECTION:
;n-test.testAD.com.      IN      A
;; ANSWER SECTION:
n-test.testAD.com. 5     IN      A       192.168.252.235
;; Query time: 26 msec
;; SERVER: 192.168.21.2#53(192.168.21.2)
;; WHEN: Sat May 06 16:04:21 CST 2017
;; MSG SIZE  rcvd: 69

        host -t A FQDN(计算机名):将FQDN(计算机名)解析为IP地址

[root@localhost ~]# host -t A n-test.testAD.com
n-test.testAD.com has address 192.168.252.235

    DNS反解,IP-FQDN

        dig -x ip-address:将ip地址解析为FQDN名

[root@localhost ~]# dig -x 115.239.210.27
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> -x 115.239.210.27
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 59372
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0005 , udp: 4000
;; QUESTION SECTION:
;27.210.239.115.in-addr.arpa.   IN      PTR
;; AUTHORITY SECTION:
239.115.in-addr.arpa.   5       IN      SOA     ns.zjnbptt.net.cn. root. 2017021401 3600 1800 604800 3600
;; Query time: 29 msec
;; SERVER: 192.168.21.2#53(192.168.21.2)
;; WHEN: Sat May 06 16:10:21 CST 2017
;; MSG SIZE  rcvd: 113

        host -t PTR IP地址:将IP地址解析为FQDN名

[root@localhost ~]# host -t PTR 192.168.254.2
2.192.168.254.in-addr.arpa domain name pointer AD03.test.com.

 

netstat

    netstat命令主要用于显示网络链接、路由表、网络接口状态等相关参数

    显示网络链接

        格式:netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]]  [--program|-p]

        参数:

             -t: tcp协议相关
             -u: udp协议相关
             -w: raw socket相关
             -l: 处于监听状态
             -a: 全部状态
             -n: 以数字显示IP和端口;
             -e:扩展格式
             -p: 显示相关进程及PID

        经常使用组合

            -tan:显示TCP协议相关链接的全部状态信息,IP地址和端口号以数字显示

            -tnl:显示TCP协议相关处于坚挺状态的全部链接信息,IP地址和端口已数字显示

            -uan:显示UDP协议相关链接的全部状态信息,IP地址和端口号以数字显示

            -unl:显示UDP协议相关处于坚挺状态的全部链接信息,IP地址和端口已数字显示

    显示路由表

        格式:netstat  {--route|-r} [--numeric|-n]

        参数:

             -r: 显示内核路由表
             -n: 数字格式

    显示接口统计数据

        格式:netstat  {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]

 

IP

    用户查看和配置网络接口、路由、设备、策略路由及隧道

    格式:ip [ OPTIONS ] OBJECT { COMMAND | help }

             OBJECT := { link | addr | route }

    IP link:用于网络设备链路配置

        子命令

            set DEV {up|down}:将某个网络接口关闭或开启

 [root@localhost ~]# ip link set eno16777736 down;ip link set eno16777736 up

            show DEV :查看指定设备,若不加DEV,默认显示全部网络接口

            show up :查看出于开启状态的网络设备

    IP addr:用户管理网络地址和相关协议

        格式:ip addr { add | del } IFADDR dev STRING

            示例1:为网卡eno16777736增长一个IP地址192.168.100.100/24

[root@localhost ~]# ip addr add 192.168.100.100/24 dev eno16777736
[root@localhost ~]# ip addr show dev eno16777736
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:1f:34:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.21.128/24 brd 192.168.21.255 scope global dynamic eno16777736
       valid_lft 1116sec preferred_lft 1116sec
    inet 192.168.100.100/24 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe1f:3407/64 scope link 
       valid_lft forever preferred_lft forever

             示例2:将网卡eno16777736上的IP地址192.168.100.100/24删除

[root@localhost ~]# ip addr del 192.168.100.100/24 dev eno16777736
[root@localhost ~]# ip addr show eno16777736
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:1f:34:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.21.128/24 brd 192.168.21.255 scope global dynamic eno16777736
       valid_lft 1382sec preferred_lft 1382sec
    inet6 fe80::20c:29ff:fe1f:3407/64 scope link 
       valid_lft forever preferred_lft forever

            示例3:将网卡eno16777736的IP地址改成192.168.100.100/24

        ip addr { add | del } IFADDR dev STRING

            label LABEL:配置IP地址时能够为该接口指定标注

            [scope {global|link|host}]:指明做用域
               global: 全局可用;
               link: 仅连接可用;
               host: 本机可用;
            broadcast ADDRESS]:指明广播地址

        ip addr show: 查看指定网络接口的协议和IP地址的相关信息。子命令以下

            [dev]:查看指定网络设备

            [label]:经过网络设备标注查看指定网络设备

            [primary and secondary] :查看主网络设备和次网络设备。

        ip address flush - 清空协议和IP地址。
            使用格式同show

 

    ip route:管理路由表。子命令以下:

        增长路由:ip route add TARGET via GW dev IFACE src SOURCE_IP  。 主机路由TARGET仅填写IP地址便可,网络路由TARGET必须填写 IP/netmask

            示例1:增长一条主机路由,主机IP地址为10.10.10.21

[root@localhost ~]# ip route add 10.10.10.21 via 192.168.1.103 dev eno16777736 src 192.168.1.100 
[root@localhost ~]# ip route show dev eno16777736
default via 192.168.21.2  proto static  metric 100 
10.10.10.21 via 192.168.1.103  src 192.168.1.100 
192.168.1.0/24  proto kernel  scope link  src 192.168.1.100 
192.168.1.0/24  proto kernel  scope link  src 192.168.1.100  metric 100 
192.168.21.0/24  proto kernel  scope link  src 192.168.21.128  metric 100

            示例2:增长一条网络路由,主机网络地址为10.10.10.0/24

[root@localhost ~]# ip route add 10.10.10.0/24 via 192.168.1.103 src 192.168.1.100 
[root@localhost ~]# ip route show dev eno16777736
default via 192.168.21.2  proto static  metric 100 
10.10.10.0/24 via 192.168.1.103  src 192.168.1.100 
10.10.10.21 via 192.168.1.103  src 192.168.1.100 
192.168.1.0/24  proto kernel  scope link  src 192.168.1.100 
192.168.1.0/24  proto kernel  scope link  src 192.168.1.100  metric 100 
192.168.21.0/24  proto kernel  scope link  src 192.168.21.128  metric 100

        删除路由:ip route add TARGET

    ip route show:查看当前路由表

    ip route flush:清空路由表

        dev IFACE:指定接口

        via PREFIX:指定网关

 

ss

    功能:ss的功能和netstat相似,可是更强大,能够用来查看网路接口、路由表、网络链接等相关参数

    格式:ss [OPTION]... [FILTER]

        option参数:

            -t: tcp协议相关
            -u: udp协议相关
            -w: 裸套接字相关
            -x:unix sock相关
            -l: listen状态的链接
            -a: 全部
            -n: 数字格式
            -p: 相关的程序及PID
            -e: 扩展的信息
            -m:内存用量
            -o:计时器信息

        FILTER=[ state TCP-STATE ] [ EXPRESSION ] :FILTER为模式过滤器,state为scoket状态,expression为相关表达式

            state主要有一下几种:

                LISTEN: 监听
                ESTABLISHED:已创建的链接
                FIN_WAIT_1:套接字已关闭,正在关闭链接[发送FIN,没有收到ACK也没有收到FIN]               

                FIN_WAIT_2:套接字已关闭,正在等待远程套接字关闭[在FIN_WAIT_1状态下收到发过去FIN对应的ACK]               

                SYN_SENT:  套接字正在试图主动创建链接[发送SYN后尚未收到ACK]             

                SYN_RECV:正在处于链接的初始同步状态[收到对方的SYN,但还没收到本身发过去的SYN的ACK               

                CLOSED:远程套接字已经关闭:正在等待关闭这个套接字[被动关闭的一方收到FIN]

            expression:

                 dport = 目标端口
                 sport = 原端口

                 示例:( dport = :ssh or sport = :ssh )’

       网路配置文件

 IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
    路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE

    /etc/sysconfig/network-scripts/ifcfg-IFACE:
        DEVICE:此配置文件应用到的设备;
        HWADDR:对应的设备的MAC地址;
        BOOTPROTO:激活此设备时使用的地址配置协议,经常使用的dhcp, static, none, bootp;
        NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
        ONBOOT:在系统引导时是否激活此设备;
        TYPE:接口类型;常见有的Ethernet, Bridge;
        UUID:设备的唯一标识;

        IPADDR:指明IP地址;
        NETMASK:子网掩码;
        GATEWAY: 默认网关;
        DNS1:第一个DNS服务器指向;
        DNS2:第二个DNS服务器指向;

        USERCTL:普通用户是否可控制此设备;
        PEERDNS:若是BOOTPROTO的值为“dhcp”,是否容许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;

   /etc/sysconfig/network-scripts/route-IFACE
        两种风格:
            (1) TARGET via GW

            (2) 每三行定义一条路由
                ADDRESS#=TARGET
                NETMASK#=mask
                GATEWAY#=GW

给网卡配置多地址:
            ifconfig:
                ifconfig IFACE_ALIAS
            ip
                ip addr add
            配置文件:
                ifcfg-IFACE_ALIAS
                    DEVICE=IFACE_ALIAS

            注意:网关别名不能使用dhcp协议引导;

给网卡配置多地址:
            ifconfig:
                ifconfig IFACE_ALIAS
            ip
                ip addr add
            配置文件:
                ifcfg-IFACE_ALIAS
                    DEVICE=IFACE_ALIAS

            注意:网关别名不能使用dhcp协议引导;

配置当前主机的主机名:
        hostname [HOSTNAME]

        /etc/sysconfig/network
        HOSTNAME=

    网络接口识别并命名相关的udev配置文件:
        /etc/udev/rules.d/70-persistent-net.rules

        卸载网卡驱动:
            modprobe -r e1000

        装载网卡驱动:
            modprobe e1000

CentOS 7网络属性配置

    传统命名:以太网eth[0,1,2,...], wlan[0,1,2,...]

    可预测功能

        udev支持多种不一样的命名方案:
            Firmware, 拓扑结构

    (1) 网卡命名机制
        systemd对网络设备的命名方式:
            (a) 若是Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1;
            (b) 若是Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1;
            (c) 若是硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0;
            (d) 若是用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56;
            (e) 上述均不可用时,则使用传统命名机制;

            上述命名机制中,有的须要biosdevname程序的参与;

    (2) 名称组成格式
        en: ethernet
        wl: wlan
        ww: wwan

        名称类型:
            o<index>: 集成设备的设备索引号;
            s<slot>: 扩展槽的索引号;
            x<MAC>: 基于MAC地址的命名;
            p<bus>s<slot>: enp2s1

    网卡设备的命名过程:
        第一步:
            udev, 辅助工具程序/lib/udev/rename_device, /usr/lib/udev/rules.d/60-net.rules

        第二步:
            biosdevname 会根据/usr/lib/udev/rules.d/71-biosdevname.rules

        第三步:
            经过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description
                ID_NET_NAME_ONBOARD, ID_NET_NAME_SLOT, ID_NET_NAME_PATH

    回归传统命名方式:
        (1) 编辑/etc/default/grub配置文件
            GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"

        (2) 为grub2生成其配置文件
            grub2-mkconfig -o /etc/grub2.cfg

        (3) 重启系统

    地址配置工具:nmcli
        nmcli  [ OPTIONS ] OBJECT { COMMAND | help }

            device - show and manage network interfaces

            connection - start, stop, and manage network connections

        如何修改IP地址等属性:
            #nmcli connection modify IFACE [+|-]setting.property value
                 setting.property:
                     ipv4.addresses
                     ipv4.gateway
                     ipv4.dns1
                     ipv4.method
                         manual

    网络接口配置tui工具:nmtui

    主机名称配置工具:hostnamectl
        status
        set-hostname

网络客户端工具:
        lftp, ftp, lftpget, wget

            # lftp [-p port] [-u user[,password]] SERVER
                子命令:
                    get
                    mget
                    ls
                    help

            # lftpget URL

            # ftp

            # wget                wget [option]... [URL]...                    -q: 静默模式                    -c: 续传                    -O: 保存位置                    --limit-rates=: 指定传输速率