9.6_Linux網絡管理命令的使用

網絡管理命令


ip命令

配置Linux網絡屬性:ip命令,不過該命令的操作只是臨時操作,重啓以後配置丟失

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


ip [ OPTIONS ] OBJECT { COMMAND | help }

        OBJECT := { link | addr | route }


示例:

   ip link - network device configuration

    set dev IFACE

    可設置屬性:

        up and down:激活或禁用指定接口

        ifup/ifdown    

    show [dev IFACE]:指定接口

       [up]:僅顯示處於激活狀態的接口


示例1:顯示所有接口的狀態

wKiom1fPzc3D7Tk7AABA7dqvzYQ295.png

示例2:關閉eth1口,然後顯示eth1接口的狀態,而後顯示其他狀態是up的接口

wKiom1fP0KqQGnEVAABfZHPOyic966.pngwKiom1fP2CuTrWgAAAAjOQyeE5U978.png


ip addr { add | del | change } IFADDR dev STRING

    [label LABEL]:添加地址時指明網卡別名

    [scope {global|link|host}]:指明作用域

        global: 全局可用;

        link: 僅鏈接可用;

        host: 本機可用;

    [broadcast ADDRESS]:指明廣播地址

ip address show -look at protocol addresses

    [dev DEVICE]

    [label PATTERN]

    [primary and secondary]

ip address flush -使用格式同show

ip addr add 172.16.0.100/16 dev eth2 label eth2

ip addr del 172.16.0.100/16 dev eth2 label eth2

ip addr flush dev eth2 label eth2


示例1:使用ip addr命令添加一個ip

wKiom1fP3E-he7uNAAC4j9UR8j0274.png示例2:改變eth2的ip地址

wKiom1fP3XDDTbCWAACRFOsjy8A532.png示例3:刪除eth2的ip信息

wKiom1fP3yGjd6nCAABOs20m22w900.png示例4:此命令不會保存在配置文件中,只是暫時存放在內存裏面,使用請注意

wKiom1fP30eBl5mAAABdiuq2um8208.png


ip route - routing table management

    添加路由:ip route add

           ip route add TARGET via GW dev IFACE srcSOURCE_IP

            TARGET:

            主機路由:IP

            網絡路由:NETWORK/MASK

        ip route add 192.168.0.0/24 via 172.16.0.1

        ip route add 192.168.1.13 via 172.16.0.1

    添加網關:ip route add default via GW dev IFACE

         ip route add default via 172.16.0.1 

    刪除路由:ip route delete

         ip route del TARGET

    顯示路由:ip route show|list

    清空路由表:ip route flush [dev IFACE] [via PREFIX]

          ip route flush dev eth0


示例1:添加172.16.0.0/16的路由

wKiom1fP-SbDyG9XAABkd_gqtYo117.png示例2:添加一個網關

wKioL1fP-suQVPyZAABAjaZGsl0334.png

示例3:刪除默認網關路由

wKiom1fP-oLBZNbFAAA5z1Pu-ew143.png

示例4:刪除相關的所有路由

wKiom1fQAUqxHmGIAAANGaT0zx0479.png


netstat命令:

顯示網絡鏈接

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

常用選項:

   -t: tcp協議相關

   -u: udp協議相關

   -w: raw socket相關

   -l: 處於監聽狀態

   -a: 所有狀態

   -n: 以數字顯示IP和端口;

   -e:擴展格式

   -p: 顯示相關進程及PID


常用組合:

-tan, -uan, -tnl, -unl,-rn,tnlp


顯示路由表:

netstat {--route|-r} [--numeric|-n]

   -r: 顯示內核路由表

   -n: 數字格式


顯示接口統計數據:

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

# netstat -i

# netstat -IIFACE


示例1:查看所有tcp協議的狀態

wKioL1fPwsWSlGuJAADR8tYJZLs130.png

示例2:查看所有udp的協議狀態

wKioL1fPylzTkqRtAAA975kMH64630.png

示例3:查看所有正在監聽的tcp協議

wKiom1fPxf_D60wJAABeLsIfPWU229.png

示例4:查看所有正在監聽的udp協議

wKioL1fPxgCC9P7AAAA9gzeXMQM097.png

示例5:查看所有tcp和udp協議狀態以及進程號

wKioL1fPxrvjVlK6AAC5EOuCj8g118.png


ss命令

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

netstat通過遍歷proc來獲取socket信息,ss使用netlink與內核tcp_diag模塊通信獲取socket信息。

