網絡管理3

一、知識整理

1、跨網絡通信:路由

路由的分類:主機路由;網絡路由;默認路由。

將主機接入網絡,需要配置網絡相關設置。一般包括如下內容:主機名;IP/MASK;路由:默認網關;DNS服務器:主、次、第三DNS服務器。

2、網絡配置文件:IP、MASKGW、DNS相關配置文件

/etc/sysconfig/network-scripts/ifcfg-IFACE

路由相關配置文件:

/etc/sysconfig/network-scripts/route-IFACE

3、dmesg查看開機信息

[root@localhost ~]# dmesg | grep SELinux
[    0.000137] SELinux:  Initializing.
[    0.000153] SELinux:  Starting in permissive mode
[    1.642242] SELinux:  Registering netfilter hooks
[    9.496131] SELinux: 2048 avtab hash slots, 105321 rules.
[    9.506233] SELinux: 2048 avtab hash slots, 105321 rules.
[    9.531455] SELinux:  8 users, 105 roles, 4952 types, 302 bools, 1 sens, 1024 cats
[    9.531458] SELinux:  83 classes, 105321 rules
[    9.535006] SELinux:  Completing initialization

4、lsmod查看綁定模塊:

[root@localhost ~]# lsmod | grep tcp
tcp_diag               12591  0 
inet_diag              18543  3 tcp_diag,dccp_diag,udp_diag

rmmod刪除模塊

網絡接口識別并命名相關的udev配置文件:

/etc/udev/rules.d/70-persistent-net.rules

udev:udev 是Linux kernel 2.6系列的設備管理器。它主要的功能是管理/dev目錄底下的設備節點。它同時也是用來接替devfs及熱插拔的功能,這意味著它要在添加/刪除硬件時處理/dev目錄以及所有用戶空間的行為,包括加載固件時Linux 2.6.13內核。

卸載網卡驅動:modprobe  -r  e1000

modprobe e1000啟動網卡模塊

e1000是使用ethtool -i eth0命令查看,找到driver

[root@localhost ~]# ethtool -i eno16777736
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version: 
bus-info: 0000:02:01.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

5、臨時別名:ifconfig eno16777736:1 ####/#

刪除別名 ifconfig eno16777736:1 down

啟用和禁用網卡:ifconfig eth0 up/down

6、本地解析器:解析器執行正向和逆向查詢,聯網時先查詢本地解析再通過DNS解析。

DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析),也可反向解析。DNS協議運行在UDP協議之上,使用端口號53。

/etc/hosts 本地主機名數據庫和IP地址的映像;對小型獨立網絡有用;通常,在使用DNS前檢查。

getent hosts 查看/etc/hosts內容

[root@localhost ~]# getent hosts
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1       localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

cat /etc/resolve.conf 查看配置DNS

[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com

cat /etc/nsswitch.conf 可以更改優先級,默認hosts優先于DNS。

hosts:      files dns一行filesdns互換,用于改變優先級。

7、route配置文件/etc/sysconfig/network-scripts/route-IFACE

兩種格式:第一種  #### via GW

第二種:每三行定義一條路由

ADDRESS1=TARGET

NETMASK1=mask

GATEWAY1=GW

格式是:ADDRESS#=TARGET

NETMASK#=mask

GATEWAY#=GW

8、在網卡配置文件中添加一行DOMAIN=magedu.com。在/etc/hosts文件中添加一行

#.#.#.#     www.magedu.com

重啟網絡服務后,在/etc/resolv.conf會多出一行search  magedu.com。此時用ping命令直接ping www. 會自動識別本地解析,ping #.#.#.#。

9、centos7網絡屬性配置:rhel7基于硬件,設備拓撲和設置類型命名:

systemd對網絡設備的命名方式:

①如果FirmwareBIOS為主板上集成的設備提供的索引信息可用,且可預測,根據此索引進行命名,例如eno1;

②如果FirmwareBIOSPCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,例如ens1;

③如果硬件接口的物理信息可用,則根據此信息進行命名,例如enp2s0;

④如果用戶顯式啟動,也可根據MAC地址進行命名,例如enx2387a1dc56;

⑤上述均不可用時,則使用傳統命名機制。

網卡名稱:基于BIOS支持biosdevname中,內置網卡em1,em2;pci卡:pYpXyslot插槽,Xport端口)。

