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=: 指定傳輸速率

相關文章
相關標籤/搜索