linux系統管理之網絡管理

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

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

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

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

  4. IP地址部分:邏輯地址,子網掩碼,端口的做用,網關做業等等負載均衡

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


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

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

  手動配置:ide

   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 

相關文章
相關標籤/搜索