Linux網絡基本管理

本文簡單梳理總結一下Linux網絡基本管理的經常使用命令,主要的目的是加深記憶吧。vim

 

網絡的基本概念這裏就很少說,從Linux主機接入網絡,以CentOS 7系統爲主,先簡單從網絡接口開始。bash

傳統的命名方式通常有下面兩種:服務器

    (1) 以太網:ethX, [0,1, …],例如eth0, eth1, ...網絡

    (2) PPP網絡:pppX, [0,1, ...], 例如ppp0, ppp1, ...socket


CentOS 7 上,網絡接口的命名方式發生了變化,再也不是以往的風格了,它用一種可預測的方案來命名,命名規則以下:tcp

(1) 若是FirmwareBIOS爲主板上集成的設備提供的索引信息可用,則根據此索引進行命名,如eno1, eno2, ...編輯器

(2) 若是FirmwareBIOSPCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1, ens2, ...ide

(3) 若是硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...工具

(4) 若是用戶顯式定義,也可根據MAC地址命名,例如enx122161ab2e10,...ui

(5) 上述均不可用,則仍使用傳統方式命名

命名格式由傳輸的介質類型和物理接口類型組成:

    按傳輸介質類型分:

        en : ethernet 以太網

        wl : wlan 無線局域網

        ww : wwan 無線廣域網

    物理接口類型分:

        o<index>: 集成設備的設備索引號

        s<slot>: 擴展槽的索引號

        x<MAC>: 基於MAC地址命名

        p<bus>s<slot>: 基於總線及槽的拓撲結構進行命名

 

說完接口命名,接下來開始具體說明經常使用工具的使用。

配置一臺Linux主機接入網絡,一是把主機設置爲動態獲取,須要依賴本地的DHCP服務;二是手動靜態配置。

與設置相關的命令有不少,下面大概梳理一下:

wKiom1Z-Xc2CW6J7AAApoPF8x4M248.png

下面分別介紹這三個家族命令的使用。

 

ifconfig命令:設置網絡接口

做用:接口及地址查看和管理

查看的查看的用法:

# ifconfig -a                //顯示全部接口,包括inactive狀態的接口
# ifconfig [INTERFACE]       //查看指定接口的狀態信息
        [root@localhost~]# ifconfig eno33554984


設定的經常使用用法:

# ifconfig INTERFACEIP/PREFIXLEN [up|down]
         [root@localhost ~]# ifconfigeno33554984 172.16.1.2/16
         [root@localhost ~]# ifconfigeno33554984 172.16.1.2/16 up
#ifconfig INTERFACE IP netmask NETMASK
         [root@localhost ~]# ifconfigeno33554984 172.16.1.2 netmask 255.255.0.0
#ifconfig INTERFACE [-]promisc
         [root@localhost ~]# ifconfigeno33554984 promisc     //開啓混雜模式
         [root@localhost ~]# ifconfigeno33554984 -promisc    //關閉混雜模式
# ifconfigINTERFACE_LABEL IPADDR/NETMASK
         [root@localhost ~]# ifconfigeno33554984:0 192.168.137.5/24    //labelipaddress


管理IPv6地址:

add addr/prefixlen
del addr/prefixlen

每條命令都會當即送往內核中的TCP/IP協議棧,並會當即生效。

 

route命令:路由查看及管理

路由條目類型:

    主機路由:目標地址爲單個IP

    網絡路由:目標地址爲IP網絡;

    默認路由:目標爲任意網絡,0.0.0.0/0.0.0.0

 

查看:

# route -n

    

添加:

# route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If]
    # route add-net  10.0.0.0/8  gw 192.168.10.1  dev  eth1
    # route add  -net  0.0.0.0/0.0.0.0  gw 192.168.10.1
    # route add  default  gw 192.168.10.1


刪除:

# route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
    # route del -net 10.0.0.0/8 gw 192.168.10.1
    # route del default


查看結果中各個字段的含義以下:

  • Destination 表示路由的目標IP地址

  • Gateway 表示網關使用的主機名或者IP地址,「*」 表示沒有網關

  • Genmask 表示路由的網絡掩碼,在把它與路由的目標地址進行比較以前,內核經過Genmask和數據包的IP地址進行按位操做來設置路由。

  • Flags 表示路由的標誌。可用的標誌及其意義:U 表示路由在啓動,H 表示target是一臺主機,G 表示使用網關,R 表示對動態路由進行復位設置,D 表示動態路由, M 表示修改路由,! 表示拒絕路由

  • Metric 表示路由的單位開銷

  • Ref 表示依賴本路由現狀的其餘路由數目

  • Use 表示路由表條目被使用的數目

  • Iface 表示路由所發送的包的目的網絡

 