PCI定義局部總線的標準,支持10臺外設,64位尋址:pci插槽,基于局部總線的擴展插槽。

網卡名稱含義:

enEthernet 有線局域網

wlwlan 無線局域網

wwwwan無線廣域網

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

s<> 擴展槽的索引號

x<MAC> 基于MAC地址的命名

p<bus>s<slot>  enp2s1

網卡命名過程:

第一步:udev,輔助工具程序/lib/udev/rename_device;/usr/lib/udev/rules.d/60-net.rules

第二步:biosdevname 會根據/usr/lib/udev/rules.d/71-biosdevname.rules

[root@localhost ~]# cat /usr/lib/udev/rules.d/60-net.rules 
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device"
, RESULT=="?*", NAME="$result"

第三步:通過檢測網絡接口設備,根據/usr/lib/udev/rules.d/75-net-description.rules

二、命令詳解及事例

1、route命令:查看路由route -n;添加路由route -add

route add -net #.#.#.# gw #.#.#.# dev eth#

route del -net #.#.#.# netmask #.#.#.#

route del -host #.#.#.#

2、ip命令:ip [opt] OBJECT {help|COMMAND}

OBJECT:link|addr|route

ip link network device configuration

[root@localhost ~]# ip link set  dev  eno16777736 up
[root@localhost ~]# ip link set  dev  eno16777736 down
[root@localhost ~]# ifup eno16777736
RTNETLINK answers: File exists
[root@localhost ~]# ifdown eno16777736
[root@localhost ~]# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT

qlen 1000    link/ether 00:0c:29:51:36:20 brd ff:ff:ff:ff:ff:ff

ip link show [dev IFACE] 指定接口

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

ip addr {add|del} ADDR dev STRING

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

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

global 全局可用,默認。

當三塊網卡,兩塊網絡組掛掉之后,第三塊繼承了IP,也可以繼續用。因為IP是寫入內核中的,并不是寫在網卡上,當定義為global后,全局可用。

link 僅鏈接可用

host 本機可用

[broadcast ADDRESS] 指明廣播地址

ip address show look at protocol addresses

