linux系統管理之網絡管理

運維人員也需要具備一定的網絡基礎知識,才能更好的對服務器網絡管理層面進行配置、排查和維護。經由幾個星期的對網絡基礎知識的補充,大概瞭解了以下些許關於網絡的基本認知:

  1. 網絡的結構:硬件+軟件;這一點倒是跟計算機系統的組成相像;

  2. 網絡的功能:資源共享+數據通信;前者是後者的目的所在,後者是前者的實現手段;

  3. 網絡通信模型:ISO/OSI七層參考模型 和 TCP/IP四層參考模型

  4. IP地址部分:邏輯地址,子網掩碼,端口的作用,網關作業等等

具備以上內容的知識後,就能對linux系統進行詳細的網絡配置了;


首先就是進行網卡屬性的設置,包括:

  自動獲取:在主機所在網絡中,至少有一臺DHCP服務器

  手動配置:

   a.用命令:有以下幾個‘命令家族’:

    net-tools家族(ifcfg家族)

1.ifconfig(Windows:ipconfig):

查看網絡接口的配置信息

配置網絡屬性

管理接口狀態

2.route:

查看路由信息

配置路由信息(網關,靜態路由,靜態默認路由)

3.netstat:

狀態及統計數據的查看

    iproute家族:

ip OBJECT(類似子命令)

  OBJECT可以是:

addr:IP地址和掩碼

link:物理接口的管理

route:路由的管理

ss:

  狀態及統計數據查看;

  相較於netstat來說,ss幾乎和它的使用方法一樣;但是性能卻要高很多;



    nm家族(Network Manager)

 nmcli:命令行工具

 nmtui:text-window的工具

 nm家族只在CentOS7中使用

        在CentOS6裏,用的是setup的子命令:

        system-config-network

        system-config-network-cmd

         system-config-network-tui

    b.配置文件:同樣,使用命令的方法可以使配置信息立即生效,但是系統重啓或者註銷後會失效。因此,就需要對配置文件進行修改,使得配置的網卡的網絡屬性永久生效;


在解除具體CentOS系列中網絡配置步驟之前,我們還需要了解其中的網絡接口;

 接口命名的方式有:

a.傳統的命名方式:

 根據網絡的類型和特點;

以太網接口:eth#,#是從0開始的整數。

PPP網絡   :ppp#,#也是從0開始的整數;

        環回接口:lo(loopback interface)

      A類網絡127就是爲環回接口預留的 。根據慣例,大多數系統把IP地址127.0.0.1分配給這        個接口,並命名爲localhost。一個傳給環回接口的IP數據報不能在任何網絡上出現。實際        上,訪問127.x.x.x的所有IP都是訪問環回接口(lo)。 

     b.可預測的命名方案:(Centos7開始):

  這種方案可以支持很多種命名機制

1.根據Firmware固件進行命名:

即每一臺計算機的網卡在其計算機的硬件固件中都有唯一的標識符,比如:MAC地址,廠商標識,電器編號等;

2.根據物理拓撲結構:

每一臺計算機的主板上都有固定數量的插槽或接口,如主板上第二個插槽連接的網卡的第一個物理接口等;

    根據不同的命名機制可以有如下的命名標準

 1) 如果Firmware或BIOS是主板上集成的設備提供的索引信息並且該信息可用,則根據此索引信息進行設備命名,如:enoX, eno1,eno167777736,...

 2) 如果Firmware或BIOS是主板上擴展插槽所提供的索引信息並且該信息可用,則根據此索引信息進行設備命名,如:ensX, ens0,ens2,...

 3) 如果硬件接口的物理拓撲的位置信息存在並可用,則可以根據此信息進行設備命名,如:enp1s0

 4) 如果用戶顯式的定義,可以根據諸如MAC地址進行命名;如:enx000c290045b3

 5) 如果上述可預測命名皆不可用,則延用傳統命名方式對網絡設備進行命名;