netstat命令:查看網絡鏈接狀態

做用:netstat主要用於Linux查看自身的網絡情況,如開啓的端口、在爲哪些用戶服務,以及服務的狀態等,此外,它還顯示系統路由表、網絡接口狀態等。可用說,它是一個綜合性的網絡狀態查看工具。

 

顯示路由表:

# netstat -rn
    -r:顯示內核路由表
    -n:數字格式顯示


顯示網絡鏈接:

# netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w][--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]][--program|-p]

經常使用選項:

    -tTCP協議的相關鏈接,鏈接均有其狀態;FSMFinate State Machine

    -uUDP相關的鏈接

    -wraw socket相關的鏈接

    -l:處於監聽狀態的鏈接

    -a:全部狀態

    -n:以數字格式顯示IPPort

    -e:擴展格式

    -p:顯示相關的進程及PID

 

經常使用組合選項:-tan, -uan, -tnl, -unl, -tunlp

 

顯示接口的統計數據:

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

    全部接口:netstat-i

    指定接口:netstat-I<IFace>

 

ifup/ifdown命令:激活/禁用網絡設備

用法:

# ifup <INTERFACE>
    # ifup eno33554984
# ifdown <INTERFACE>
    # ifdown eno33554984

說明:一般使用以保存的配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並完成配置。若是要修改網卡MAC地址,修改以前要禁用網絡設備,應使用ifdown 命令,不然系統會報錯。

 

hostname命令:配置主機名

查看當前主機名:

# hostname


配置主機名:

# hostname HOSTNAME


說明:在一個局域網中,每臺機器都有一個主機名,使得主機與主機之間便於區分。能夠根據每臺機器的功能來爲其命名。hostname設置的主機名在系統重啓後將失效,要想永久生效,應該手動修改配置文件/etc/hostsRedhat/Fedora或以此爲基礎打包的發行版)。

hostnamectl命令: CentOS 7 專用

# hostnamectlstatus : 顯示當前主機名信息
# hostnamectlset-hostname : 設定主機名,永久有效


ip命令:網絡集成設置工具

做用:ip命令是iproute2軟件包裏面的一個強大的網絡配置工具,它可以替代一些傳統的網絡管理工具,例如:ifconfigroute等。幾乎全部的Linux發行版本都支持ip命令。

經常使用的幾個用法:

# ip [ OPTIONS] OBJECT { COMMAND | help }
                OBJECT = {link | addr | route | netns }


說明:全部的對象名均可以簡寫,例如address能夠簡寫爲addr,還能夠按「Tab」鍵進行命令補全。

OBJECT經常使用選項:

wKiom1Z-Xf7jpefSAAAQDoAP1z8938.png

ip link:屬性配置

# ip link set:
    [root@localhost ~]# ip link seteno50332208 up                   //激活網卡
    [root@localhost ~]# ip link seteno50332208 down                 //禁用網卡
    [root@localhost ~]# ip link set eno50332208multicast on     //啓用多播功能
    [root@localhost ~]# ip link seteno50332208 multicast off    //禁用多播功能
    [root@localhost ~]# ip link seteno50332208 name NI1          //重命名接口
    [root@localhost ~]# ip link seteno50332208 mtu 1500          //設置MTU的大小,默認1500
    [root@localhost ~]# ip link seteno50332208 netns newns    //將接口移動到newns網絡名稱空間

# ip link show         //displaydevice attributes
# ip link help         //顯示簡要使用幫助;


ip netns:網絡名稱空間配置

[root@localhost~]# ip netns list         //列出全部的netns
[root@localhost~]# ip netns add newns2   //建立指定的netns
[root@localhost~]# ip netns del newns2   //刪除newns2

exec NS_NAME COMMAND:在指定的netns中運行命令
[root@localhost ~]# ip netns exec newnsip link show eno50332208


ip addr:接口ip地址管理

# ip addr show    //顯示每一個接口的ip地址
# ip addr add    //添加ip地址
    [root@localhost~]# ip addr add 192.168.150.137/24 dev eno33554984       //添加ip地址
    [root@localhost~]# ip addr add 192.168.210.10/24 dev eno33554984 label eno33554984:0 broadcast192.168.210.255 scope link
            //[label NAME]:爲額外添加的地址指明接口別名
            //[broadcast ADDRESS]:廣播地址,會根據IP和NETMASK自動計算獲得;
            //[scope SCOPE_VALUE]:
                        global:全局可用
                        link:接口可用
                        host:僅本機可用

