網絡(組)

回顧:算法

網絡的結構:數據庫

硬件:計算機、互連設備、網絡設備服務器

軟件:操做系統、協議、應用程序、數據庫網絡


網絡的功能:負載均衡

資源共享:目的less

數據通訊:手段socket


網絡通訊模型:tcp

ISO/OSI:ibbide

應用層工具

表示層

會話層

傳輸層

網絡層

數據鏈路層

物理層


TCP/IP:

應用層

傳輸層

互聯網層

網絡訪問層


數據報文封裝格式:

對等通訊:

應用層:數據流進行封裝;

傳輸層:數據段(TCP segment)或數據報(UDP Data-prog)

最大的報文不能超過65535字節;

互聯網層:數據包或IP數據報(IP package);

最大的報文不能超過65535字節;

網絡訪問層:數據幀(Ether Frame);

最大的報文使用MTU定義,MTU=1500+首部+尾部

流式數據,0,1二進制的順序序列;


通訊界定地址:

物理地址:

在以太網中,物理地址被定義爲MAC(Media Access Control)地址;

實現真正的本地通訊;

使用範圍:本地局域網而且不跨路由;


邏輯地址:

在TCP/IP協議棧中,邏輯地址被定義爲IP地址;

界定主機到主機的通訊;點對點通訊

使用範圍:全球互聯網

注意:邏輯地址僅僅只用做主機定位,不用於真正的通訊;


邏輯端口號:

界定進程到進程的通訊;

1-1023:固定                                                                                      bbb

1024-45000+:半固定

其餘:可自由分配


邏輯地址:邏輯端口號 —— 套接字(Socket)

可以界定特定主機上的特定進程;


如何讓主機加入到網絡中並可以正常訪問網絡資源:

配置IP+NETMASK:當前廣播域內的通訊;

網關(路由):跨廣播域通訊;

DNS服務器地址:實現基於主機名的通訊;


注意:IP地址必須和網關在同一邏輯網段中;


CentOS中的網絡管理:

1.爲網卡設置網絡屬性:

自動獲取:

在主機所在的網絡中,至少有一臺DHCP服務器;


手動配置(靜態指定):

a.使用命令:

net-tools家族(ifcfg家族):

ifconfig(ipconfig)

查看網絡接口的配置信息;

配置網絡屬性;

管理接口狀態;

route:

查看路由信息;

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

netstat:

狀態及統計數據的查看;


iproute家族:

ip OBJECT

其中OBJECT能夠是:

addr:IP地址和掩碼的管理

link:物理接口的管理

route:路由管理

ss:

狀態及統計數據的查看;


注意:以上命令,在任何的Linux發行版中都適用;


nm家族:Network Manager

nmcli:命令行工具

nmtui:text-window的工具


nm家族只在CentOS7中可以使用;


system-config-network

system-config-network-cmd

system-config-network-tui


上述三個工具都是setup的子命令;在CentOS6中可使用上述命令;


b.修改配置文件:


2.網絡接口的命名方式:

思科的交換機:FastEthernet0/1, GigabitEthernet0/1

思科的路由器:Ethernet0/0, FastEthernet0/0


Linux的接口命名的方式:

a.傳統的命名方式:

以太網:ethX,X從0開始的整數;如:eth0,eth1,...

PPP網絡:PPPoE,PPP over Ethernet

pppX,X從0開始的整數;如:ppp0,ppp1,...

環回接口:lo,loopback;


在CentOS6及以前的發行版本中使用;


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

能夠支持不少種命名機制:

1) 根據Firmware進行命名:

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

2) 根據物理拓撲結構:

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


根據不一樣的命名機制,能夠有以下的命名標準:

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


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


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


4) 若是用戶顯式的定義,能夠根據諸如MAC地址進行命名;如:enx000c290045b3


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


命名的格式組成:

en:ethernet

wl:wlan

ww:wwan


名稱的類型:

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

s<slot_num>:擴展插槽的索引編號;

x<MAC>:基於MAC地址進行命名;

p<bus>s<slot>:基於總線+擴展插槽的索引聯合索引編號;


net-tools家族(ifcfg家族):

1.ifconfig命令

ifconfig - configure a network interface


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

若是執行ifconfig命令,不帶任何接口作參數,則顯示全部處於激活狀態的網絡接口信息;

若是執行ifconfig命名,帶有特定接口名稱做爲參數,則不管接口是否處於激活狀態,都顯示該網絡接口的信息;