好,瞭解了網絡接口的命名,接着就是命令的詳細具體使用了;


-------------------------------------------------------------------------------------------

net-tools家族(ifcfg家族)

1.ifconfig命令:

 描述:ifconfig - configure a network interface

ifconfig [interface]:用於查看網絡接口的配置信息

如果不帶任何參數,則顯示所有處於激活狀態的網絡接口信息;

如果執行帶有參數,則無論接口是否激活,都顯示出來


ifconfig interfere address 配置網絡信息

ifconfig interface IP/PREFIX_LEN [up/down]

ifconfig interface IP netmask SUBNET_MASK [up/down]


常用選項:

-a:顯示所有的網絡接口,無論是否處於激活狀態

    2.route

 顯示路由表的路由條目 可能包括以下幾種類型

a.主機路由:目標地址是特定的單個ip地址

b.網絡路由:子網路由;主網路由,超網路由(CIDR);分別例如:

10.10.10.0/24

192.168.1.0/24

192.168.0.0/16

c.默認路由:目標地址是0.0.0.0/0的條目


選項:-n

設置路由信息:

route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

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

設置默認網關:

route add default gw 192.168.100.1

default == -net 0.0.0.0 netmask 0.0.0.0

     刪除默認網關:

   route del default



    3.netstat:

 a.Print network connections

[--tcp|-t]                         只顯示與TCP協議相關的網絡連接

    [--udp|-u]    只顯示與UDP協議相關的網絡連接

    [--udplite|-U]                     只顯示udolite協議相關的網絡連接

[--sctp|-S]                        只顯示與sctp協議相關的連接

[--raw|-w]                         顯示與裸套接字相關的網絡連接()  

[--listening|-l]                     顯示處於監聽狀態的TCP連接;

[--all|-a]    查看所有狀態的任意連接

     [--numeric|-n]                 數字化顯示結果中的主機名,端口號,用戶id等等信息

        [--numeric-hosts]  

        [--numeric-ports]   

        [--numeric-users]  

     [--extend|-e[--extend|-e]]      擴展格式顯示結果

     [--program|-p]              顯示


常用選項的組合有  -tan  -uan  -tnl  -unl  -tnlp  -unlp  -tunlp



iproute家族

ip 命令 :

描述 -- show / manipulate routing, devices, policy routing and tunnels(查看 配置路由 設備 策略路由 和 通道)

用法:ip [ OPTIONS ] OBJECT { COMMAND | help }


      OBJECT 可以是:{ link | addr | route | netns }


      OPTION 有 { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] }


    1.ip link COMMAND  (COMMAND--add delete set show help)

    ip link set DEVICE { up | down } 修改網絡設備的配置參數

     ip link set [dev] IFACE_NAME { up | down }:激活或者禁用網絡接口


    2.ip netns COMMAND -- 設置內核中的網絡名稱空間

    list 

    add NS_NAME

    exec NS_NAME cmd

    delete NS_NAME

    3.ip addr COMMAND -- 

      add IFADDR dev IFACE_NAME 爲指定的網絡接口添加IP地址

      del

      flush  清空IP地址

      { show | list }


     爲網絡接口增加多個IP地址,並且能夠使用ifconfig查看

     ip addr add IPADDR dev IFACE_NAME label LABEL_NAME


     ip route COMMAND -- 查看和設置路由表信息

      ip route { add | del } TARGET/PREFIX via NETX_HOP [dev IFACE_NAME]

      ip route list

ss:   

another uniity to investigate sockets


    1.ss [opt] [ FILTER ]

-t:TCP相關

-u:udp相關

-w  raw socket相關

-l 處於監聽狀態的連接

-a 所有狀態的套接字連接

-n 數字化顯示結果

-p 顯示相關的應用程序和PID

-e 擴展的信息

        以上與netstat命令的選項基本類似,不一樣的有:

-m 內存使用量

-o:計時器信息


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