選項:

    -t: tcp協議相關

    -u: udp協議相關

    -w: 裸套接字相關

    -x:unixsock相關

    -l: listen狀態的連接

    -a: 所有

    -n: 數字格式

    -p: 相關的程序及PID

    -e: 擴展的信息

    -m:內存用量

    -o:計時器信息


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

  TCP的常見狀態:

    tcpfinite state machine:

    LISTEN: 監聽

    ESTABLISHED:已建立的連接

    FIN_WAIT_1

    FIN_WAIT_2

    SYN_SENT

    SYN_RECV

    CLOSED

EXPRESSION:

  dport=

  sport =

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

常用組合:

-tan, -tanl, -tanlp, -uan,tunl


常見用法示例:

ss -l 顯示本地打開的所有端口

wKioL1fQDc6BTqeIAABXY2eiEbc482.png

ss -pl 顯示每個進程具體打開的socket

wKiom1fQDjnz49SGAACgHpHhWZw043.png

ss -t -a 顯示所有tcp socket

wKioL1fQDnOQChyAAABchWfo18U454.png

ss -u -a 顯示所有的UDP Socekt

wKiom1fQEA-TBGqwAABAdJD6OGU519.pngss -o state established '( dport = :ssh or sport = :ssh )' 顯示所有已建立的SSH連接

wKioL1fQEAaxpP5AAAAlBQDP6R4492.png

ss -s 列出當前socket詳細信息:

wKiom1fQD_6hUjEDAAAus2wAaHE057.png

ss -o state established '( dport = :smtp or sport = :smtp )' 顯示所有已建立的SMTP連接

ss -o state established '( dport = :http or sport = :http )' 顯示所有已建立的HTTP連接ss -x src /tmp/.X11-unix/* 找出所有連接X服務器的進程


nmcli命令(注意,此命令只適用於CentOS 7的版本,6版本的這個命令並不好使)

地址配置工具:nmcli

nmcli[ OPTIONS ] OBJECT { COMMAND | help }

    device -show and manage network interfaces

    nmcli device help

    connection -start, stop, and manage network connections

    nmcli connection help

修改IP地址等屬性:

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

    setting.property:

    ipv4.addressesipv4.gateway

    ipv4.dns1 ipv4.methodmanual | dhcp

修改配置文件執行生效:systemctl restart network

           nmcli con reload

nmcli命令生效:nmcli con down eth0 ;nmcli con up eth0


示例1:新增網卡,設置它的IP地址

添加了一個新的網卡,系統自動識別爲eth1,網卡名字Wired connetion 1,此處作用的是NetworkManager,否則新建一個網卡的時候應該沒有名字。

wKiom1fSZETylJ6KAAAuFAPoTAo047.png

此處我清理掉上圖的信息,此時查看接口的狀態

wKioL1fUtzbAGap4AABOLHu9Ux4938.png添加網卡信息,設置該網卡爲手動設置,配置ip地址,網關,dns,開機自動啓動,此處會生成配置文件

wKioL1fUtGPx_b5_AADVHgm7wM0101.png

配置完看了一下,ip已經起來了,連服務都沒重啓呢。並且測試過連通性也是沒問題

wKioL1fUv0vCZhUEAABdVzJ0ZwY856.png


wKiom1fUwH6wGdU4AACS-IsZ9ng177.png


示例2:新增綁定一個新的配置文件home和ip地址,但是我們發現,此處文件並沒有綁定接口wKiom1fUwazArxdnAABXW57U9pM851.png

此處用nmcli device status可以看見接口eht1已經是工作中,但是此命令不能看見接口綁定的是哪個配置文件,我們發現ip還是以前的ip

wKiom1fUwa_zCkQUAABu4V9U6_I889.png

此處用nmcli con up home的命令啓用接口,然後我們發現eth1接口此時用的是home的配置文件,這樣的話就可以把接口切換過來

wKioL1fUwbPyIM7jAAChP24aclw003.png

也可以用nmcli con down +conf文件這樣方式來切換

wKioL1fUwbTzhlsOAACiKEJP6U0844.png

如果對以上的配置文件有需要自己改動的地方,則手動編輯之,然後輸入nmcli con reload命令重新導入配置文件即可。例如編輯ip地址和網卡的NAME

wKioL1fUxDrRfVUMAABKchA8z-w985.png

編輯完,配置文件並不會馬上生效,我們可以用nmcli con reload的命令重新加載配置文件,發現網卡的NAME屬性已經生效,但是ip還是沒有改變

wKiom1fUxD3ifWEiAADakiamJCA552.png

此處重啓網絡服務,ip已經起來了。

wKioL1fUxEHjPSZCAABVzBSUK6s599.png


相關工具

網絡接口配置tui工具:nmtui(nmcli的圖形化工具,個人還是建議用命令的,此處不再演示)


使用nmcli配置網絡

NeworkManager是管理和監控網絡設置的守護進程

設備即網絡接口,連接是對網絡接口的配置。一個網絡接口可有多個連接配置,但同時只有一個連接配置生效。

顯示所有包括不活動連接

nmclicon show

顯示所有活動連接

nmclicon show –active

顯示網絡連接配置

nmclicon show "home"

顯示設備狀態

nmcli dev status

顯示網絡接口屬性

nmclidev show eno16777736(CentOS7的網卡的命名)

創建新連接home,IP自動通過dhcp獲取

nmclicon add con-name home type Ethernet ifname eth1

刪除連接

nmclicon del home

創建新連接eth1 ,指定靜態IP,不自動連接

nmcticon add con-name static ifname eth1 autoconnect no type Ethernet ip4 10.1.156.71/16 gw4 10.1.0.1

啓用home連接配置

nmcli con up home

啓用eth1連接配置

nmclicon up eth1

查看幫助

nmclicon add help

修改連接設置

nmcli con mod “eth1” connection.autoconnect no

nmcli con mod “eth1” ipv4.dns 10.1.0.1

nmcli con mod “eth1” +ipv4.dns 8.8.8.8

nmcli con mod “eth1” -ipv4.dns 8.8.8.8

nmcli con mod “eth1” ipv4.addresses “172.16.0.100 172.16.0.1”

nmcli con mod “eth1” +ipv4.addresses 10.10.10.10/16

wKioL1fQEp6wXTx8AADZwrHXyQo664.png

wKioL1fQEm-xWU4WAAFLjd09Ixs240.png

設備配置被保存在文本文件中

/etc/sysconfig/network-scripts/ifcfg-<name>

幫助文檔列出完整選項列表:/usr/share/doc/initcripts-*/sysconfig.txt