[root@localhost ~]# ip addr add 172.16.100.13/16 dev eno16777736 label eno16777736:1
[root@localhost ~]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.54.250  netmask 255.255.0.0  broadcast 10.1.255.255
        inet6 fe80::20c:29ff:fe51:3620  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:51:36:20  txqueuelen 1000  (Ethernet)
        RX packets 14445  bytes 1328780 (1.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 841  bytes 98076 (95.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno16777736:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.100.13  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 00:0c:29:51:36:20  txqueuelen 1000  (Ethernet)
[root@localhost ~]# ip addr flush dev eno16777736 label eno16777736:1

清空一個網卡上的所有地址:ip addr flush

[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.54.250  netmask 255.255.0.0  broadcast 10.1.255.255
        inet6 fe80::20c:29ff:fe51:3620  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:51:36:20  txqueuelen 1000  (Ethernet)
        RX packets 16177  bytes 1442437 (1.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 925  bytes 107932 (105.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ip route add 添加路由

ip route default via 172.16.0.1

ip route add 192.168.0.0/16 via172.16.0.1

ip route add 192.168.1.22  via172.16.0.1

ip route delete

ip route del 192.168.1.22

顯示路由 ip route show|list

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

ip route flush dev eth0

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

-t  tcp協議相關

-u udp協議相關

-w 裸套接字相關

-l listen狀態的連接

-x unix sock相關

-a 所有

-n 數字格式

-p 相關的程序及PID

-e 擴展的信息

-m 內存用量

-o 計時器信息

TCP常見的狀態:tcp finite(有限的) state machine

LISTEN 監聽

ESTABLESHED 已建立的連接

FIN_WAIT_1 

FIN_WAIT_2 四次斷開信號

SYN_SENT

SYN_RECV 三次握手信號

CLOSED 關閉狀態,數據傳輸完畢,暫時性

[root@localhost ~]# ss sport = :ssh
Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port              
  tcp    ESTAB      0      0      10.1.54.250:ssh                  10.1.250.66:50129                
[root@localhost ~]# ss dport = :ssh
Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port

ss -n dport = :ssh 目標端口destination

ss -n sport = :ssh 源端口source

常用組合:

[root@localhost ~]# ss -tan 數字格式顯示tcp連接的所有信息
State      Recv-Q Send-Q    Local Address:Port                   Peer Address:Port              
LISTEN     0      128                  *:22                                *:*                  
LISTEN     0      100        127.0.0.1:25套接字,代表一個主機               *:*                  
ESTAB     0      52          10.1.54.250:22              10.1.250.66:50129              
LISTEN     0      128                  :::22                               :::*                  
LISTEN     0      100                 ::1:25                               :::*

[root@localhost ~]# ss -tanl 數字格式顯示tcp連接的listen狀態的所有信息
State      Recv-Q Send-Q    Local Address:Port                   Peer Address:Port              
LISTEN     0      128                   *:22                              *:*                  
LISTEN     0      100           127.0.0.1:25                                *:*                  
LISTEN     0      128                  :::22                               :::*                  
LISTEN     0      100                 ::1:25                               :::*                  
[root@localhost ~]# ss -tanlp 數字格式包括PID和命令顯示tcp連接的listen狀態的所有信息
State      Recv-Q Send-Q    Local Address:Port                   Peer Address:Port              
LISTEN     0      128      *:22            *:*   
users:(("sshd",pid=1211,fd=3))LISTEN0   100   127.0.0.1   :25       *:*
users:(("master",pid=2350,fd=13))LISTEN 0      128         :::22    :::* 
users:(("sshd",pid=1211,fd=4))LISTEN  0      100     ::1:25      :::*     
users:(("master",pid=2350,fd=14))[root@localhost ~]# ss -uan 顯示PID,udp連接的所有信息
State      Recv-Q Send-Q    Local Address:Port                   Peer Address:Port              
UNCONN     0      0             127.0.0.1:323                *:*                  
UNCONN     0      0              ::1:323                    :::*

顯示所有已經建立的HTTP連接

[root@localhost ~]# ss -o state established '( dport = :http or sport = :http )'
Netid  Recv-Q Send-Q    Local Address:Port                     Peer Address:Port

找出所有連接X服務器的進程

[root@localhost ~]# ss -x src /tmp/.X11-unix/*
Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port

列出當前的socket詳細信息:

[root@localhost ~]# ss -s
Total: 548 (kernel 714)
TCP:   5 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total     IP        IPv6
*   714       -         -        
RAW   0         0         0        
UDP   2         1         1        
TCP   5         3         2        
INET   7         4         3        
FRAG  0         0         0

4、RHEL7Centos 7中默認的網絡服務有NetworkManager提供,這是動態控制及配置網絡的守護進程,在centos6中并不穩定,它用于保持當前網絡設備及連接處于工作狀態,同時也支持傳統的ifcfg類型的配置文件,支持bond to team??梢杂妹罟ぞ?/span>nmcli來控制NetworkManager,此命令需要NetworkManager是運行狀態,在7中還支持補全,使用起來功能更加強大。

nmcli命令相當于直接修改文件,重啟網絡即生效。

網絡組:是將多個網卡聚合在一起的方法,從而實現冗余和提高吞吐量。網絡組不同于bonding技術,它能提供更好的性能和擴展性,網絡組由內核驅動和teamd守護進程實現。

網絡組的方式:runner;broadcast;roundrobin;activebackup;loadbalancelacpimplements the 802.3ad Link Aggregation Control Protocol)。

5、網絡組team#和接口port#之間的關系:

啟動網絡組接口或port都不會啟動另一個;當禁止team#port一定禁止,反之不然;沒有portteam#可以啟動靜態IP;啟用DHCP連接時,沒有Portteam會等待port#的加入。

blob.png

一、課后練習

1、配置模擬路由

步驟一用兩個系統添加網卡,分別為eth0eth1,添加新網卡的配置文件。若為centos7系統,為方便可更改文件使網卡使用普通命名方式。方法如下:

方法一:編輯/etc/default/grub配置文件,將其中GRUB_CMDLINE_LINUX的內容刪除并改為GRUB_CMDLINE_LINUX=net.ifnames=0 rhgb quiet;為grub2生成其配置文件,使用命令grub2-mkconfig -o /etc/grub2.cfg;重啟系統,但并沒有生效,需要再更改網卡的配置文件device新名字,重啟網絡服務。

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.1.54.250  netmask 255.255.0.0  broadcast 10.1.255.255

        inet6 fe80::20c:29ff:fe51:3620  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:51:36:20  txqueuelen 1000  (Ethernet)

方法二:直接修改/boot/grub2/grub.cfg;將linux16開頭的一行最后添加,如下:

linux16 /vmlinuz-0-rescue-b2197fdfc4d146048b4934eb2a563b8c

root=/dev/mapper/centos-root ro    net.ifnames=0 rhgb quiet

重啟,更改文件生效。

步驟二編輯配置文件,模擬為兩個路由器,因此只需要寫如下幾行即可,

blob.png

更改四個網卡的配置文件,組成如下方式:

blob.png

關閉兩臺路由器的NetworkManager服務,關閉防火墻,重啟網絡生效。

blob.png

步驟三:添加路由

查看路由:路由器兩個端口的路由在配置完成后重啟網絡的時候就會自動生成,如果無意清空所有路由,則會出現無法添加路由或網絡不可達的狀況。使用routeroute -n查看:

blob.png

配置路由,使用命令或者直接編輯修改配置文件。此處使用命令:

blob.png

注意:路由器本機的兩個接口不需要配置,默認就可以直接到達,因為默認路由自動生成,要想到達130的網絡直接使右側路由器的eth1口經過左側路由器的eth1口即可。

blob.png

步驟四:開通路由功能

默認是無法作為路由器工作的,需要更改一個文件啟用路由功能:

blob.png

blob.png

步驟五:添加主機并測試

添加兩個主機,此處使用一個windows和一個centos7作為主機,形成如下關系:

blob.png

配置完成后,使用ping -I IPACE ####命令測試。其中windowsIP可以在高級設置里面添加一個新的IP。

blob.png

使用ping命令進行測試,先用右側的路由器對130.1網段檢測:

blob.png

再用主機對左側的centos7進行測試:

blob.png

問題:在實驗的過程中,使用左側的eth0windows主機進行ping不能通,實驗了多種方法包括重啟網絡,關閉防火墻,關閉NetworkManager服務和SELinux服務,重新配置路由皆不能成功,最后重啟并重新配置解決。證明虛擬機的此主機還是有一定的不穩定性。

2、nmcli命令配置網絡組

步驟一:添加一塊網卡,使用ifconfig -a查看名字,此處在7中改了文件,因此是普通命名方式。手動生成新網卡的配置文件。

步驟二:使用命令創建網絡組

首先啟動服務

[root@localhost network-scripts]# service NetworkManager start
Redirecting to /bin/systemctl start  NetworkManager.service

設定名稱和模式為loadbalance

[root@localhost network-scripts]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"loadbalance"}}' 
成功添加的連接 'team0'(c5d804b2-825c-40df-858f-08e15df45a66)。
[root@localhost network-scripts]# nmcli connection modify team0 ipv4.addresses 10.1.54.250/16
給定網絡為靜態,manual
[root@localhost network-scripts]# nmcli connection modify team0 ipv4.method manual
連接網卡,con-name默認為team-slave-eth0,可以自行添加
[root@localhost network-scripts]# nmcli connection add type team-slave con-name team-slave-eth0 ifname eth0 master 
team0 成功添加的連接 'team-slave-eth0'(91b061f6-57b2-41eb-a004-ec89fabebd0b)。
[root@localhost network-scripts]# nmcli connection add type team-slave con-name team-slave-eth1 ifname eth1 master 
team0 成功添加的連接 'team-slave-eth1'(b2fa5eeb-e564-4571-a218-be821d1e1770)。
[root@localhost network-scripts]# nmcli connection up team0
成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@localhost network-scripts]# nmcli device disconnect eth1
Device 'eth1' successfully disconnected.
[root@localhost network-scripts]# nmcli device connect eth1
Device 'eth1' successfully activated with '093c0f9c-2401-402d-b9cc-f97921e5c33c'.
[root@localhost ~]# nmcli connection up team-slave-eth1
成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/8)
[root@localhost ~]# teamdctl team0 state
setup:
  runner: loadbalance