TCP-STATE:TCP協議有限狀態機中所有可用狀態


EXPRESSION 

dport= :port

sport= :port


示例:

'( dport = :22 or sport = :22 )'


除了命令配置使得網絡屬性立即生效,還需要配置文件:

CentOS6中與ip mask gateway DNS相關的配置文件

/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

    文件內容格式:

DEVICE    網絡接口的名稱

TYPE      網絡接口的類型  常見的:Ethernet、Bridge、Token Ring ...

HWADDR    物理地址

ONBOOT    在系統引導的過程中,是否激活此設備

NETBOOT   是否可以使用此設備進行網絡引導

BOOTPROTO 激活此接口時使用何種協議來配置此接口的屬性

動態配置:dhcp、bootp

靜態配置:static、none

IPV6INIT  是否在此接口上初始化IPV6協議;

USERCTL   是否允許普通用戶管理此接口

IPADDR    指定此接口的固定IP地址,前提是BOOTPROTO爲static或者none

NETMASK   設置ip地址的子網掩碼

PREFIX    設置ip地址的網絡前綴的位數

GATEWAY   設置默認網關

DNS1      首選dns服務器的地址指向

DNS2  備選DNS服務器的地址指向

DNS3  第三DNS服務器的地址指向

PEERDNS 是否允許從dhcp服務器獲取dns服務器的地址指向替代此文件裏的dns服務器指向,默認值爲允許,即沒有此行信息 默認開啓

注意:NM_CONTROLLED 是否允許NetworkManager服務管理網絡接口;此服務在CentOS6中非常不完善,所以建議不使用此服務進行網絡接口的管理;而且最好永久關閉此服務。

主機名的配置文件 /etc/sysconfig/network

HOSTNAME 當前linux系統使用的主機名稱

命令 hostname 查看當前系統的FQDN  (Fully Qualified Domain Name)完全合格域名/全稱域名

hostname NEW_HOSTNAME


CentOS7中:

與ip mask gateway DNS相關的配置文件

/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

多數參數與CentOS6相同


UUID 全局唯一標識符,唯一標識此網絡接口

DEFROUTE 

NAME

主機名稱的配置文件:/etc/sysconfig/network

# hostnamectl set-hostname NEW_NAME


本地解析配置文件:/etc/hosts

格式: IP地址   主機名(多個主機名空白字符格隔開)


解析器文件:/etc/resolv.conf



靜態路由的配置文件  /etc/sysconfig/network-scripts/route-IFACE_NAME


兩種風格的寫法

1.每條路由信息佔一行

TARGET via NETX_HOP [dev IFACE_NAME]


10.0.0.0/8 via 192.168.100.254

2.每條路由信息佔多行

ADDRESS#=TARGET

NETMASK#=MASK

GATEWAY#=NEXT_HOP

#表示編號數字



Bonding -- 綁定

就是將多塊網卡(網絡接口設備)綁定到同一ip地址,對外提供網絡服務;這些網卡之間可以實現負載均衡或高可用技術;

通過Bonding,虛擬一個網卡對外提供服務及網絡連接,所有的物理網卡都被修改爲相同的MAC地址


Bonding的工作模式:

Mode 0 -- 負載均衡解決方案,其負載均衡的算法爲balance-rr(round robin,輪詢)

輪詢策略意味着從頭到尾順序的在沒一個slave接口上發送數據包;該模式可以提供負載均衡以及容錯的能力;


Mode 1 -- 主備解決方案,(active-backup  master-backup).

在此模式中,只有一個slave接口被激活 用於正常數據傳輸;而其他的接口都監視此接口的工作狀態;當且僅當活動的slave接口失敗的時候,纔會

從其他備份的接口中選擇一個用於激活;該模式只能實現容錯,無法進行負載均衡

Mode 3 -- 全廣播解決方案。在所有的slave接口上傳送全部報文,


miimon  用來鏈路監測。如果miimon=100,則系統每100ms監測一次鏈路連接的狀態。