ifconfig interface address:用於配置指定接口的網絡參數;

ifconfig interface IP[/PREFIX_LEN] [up|down]

ifconfig interface IP netmask SUBNET_MASK [up|down]


示例:

# ifconfig eth1 172.16.100.105

# ifconfig eth1 172.16.100.105/24 

# ifconfig eth1 172.16.100.105 netmask 255.255.255.192

# ifconfig eth1 up|down


經常使用選項:

-a:顯示全部的網絡接口,不管其是否處於激活狀態;


示例:

# ifconfig -a


route命令:查看和管理路由信息;

路由表中的路由條目,可能包括下列幾種類型:

1.主機路由:目標地址是特定的單個IP地址;

2.網絡路由:子網路由;主網路由,超網路由(CIDR);

10.10.10.0/24

192.168.1.0/24

192.168.0.0/16

3.默認路由:目標地址爲0.0.0.0/0的路由條目;到達任意地址的路由;


經常使用選項:

-n:以數字化顯示主機名(IP地址)和端口


設置路由信息:

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

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


設置默認網關的方法:default === -net 0.0.0.0 netmask 0.0.0.0

route add default gw 192.168.100.1

route add default gw 192.168.220.1 dev eth2


刪除默認網關的方法:

route del default

route del default gw 172.16.0.1


添加靜態路由的方法:

route add -net 10.0.0.0/8 gw 192.168.220.100 [dev eth2]


刪除靜態路由的方法:

route del -net 10.0.0.0/8

route del -net 10.0.0.0/8 gw 192.168.220.100


回顧:

使主機連入網絡而且可使用各類資源:

IP Address/Subnet_mask

Gateway

DNS Server


設置網絡接口的上述屬性:

自動得到:

DHCP


手動配置(靜態配置):

命令行工具:

net-tools家族(ifcfg家族)

ifconfig

1.查看網絡接口的信息

2.配置網絡接口的基本配置信息(IP/MASK)

3.管理網絡接口

route

1.查看當前Linux內核路由表  -n選項

2.配置默認網關及靜態路由


netstat


iproute家族

ip

ss


nm家族(只是在CentOS7中才能使用)

nmcli

nmtui


配置文件:


netstat命令:

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


Print network connections

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

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

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

[--sctp|-S]:

[--raw|-w]:顯示與裸套接字相關的網絡鏈接

[--listening|-l]:顯示處於LISTEN狀態的TCP鏈接

[--all|-a]:查看全部狀態的任意鏈接

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

      [--numeric-hosts]

      [--numeric-ports]

      [--numeric-users]

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

    [--program|-p]:顯示與該網絡鏈接相關的應用程序及進程ID


  TCP的有限狀態機(TCP FSM):

State

      The  state  of  the socket. Since there are no states in raw mode and usually no states used in UDP and UDPLite, this column may be left blank. Normally this can be one of several values:


       ESTABLISHED

              The socket has an established connection.


       SYN_SENT

              The socket is actively attempting to establish a connection.


       SYN_REC V

              A connection request has been received from the network.


       FIN_WAIT1

              The socket is closed, and the connection is shutting down.


       FIN_WAIT2

              Connection  is  closed, and the socket is waiting for a shutdown from the

              remote end.


       TIME_WAIT

              The socket is waiting after close to handle packets still in the network.


       CLOSE  The socket is not being used.


       CLOSE_WAIT

              The remote end has shut down, waiting for the socket to close.


       LAST_ACK

              The remote end has shut down, and  the  socket  is  closed.  Waiting  for

              acknowledgement.


       LISTEN The  socket  is listening for incoming connections.  Such sockets are not

              included in the output unless you specify the --listening (-l)  or  --all

              (-a) option.


       CLOSING

              Both sockets are shut down but we still don't have all our data sent.


       UNKNOWN

              The state of the socket is unknown.



  經常使用的選項組合:

  -tan, -uan, -tnl, -unl, -tnlp, -unlp, -tunlp


  Print routing tables

  {--route|-r}:顯示路由表信息

  [--numeric|-n]:數字化信息

  [--extend|-e]:顯示擴展信息


經常使用的選項組合:

-rn, -rne


Print interface statistics:

{--interfaces|-I|-i}

[--all|-a]

[--extend|-e]

[--verbose|-v]

[--program|-p]

[--numeric|-n]


Print Protocol statistics:

{--statistics|-s}:顯示詳細的各個協議的統計信息;

[--tcp|-t]

[--udp|-u]