wKiom1fQEkTxznArAAC_aiuWwfY364.png

修改連接配置後,需要重新加載配置

nmcli con reload

nmcli con down “system eth0” 可被自動激活

nmcli con up “system eth0”

nmcli dev dis eth0 禁用網卡,訪止被自動激活


示例2:新增綁定一個新的配置文件home和ip地址,但是我們發現,此處文件並沒有綁定接口wKiom1fUwazArxdnAABXW57U9pM851.png

此處用nmcli device status可以看見接口eht1已經是工作中,但是此命令不能看見接口綁定的是哪個配置文件,我們發現ip還是以前的ip

wKiom1fUwa_zCkQUAABu4V9U6_I889.png

此處用nmcli con up home的命令啓用接口,然後我們發現eth1接口此時用的是home的配置文件,這樣的話就可以把接口切換過來

wKioL1fUwbPyIM7jAAChP24aclw003.png

也可以用nmcli con down +conf文件這樣方式來切換

wKioL1fUwbTzhlsOAACiKEJP6U0844.png

如果對以上的配置文件有需要自己改動的地方,則手動編輯之,然後輸入nmcli con reload命令重新導入配置文件即可。例如編輯ip地址和網卡的NAME

wKioL1fUxDrRfVUMAABKchA8z-w985.png

編輯完,配置文件並不會馬上生效,我們可以用nmcli con reload的命令重新加載配置文件,發現網卡的NAME屬性已經生效,但是ip還是沒有改變

wKiom1fUxD3ifWEiAADakiamJCA552.png

此處重啓網絡服務,ip已經起來了。

wKioL1fUxEHjPSZCAABVzBSUK6s599.png

刪除home的配置文件

wKiom1fUy66yUBCrAAA0KD_4NYI415.png

修改網卡開機自動鏈接爲no

nmcli con mod “work” connection.autoconnect no

wKiom1fUzOzR4GPEAABS_JKIUH4467.png

wKiom1fUzMuRwiUeAABvTOLDumg690.png

設置DNS地址

nmcli con mod “work” ipv4.dns 10.1.0.1

wKioL1fUzVewgABMAABxNCoRST0745.png增加一組DNS地址

nmcli con mod “work” +ipv4.dns 8.8.8.8

wKioL1fUzbez-Q8gAAB_jIKvL-s692.png刪除掉8.8.8.8的dns

nmcli con mod “work” -ipv4.dns 8.8.8.8

wKiom1fUzybTx70MAABx25nTn8I765.png

修改ip到其他地址

nmcli con mod “work” ipv4.addresses “172.16.0.100/24 ipv4.gateway 172.16.0.1”

wKiom1fUzyrhFf9kAAB69qQflc8456.png

增加一個ip地址

nmcli con mod “work” +ipv4.addresses 10.1.156.71wKioL1fUzzDCiu2vAAB_6aMpqBE233.png