使用Bonding的時候,需要配置:

1.創建虛擬接口

2.選擇miimon的監測時間和Bonding的工作模式

3.選擇用於此次Bonding的物理接口


在/etc/sysconfig/network-scripts/ifcfg-bond0文件裏指定Bonding的特性即可:

DEVICE=bond0

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=none

BONDING_OPTS="miimon=100 mode=0"

IPADDR=172.16.111.11

PREFIX=16

物理網卡配置:

/etc/sysconfig/network-scripts/ifcfg-eth1


DEVICE=eth1

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no

...

注意不要配置ip地址


Bonding最好在CentOS6裏去實現。在7裏使用網絡組的方式


CentOS7裏的nmcli:


nmcli  [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT:connection | device 


device - show and manage network interfaces

COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }


connection - start, stop, and manage network connections

COMMAND := { show | up | down | add | edit | modify | delete | reload | load

              }


          show:顯示所有網絡連接的屬性信息;


          up|down:啓用或禁用指定的網絡連接;


          add:添加新的網絡連接的;

          autoconnect yes|no:是否自動啓動此連接,在配置文件中添加ONBOOT=yes|no;

          ifname IF_NAME:指定要創建連接的目標網絡接口設備名稱;

          con-name CON_NAME:爲指定的網絡接口設備創建一個連接名稱;

          type TYPE:指定網絡設備的接口類型


          示例:

          # nmcli connection add autoconnect yes ifname eno67109432 con-name eno666 type ethernet


          delete:刪除指定的網絡連接

          # nmcli connection delete CON_NAME


          示例:

          # nmcli connection delete eno666



          reload:不重啓網絡接口,但重新加載其配置文件中的配置信息;


          modify:

          modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>

          <setting>:

          802-3-ethernet.mtu

          connection.autoconnect

          ipv4.addresses

          ipv4.dns

          ipv4.gateway

          ipv4.method

示例:

          # nmcli connection modify "系統\ eno50332208" ipv4.addresses 1.2.3.4/8 ipv4.dns 202.202.222.222 ipv4.gateway 1.1.1.1


 nmtui: Text User Interface for controlling NetManager

  CentOS6 : system-config-network[-tui]或者 setup 中選擇網絡配置

  這兩種雖然可以使用簡單的圖形界面,但都是修改了配置文件,並不能立即生效,所以要重啓網絡接口;

  .  


網絡組(Network Teaming)

是將多個網絡接口設備聚合在一起的方法,目的是實現冗餘容錯以及提高可用性和吞吐量;

  與Bonding技術相比具有更好的性能以及更好的擴展性;


  在CentOS 7中,網絡組是由內核當中的一個內核驅動和一個名爲teamd的守護進程來實現的;

  網絡組可以實現多個工作模式,被稱爲運行器(runner);

  包括 broadcast、roundrobin、activebackup、loadbanlance、lacp--IEEE 802.3ad 的標準,全稱link aggregation control protocol,鏈路聚合控制協議


  網絡組接口特點:

  1.啓動網絡組接口並不會自動啓動網絡組中其他port接口

  2.啓動網絡組終端port接口,也不會自動啓動網絡組接口;

  3.禁用網絡組接口,則會立即隨之禁用網絡組中的port接口

  4.對於沒有port接口的網絡組接口而言,只能配置靜態IP地址,不能設置從DHCP獲取;如果設置了DHCP,網絡組接口就會一直等待port接口的加入;

  創建網絡組接口的方法:

  # nmcli connection add type team con-name TEAM_CONF_NAME [ifname IF_NAME] config JSON

  JSON是用來指定runner的方式,格式爲:

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


  示例:


  創建port接口:

  nmcli connection add type team-slave [con-name TEAM_CONF_NAME] 


  注意:如果不指定con-name,則默認的con-name爲team-slave-IF_NAME


  # nmcli connection add type team-slave con-name 


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