[--udplite|-U]

[--sctp|-S]

[--raw|-w]


iproute家族:

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

ip [ OPTIONS ] OBJECT { COMMAND | help }


OBJECT := { link | addr | route | netns }



ip link COMMAND

COMMAND: add, delete, set, show, help


ip link set - 修改網絡設備的配置參數

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

ip link set [dev] IFACE_NAME [ arp { on | off } ]:是否容許此網絡接口使用ARP協議;

ip link set [dev] IFACE_NAME name IFACE_NEW_NAME:更改網絡接口名稱,須要將設備先down掉;

ip link set [dev] IFACE_NAME [ mtu MTU ]:修改網絡接口的MTU數值;

ip link set [dev] IFACE_NAME [ netns PID ]:

    ip link set [dev] IFACE_NAME [ netns NAME ]:將指定的網絡接口加入到指定的網絡名稱空間中;


   ip link { show | list }:列表顯示全部的鏈路接口;只顯示鏈路層信息;

   ip link help:得到簡短的幫助信息


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

  ip netns list:列表顯示全部的自定義的名稱空間;

  ip netns add NS_NAME:建立名稱空間;

  ip netns exec NS_NAME cmd:在指定的名稱空間中使用命令;

  ip netns delete NS_NAME:刪除指定的名稱空間;

 

 ip addr COMMAND - 查看和設置三層邏輯網絡地址;

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

  ip addr del IFADDR dev IFACE_NAME:將IP地址從指定的網絡接口上刪除;

  ip addr flush dev IFACE_NAME:將指定接口上配置的全部IP地址所有清除;

  ip addr { show | list } [dev IFACE_NAME]:顯示網絡接口上配置的IP地址;


  爲網絡接口增長多個IP地址,並可以使用ifconfig查看;

  ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL


  ifconfig IFACE_NAME_LABEL IFADDR


  IFACE_NAME_LABEL : IFACE_NAME:#


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

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

  ip route list



回顧:

netstat

-t, -u, -l, -e, -p, -n, -a, -s, -I|-i, ...


ip link|addr|route|netns


ss - another utility to investigate sockets

ss [options] [ FILTER ]


經常使用選項:

-t:TCP協議相關的鏈接狀態

-u:UDP協議相關的鏈接

-w:raw socket相關的鏈接

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

-a:全部的狀態的套接字鏈接

-n:數字化顯示結果

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

-e:顯示詳細的擴展信息

-m:顯示內存使用量

-o:計時器信息


經常使用的選項組合:

-tan, -uan, -tnl, -unl, -tulp, -unlp


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


TCP-STATE:TCP協議有限狀態機中的全部可用狀態;


EXPRESSION:

源端口:dport= :port

目的端口:sport= :port


EXPRESSION示例:

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


net-tools

iproute

特色:使用命令配置網絡參數之後,網絡參數會當即生效;可是,只要從新啓動或從新激活網絡接口,其配置的網絡參數當即丟失;


上述命令的配置結果,並無影響或修改網絡設備的配置文件;


配置文件:

CentOS6中:

跟IP、MASK、GATEWAY、DNS Server相關的配置文件:

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

DEVICE:此網絡接口的名稱

TYPE:此網絡接口的類型,比較常見的是Ethernet,Bridge,Token Ring,...

HWADDR:此設備的物理地址,在以太網中是MAC地址;

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

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

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

動態配置:dhcp,bootp

靜態配置:static,none

IPV6INIT:是否在此接口上初始化(支持)IPV6協議;

USERCTL:是否容許普通用戶可以管理此接口;推薦取值爲no;

IPADDR:指定此接口的固定IP地址,前提是BOOTPROTO應該是static或none;

NETMASK:設置IP地址對應的子網掩碼;如:255.255.255.0

PREFIX:設置IP地址的網絡前綴的位數;如:24

GATEWAY:設置默認網關

DNS1:首選DNS服務器的地址指向;

DNS2:備用DNS服務器的地址指向;

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

PEERDNS:是否容許從DHCP服務器得到的DNS服務器的地址指向替代此配置文件中的DNS服務器的地址指向;默認值爲容許;

NM_CONTROLLED:是否容許NetworkManager服務管理網絡接口;此服務在CentOS6中很是不完善,因此建議不使用此服務進行網絡接口的管理;並且最好將此服務永久關閉,執行下列兩條命令便可;

# service NetworkManager stop

# chkconfig NetworkManager off


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

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


# hostname 查看當前系統的FQDN