注意:以上的修改操作並不會馬上生效,生效需要重啓網卡服務systemctl restart network


圖形工具(此工具只能在圖形界面下面啓動)

nm-connection-editor


網絡組Network Teaming(同樣只適用於CentOS 7)

網絡組:是將多個網卡聚合在一起方法,從而實現冗錯和提高吞吐量

網絡組不同於舊版中bonding技術,提供更好的性能和擴展性

網絡組由內核驅動和teamd守護進程實現.

多種方式runner

broadcast 廣播

roundrobin 循環

activebackup 備份

loadbalance 負載均衡

lacp 接口聚合(implements the 802.3ad Link Aggregation Control Protocol) 


網絡組

啓動網絡組接口不會自動啓動網絡組中的port接口

啓動網絡組接口中的port接口不會自動啓動網絡組接口

禁用網絡組接口會自動禁用網絡組中的port接口

沒有port接口的網絡組接口可以啓動靜態IP連接

啓用DHCP連接時,沒有port接口的網絡組會等待port接口的加入


創建網絡組接口

nmclicon add type team con-name CNAME ifname INAME [config JSON]

   CNAME爲連接名,INAME爲接口名

   JSON爲指定runner方式

   格式:'{"runner": {"name": "METHOD"}}'

   METHOD可以是broadcast,roundrobin,activebackup,loadbalance,lacp.


創建網絡組接口實例

首先創建網絡組接口,名爲team0的接口,模式爲備份模式

nmcli con add type team con-name team0 ifname team0 

config ‘{"runner": {"name": "activebackup"}}'

wKioL1fVDqSB9cdhAABYnBmdpZE252.png

wKiom1fVDqbC_suKAAC7aFIGY2E838.png

給接口配置ip地址等信息

nmcli con mod team0 ipv4.addresses 10.1.156.156/16

nmcli con mod team0 ipv4.method manualwKioL1fVDqeDvoIIAACAC49iMAI212.png


創建port接口

nmcli con add type team-slave con-name CNAME ifname INAME master TEAM 

   CNAME連接名,INAME網絡接口名,TEAM網絡組接口名.

連接名若不指定,默認爲team-slave-IFACE.

nmcli device disconnect INAME 關閉指定的真實接口

nmcli connection up CNAME 指定配置文件的接口up

   INAME設備名CNAME網絡組接口名或port接口


網絡組實例

nmcli con add type team-slave ifname eth0 master team0

nmcli con add type team-slave ifname eth1 master team0 con-name team0-eth1

nmcli con up team0 啓用team0接口

nmcli dev dis eth0 關閉掉原來的接口

teamdctl team0 state

wKioL1fVHVGwzHOVAACNCrovp8w616.png

wKiom1fVHvbBQY6sAABSsAqQx2Y339.png


完整示例:創建網絡組

首先創建網絡組接口,名爲team0的接口,模式爲備份模式

nmcli con add type team con-name team0 ifname team0 

config ‘{"runner": {"name": "activebackup"}}'

wKioL1fVDqSB9cdhAABYnBmdpZE252.png

wKiom1fVDqbC_suKAAC7aFIGY2E838.png

給接口配置ip地址等信息

nmcli con mod team0 ipv4.addresses 10.1.156.156/16

nmcli con mod team0 ipv4.method manualwKioL1fVDqeDvoIIAACAC49iMAI212.png

創建port接口

nmcli con add type team-slave con-name team0-eth0 ifname eth0 master team0

nmcli con add type team-slave con-name team0-eth1 ifname eth1 master team0

wKioL1fVHVGwzHOVAACNCrovp8w616.png

wKiom1fVHvbBQY6sAABSsAqQx2Y339.png

啓用team0接口,但是可以看見port的接口的配置文件還沒有生效

wKioL1fVIjvjjpwNAABpuVo2Sko560.png

使port接口生效,有兩種方法

第一種:直接關閉掉原來的接口

wKiom1fVHzmRxviSAAAJk75uJvY554.png

第二種:直接nmcli connection up 指定port接口配置文件,此處用第二種

wKioL1fVHzrhPYDvAAAPeftJ7l8507.png

可以看見接口已經起來了

wKiom1fVHzvwyOUpAAAcJxgMZbU264.png

此時可以用teamdctl team0 state的命令來查看網絡組接口的狀態,發現接口已經起來了

此時的主端口是eth1

wKioL1fVHzvg42DCAAAT3Bwu03g764.png

首先測試一下ping team0口來看看連通性,發現是通的

wKiom1fVHz7STeYHAAEa5Sm6Sxs418.png