ports:
  eth1
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  eth0
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0

步驟三:測試網絡組

經過測試,主備模式的網絡組在虛擬機模擬情況下依然有缺陷,像bondingmode0模式,次斷開主能用,主斷開次不能使用。其他模式相對穩定。

刪除網絡組時,將生成的所有文件刪除,重啟網絡服務即可。

原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/45655

(0)
SilencePavilionSilencePavilion
上一篇 2016-09-13
下一篇 2016-09-13

相關推薦

  • 流編輯器Sed(Stream Edit)詳解

    流編輯器Sed(Stream Edit)詳解       Grep 、sed 和awk并稱為文本三劍客。使用Grep就可以很好的實現文本查找的功能,而且簡單有效。然而其卻無法直接對其進行編輯,sed的出現便解決了這一問題。 Sed被稱為流編輯器,它是一種新型的非交互式的文本編輯器,它逐行處理文件或輸入,并將結…

    Linux干貨 2016-08-22
  • 進程和計劃任務

    一、進程概念    內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、 安全功能等 v Process:  運行中的程序的一個副本(文件),是被載入內存的一個指令集合,在內存中運行,系統指定一個內存空間和PID編號;進程ID(Process ID ,PID )號碼被用來標記各個進程;存在生命周期 &nbsp…

    Linux干貨 2016-11-27
  • 程序包管理之YUM解析

    前言:    yum是rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,如果直接使用rpm直接安裝程序包也可以,但是需要自己手工解決程序包依賴性的問題,可能程序包的依賴性非常復雜,那么直接使用rpm安莊,就會非常麻煩,而使用YUM安裝就會自動解決依賴性的問題。大大簡化了安裝過程。  YUM客戶端配置文件: …

    Linux干貨 2016-08-24
  • Linux基礎知識之磁盤及文件系統管理(二)

    1.磁盤和文件系統管理: 文件系統管理工具:     創建文件系統工具(文件系統建議使用ext4)     (1)mkfs.FS_TYPE         a.mkfs.{ext2,ext3,ext4…

    Linux干貨 2016-08-29
  • 磁盤管理

    磁盤設備 一切皆文件 所有的Linux中的設備都可以使用下面命令進行操作:open(), read(), write(), close()(這些是C的函數) 塊設備:隨機訪問 字符設備:線性訪問 設備號碼: 主設備號:major number,標識設備類型 8是主要設備編號,代表類型 次設備號:minor number…

    Linux干貨 2016-09-01
  • 說說linux權限管理(1)

    在這篇文章當中你可以看到: 1、linux系統文件普通權限 2、文件所屬主的設置,組的指定 3、特殊權限 4、acl權限 5、su命令及其注意事項和sudo權限 6、權限管理的注意點 0、首先,在linux下用戶賬戶是分角色的,由于角色的不同,每個角色,每個用戶的的權限和所能完成的任務也不同。而在實際管理中,用戶的角色是通過UID(用戶id號)來標識的,每個…

    Linux干貨 2016-04-30
欧美性久久久久