# hostname NEW_HOSTNAME

註銷後從新登陸,便可生效


CentOS7中:

跟IP、MASK、GATEWAY、DNS Server相關的配置文件:

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

多數的配置語句與Center6相同,多出了下列幾項:

UUID:全局惟一標識符,用來惟一標識此網絡接口;

NAME:此網絡接口的顯示名稱;

DEFROUTE:是否容許此網絡接口運行默認路由;


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


# hostnamectl set-hostname NEW_HOSTNAME


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

格式爲: IP地址 主機名(多個主機名之間使用空白字符隔開)


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

search DOMAIN_NAME

nameserver DNS_SERVER_IP_ADDRESS


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


IFACE_NAME:必須爲這次路由出站接口的名稱;

兩種風格的寫法:

1.每條路由信息佔用一行;

TARGET via NEXT_HOP [dev IFACE_NAME]


示例:

10.0.0.0/8 via 192.168.100.254


2.每條路由信息佔用多行;

ADDRESS#=TARGET

NETMASK#=MASK

GATEWAY#=NEXT_HOP


示例:

ADDRESS0=172.16.0.0

NETMASK0=255.255.0.0

GATEWAY0=192.168.10.254


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監測一次鏈路鏈接的狀態;若是某個網絡接口在miimon監測的結果爲不連通,則進行故障倒換;


使用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.100.135

PREFIX=16


修改物理網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no


修改物理網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2

BOOTROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no


重啓網絡設備:service network restart

查看綁定狀態:cat /proc/net/bonding/bondX


Bonding最好在CentOS6中實現。


在CentOS7中使用網絡組來實現更增強大的容錯;

nmcli












回顧:

1.netstat

2.iproute家族

ip {link|addr|netns|route} COMMAND

ss

3.配置文件:

網絡接口的配置文件:/etc/sysconfig/network-scripts/ifcfg-IF_NAME

靜態路由配置文件:/etc/sysconfig/network-scripts/route-IF_NAME

本地解析文件:/etc/hosts

解析順序文件:/etc/nsswitch.conf

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

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

4.在一個網絡接口上配置多個IP地址:

# ifconfig IF_NAME:# IP_ADDR/PREFIX

# ip addr add IF_NAME IP_ADDR/PREFIX label


配置文件:/etc/sysconfig/network-scripts/ifcfg-IF_NAME:#

BOOTPROTO=none|static

5.Bonding

提高網絡接口的可用性和可靠性;



nmcli命令:

command‐line tool for controlling NetworkManager


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:

nmtui - Text User Interface for controlling NetworkManager


CentOS6:

system-config-network[-tui]

setup --> 網絡配置


注意:上述命令雖然可使用簡單的圖形界面,但都是修改了配置文件,因此須要重啓網絡接口才能使配置生效;


網絡組(Network Teaming)

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


網絡組與以往的Bonding技術相比,具備更好的性能以及更好的擴展性;


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


網絡組能夠實現多個工做模式,被稱爲「運行器(runner)」:

broadcast

roundrobin

activebackup

loadbalance

lacp(IEEE 802.3ad, Link Aggregation Control Protocol, 鏈路聚合控制協議)


網絡組接口的特色:

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

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

3.禁用網絡組接口,則會當即禁用網絡組中的port接口;

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


建立網絡組接口的方法:

nmcli connection add type team con-name TEAM_CON_NAME ifname IF_NAME config JSON

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

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


示例:

# nmcli connection add type team con-name class17 ifname class17 config '{"runner": {"name": "loadbalance"}}'


# nmcli connection modify class17 ipv4.addresses 172.16.203.205/16

# nmcli connection modify class17 ipv4.method manual


建立port接口

nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME


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


示例:

# nmcli connection add type team-slave con-name eno67109432 ifname eno67109432 master class17


# nmcli connection up class17

# nmcli connection up eno67109432

# nmcli device disconnect eno67109432


建立網絡組也能夠直接修改對應的鏈接的配置文件;

網絡組接口:

DEVICE=class17

TEAM_CONFIG="{\"runner\": {\"name\": \"activebackup\"}}"

DEVICETYPE=Team

BOOTPROTO=none

NAME=class17

ONBOOT=yes

IPADDR=172.16.203.205

PREFIX=16


port接口:

NAME=team-slave-eno33554984

DEVICE=eno33554984

ONBOOT=yes

TEAM_MASTER=class17

DEVICETYPE=TeamPort

相關文章
相關標籤/搜索