此時斷開eth1,然後再查詢teamdctl team0 state命令

可以看見eth1已經斷開,此時作用的是eth0

wKioL1fVHz-xST9AAAAVCILaKZg481.png

重新鏈接eth1,再斷開eth0,然後再查詢teamdctl team0 state命令

可以看見eth0已經斷開,此時作用的是eth1

wKiom1fVHz_BMZc4AAAVSZZ4R5M889.png

最後,重新鏈接eth0,然後再查詢teamdctl team0 state命令

可以看見eth0已經鏈接上,此時作用的是eth1,此時實驗完畢

wKioL1fVH0CAe_f2AAAXQSDsWKw158.png

寫在最後:由於虛擬機的關係,對此命令實現的效果有問題,所以後面測試的就不截圖了,只保存接口狀態的的截圖了。

如果需要測試接口的話,也可以用watch -n1 'netstat -Ieth0'和watch -n1 'netstat -Ieth1'同時查看接口的流量狀態,可以發現是,只有active port的接口纔會有流量,當actice port接口斷開切換到另外一個接口的時候,另外一個接口纔會有流量

wKioL1fVH0ChhUk2AAAO1LdYdhQ239.png

此時作用的是eth0,可以對比兩個圖,可以發現只有eth0接口的流量有變化

wKioL1fVJWvzsuQRAACLXVUR-iY117.png

此處關擦eth0接口的接收RX和發送TX流量變化

wKiom1fVJWzTRtvNAACHpmSse5Y839.png


使用nmcli配置主機名

rhel6之前主機名配置文件:/etc/sysconfig/network

rhel7.0主機名配置文件:/etc/hostname ,默認沒有這個文件,通過DNS反向解析獲取主機名,主機名默認爲:localhost.localdomain

顯示主機名信息

hostname

hostnamectl status

創建並修改文件並生效

hostnamectlset-hostname desktopX.example.com

刪除文件,恢復主機名localhost.localdomain

DNS設置,存放在/etc/resolv.conf文件中

PEERDNS=no 表示當IP通過dhcp自動獲取時,dns仍是手動設置,不自動獲取。等價於下面命令:

nmclicon mod “system eth0” ipv4.ignore-auto-dns yes


示例:設置主機名

查看此時計算機名狀態,此時是centos.localdomain

wKiom1fUx-Pzze4QAABFB4PuCQ0993.png

改一個主機名,可以看見,馬上生效了,這點比起CentOS6上面還是要方便不少

wKiom1fUx_CxlSQXAAB2E3VGNz0947.png


測試網絡命令

在命令行下測試網絡的連通性

顯示主機名

    hostname

測試網絡連通性

    ping

    mtr

顯示正確的路由表

    ip route

確定名稱服務器使用:

    nslookup

    host

    dig

跟蹤路由

    traceroute

    Tracepath


網絡客戶端工具

lftp, ftp, lftpget, wget

    lftp [-p port] [-u user[,password]] SERVER

子命令:

    get、mget、ls、help

lftp

   put  單個文件上傳

   get  單個文件下載,可以補全,ftp的不能

   mget  多個東西下載,也可以支持補全,支持通配符

   mput  多個上傳


ftp FTP  

  如果需要匿名登陸,可以使用anonymous或者ftp,密碼是空密碼或者隨便一個

  pwd 顯示在ftp裏面的目錄

  lcd 顯示本機當前的位置

    lcd PATH:切換到其他的下載目錄

        在ftp裏面下載的東西的話默認會下載到lcd的目錄

  get 文件名:下載文件指令,如果文件名有空格,需要在文件名前後加上“”雙引號

  cd 切換目錄 

  passive 切換ftp的工作模式,默認是主動模式,通信時候使用端口20傳文件,21收文件。

      被動模式的時候使用一個大端口號。

  help 列出所有的在ftp裏面的命令,非本地

  quit 退出


ftp和lftp都是交互式


在ftp裏面,需要對本地操作,可以再命令前面加上歎號!,如!pwd,作用同在ftp裏面輸入lcd

ftp 支持通配符


ftp和lftp都是交互式,不能卸載腳本里面


lftpget URL 下文件,並且支持多點續傳,多線程下載


wget 可以下載ftp資源和http資源

wget [option]... [URL]...

    NAME_A TO NAME_B 改名

    -q: 靜默模式

    -c: 斷點續傳

    -O: 保存位置

    --limit-rates=: 指定傳輸速率


links 連接,可以當瀏覽器

   links url [option]

    --dump 抓取網站文字 ex. links a.com > a.txt

    --source 抓取網站源碼


curl 網址 直接看源碼

    -I 查看網站各種信息


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