# ip addr delete   //刪除地址
    [root@localhost~]# ip addr del 192.168.210.10/24 dev eno33554984
    
# ip addr show    // look at protocol addresses
    [root@localhost~]# ip addr show eno33554984    //顯示接口的地址
    
# ip addr flush   // flush protocol addresses
    [root@localhost~]# ip addr flush dev eno33554984


ip route:路由表管理

# ip route // routing table management
       //ip route show- display route
       //iproute add - add new route
       //iproute change - change route
       //iproute replace - change or add new one
# ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
    [root@localhost~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
    [root@localhost~]# ip route add default via GW
    
# ip route del    // delete route
# ip route del TYPE PRIFIX
    [root@localhost ~]# ip route delete192.168.1.0/24
# iproute show // list routes
    TYPE PRIFIX 
# iproute flush // flush routing tables
    TYPE PRIFIX
# iproute get // get a single route
# iproute get TYPE PRIFIX
    [root@localhost ~]# ip route get192.168.0.0/24


ss命令:顯示網絡狀態信息

做用:ss相似netstat,能顯示網絡狀態信息。

用法:

# ss [options] [ FILTER ]

options

    -tTCP協議的相關鏈接

    -uUDP相關的鏈接

    -wraw socket相關的鏈接

    -l:監聽狀態的鏈接

    -a:全部狀態的鏈接

    -n:數字格式

    -p:相關的程序及其PID

    -e:擴展格式信息

    -m:內存用量

    -o:計時器信息

        

    FILTER: [ state TCP-STATE ] [ EXPRESSION ]

        TCP FSM

        LISTEN:監聽

        ESTABLISHED:創建的鏈接

        FIN_WAIT_1

        FIN_WAIT_2

        SYN_SENT

        SYN_RECV

        CLOSED

 

    EXPRESSION

        dport=

        sport=

    示例:'( dport = :22 orsport = :22)'

[root@localhost~]# ss -tan '(  dport = :22 or sport =:22  )'
[root@localhost~]# ss -tan state ESTABLISHED


配置文件

  • /etc/sysconfig/network-scripts/route-INTERFACE  //路由的配置文件

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

(1) 每行一個路由條目:

    TARGET via GW

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

    ADDRESS#=TARGET

    NETMASK#=MASK

    GATEWAY#=NEXTHOP

 

  • /etc/sysconfig/network-scripts/ifcfg-INTERFACE   // IP/NETMASK/GW/DNS/等屬性的配置文件

配置文件/etc/sysconfig/network-scripts/ifcfg-INTERFACE經過大量參數來定義接口的屬性,可用vim等文本編輯器直接修改,也可使用專用的命令的進行修改(CentOS 6system-config-network (setup)CentOS 7: nmtui

ifcfg-INTERFACE配置文件參數說明:

    DEVICE:此配置文件對應的設備的名稱

    ONBOOT:在系統引導過程當中,是否激活此接口

    UUID:此設備的唯一標識

    IPV6INIT:是否初始化IPv6

    BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,經常使用的有dhcpbootpstaticnone

    TYPE:接口類型,常見的有Ethernet,Bridge

    DNS1:第一DNS服務器指向

    DNS2:備用DNS服務器指向

    DOMAINDNS搜索域

    IPADDR IP地址

    NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼

    GATEWAY:默認網關

    USERCTL:是否容許普通用戶控制此設備

    PEERDNS:若是BOOTPROTO的值爲「dhcp」,是否容許dhcpserver分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認爲容許

    HWADDR:設備的MAC地址

    NM_CONTROLLED:是否使用NetworkManager服務來控制接口

 

爲別名添加配置文件

DEVICE=IFACE_LABEL

BOOTPROTO:別名不支持動態獲取地址,只能指定爲staticnone

注意:能夠直接複製一份其餘網卡的配置文件,再在裏面作修改

例如:

[root@localhost~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp ifcfg-eno33554984 ifcfg-eno33554984:0
[root@localhost network-scripts]# vim ifcfg-eno33554984:0
DEVICE="eno33554984:0"
ONBOOT=yes
NETBOOT=yes
IPV6INIT=no
IPADDR=172.16.2.2
PREFIX=24
BOOTPROTO=none
TYPE=Ethernet
相關文章
相關標籤/搜索