机器进行多网卡绑定

多网卡bonding

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP 地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

Bonding 聚合链路工作模式

bond聚合链路模式共7种模式:0-6 Mode

mod=0 (balance-rr) Round-robin policy(轮询)

聚合口数据报文按包轮询从物理接口转 发。 负载均衡:所有链路处于负载均衡状态

mod=1 (active-backup) Active-backup policy(主-备份策略)

只有Active状态的物理接口 才转发数据报文。 容错能力:只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他 的slave都处于备份状态

mod=2 XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目 端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文

负载均衡:基于指定的传输HASH策略传输数据包。容错能力:这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上

mod=3 broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接 口分别发送出去。

当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容 错机制。此模式适用于金融行 业,因为他们需要高可靠性的网络,不允许出现任何问题。

mod=4, IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)

聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态通 过该协议自动进行维护。

mod=5, Adaptive transmit load balancing(适配器传输负载均衡)

在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口 出故障了,另一个物理接口接管该故障物理口的MAC地址。需要ethtool支持获取每个slave的速率

mod=6, Adaptive load balancing(适配器适应性负载均衡)

该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何 switch(交换机)的支持。接收负载均衡是通过ARP协商实现的

常用的模式为 0,1,3,6
mode 1、5、6 不需要交换机设置
mode 0、2、3、4需要交换机设置,而且不同类型的交换机设置的时候会有不一样,如Cisco交换机需要在
0,2,3模式中使用 EtherChannel,在4模式中需要使用 LACP和EtherChannel

bonding的实现

修改配置文件实现

[root@rocky86 ~]# cd /etc/sysconfig/network-scripts/
#创建bond配置文件
[root@rocky86 network-scripts]# vim ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.10.100
PREFIX=24
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1" #工作模式为主备,心跳检测间隔为100ms
#创建网卡配置文件
[root@rocky86 network-scripts]# vim ifcfg-eth1
NAME=eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
[root@rocky86 network-scripts]# vim ifcfg-eth2
NAME=eth2
DEVICE=eth2
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes

删除:

[root@rocky86 network-scripts]# nmcli conn down bond0
Connection 'bond0' successfully deactivated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/6)
[root@rocky86 network-scripts]# rm -f ifcfg-bond0 ifcfg-eth1 ifcfg-eth2
[root@rocky86 network-scripts]# nmcli conn reload;nmcli conn

在ubuntu中实现bonding 


[root@ubuntu ~]# cat /etc/netplan/bond0.yaml 
network:
 ethernets:
   eth1:
     addresses: []
     dhcp4: false
   eth2:
     addresses: []
     dhcp4: false
 version: 2
 bonds:
   bond0:
     addresses: [192.168.10.123/24]
     interfaces: [eth1,eth2]
     parameters:
      mode: balance-rr #bond工作模式,轮询
       
#生效   
[root@ubuntu ~]# netplan apply 
#测试,观察两块网卡流量数据
[root@ubuntu ~]# ifconfig -s
#另外一台主机执行 ping 192.168.10.123
```

网络组Network teaming

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现

网络组特点 :

启动网络组接口不会自动启动网络组中的port接口

启动网络组接口中的port接口总会自动启动网络组接口

禁用网络组接口会自动禁用网络组中的port接口

没有port接口的网络组接口可以启动静态IP连接

启用DHCP连接时,没有port接口的网络组会等待port接口的加入

修改配置文件实现 
[root@rocky86 ~]# cd /etc/sysconfig/network-scripts/
#创建team接口文件
[root@rocky86 network-scripts]# vim ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\":{\"name\":\"loadbalance\"}}"
BOOTPROTO=none
IPADDR=192.168.10.100
PREFIX=24
NAME=team0
ONBOOT=yes
#创建port配置文件
[root@rocky86 network-scripts]# vim ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes
#创建port配置文件
[root@rocky86 network-scripts]# vim ifcfg-team0-eth2
DEVICE=eth2
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth2
ONBOOT=yes
#启用
[root@rocky86 network-scripts]# nmcli con reload;nmcli con up team0
Connection successfully activated (master waiting for slaves) (D-Bus active 
path: /org/freedesktop/NetworkManager/ActiveConnection/50)

 在ubuntu中实现

用 nmcli 工具添加 team,设置为主备模式
[root@ubuntu ~]# nmcli con add type team con-name team0 ifname team0 config 
'{"runner":{"name":"activebackup"}}' ipv4.addresses 192.168.10.100/24 ipv4.method 
manual ipv6.method disabled
Connection 'team0' (b7c10560-9ee5-4cc8-bddf-0e903da10321) successfully added.
[root@ubuntu ~]# nmcli con add con-name team0-eth1 type team-slave ifname eth1 
master team0
Connection 'team0-eth1' (2efb14fb-80d6-43e3-8eb9-a10e577ef515) successfully 
added.
[root@ubuntu ~]# nmcli con add con-name team0-eth2 type team-slave ifname eth2 
master team0
Connection 'team0-eth2' (c0f34ce0-6e14-488a-b5cf-6704fdb14cac) successfully 
added.
#重载
[root@ubuntu ~]# nmcli con reload
#启用
[root@ubuntu ~]# nmcli con up team0
Connection successfully activated (master waiting for slaves) (D-Bus active 
path: /org/freedesktop/NetworkManager/ActiveConnection/18)
#查看
[root@ubuntu ~]# nmcli con
NAME         UUID                                 TYPE     DEVICE 
netplan-eth0 626dd384-8b3d-3690-9511-192b2c79b3fd ethernet eth0   
team0         b7c10560-9ee5-4cc8-bddf-0e903da10321 team     team0  
team0-eth1   2efb14fb-80d6-43e3-8eb9-a10e577ef515 ethernet eth1   
team0-eth2   c0f34ce0-6e14-488a-b5cf-6704fdb14cac ethernet eth2
#生成的配置文件
[root@ubuntu ~]# ll /etc/NetworkManager/system-connections/team0*
-rw------- 1 root root 157 May 18 16:34 /etc/NetworkManager/systemconnections/team0-eth1.nmconnection
-rw------- 1 root root 157 May 18 16:34 /etc/NetworkManager/systemconnections/team0-eth2.nmconnection
-rw------- 1 root root 256 May 18 16:34 /etc/NetworkManager/systemconnections/team0.nmconnection
#安装软件包
[root@ubuntu ~]# apt install libteam-utils -y
#teamdctl 来自于该包
[root@ubuntu ~]# dpkg -S /usr/bin/teamdctl 
libteam-utils: /usr/bin/teamdctl
#查看,当前是 eth1在工作
[root@ubuntu ~]# teamdctl team0 state
setup:
 runner: activebackup
ports:
 eth1
   link watches:
     link summary: up
     instance[link_watch_0]:
       name: ethtool
       link: up
       down count: 0
 eth2
   link watches:
     link summary: up
     instance[link_watch_0]:
       name: ethtool
       link: up
       down count: 0
runner:
 active port: eth1
 #测试
root@ubuntu2204:~# ping 192.168.10.100

 

网桥(交换机)

此处的网桥是逻辑上的网桥,说的是网络上的一个桥梁,打通网路,而不是硬件设备。

桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其 他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口, 并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

#网桥
[root@rocky86 network-scripts]# nmcli con add type bridge con-name br0 ifname br0
Connection 'br0' (deedb558-72d9-4cd9-b136-08917304d777) successfully added.
#启用
[root@rocky86 network-scripts]# nmcli con up br0
Connection successfully activated (master waiting for slaves) (D-Bus active 
path: /org/freedesktop/NetworkManager/ActiveConnection/4)
#加网卡
[root@rocky86 network-scripts]# nmcli con add type bridge-slave con-name br0-
port0 ifname ens160 master br0
Connection 'br0-port0' (0ec95062-a194-423c-b120-662f8c9f7bb3) successfully 
added.
#加网卡
[root@rocky86 network-scripts]# nmcli con add type bridge-slave con-name br0-
port1 ifname ens192 master br0
Connection 'br0-port1' (49eba769-25e6-4794-945e-6190e5795cd6) successfully 
added.
#启用网卡
[root@rocky86 network-scripts]# nmcli con up br0-port0
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/7)
#启用网止
[root@rocky86 network-scripts]# nmcli con up br0-port1
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/8)
#查看
[root@rocky86 network-scripts]# nmcli con
#查看网桥
[root@rocky86 network-scripts]# nmcli dev show br0

删除禁用

[root@rocky86 network-scripts]# nmcli con down br0
[root@rocky86 network-scripts]# nmcli con del  br0

 

STP 生成树协议

正常情况下,三台交换机,连两条网线,但这种情况下,如果断掉了一条线,则网络就会中断,为了解 决此问题,三台交换机,连三线网线,这样,如果断了一条线,网络还是可用的,但这样会形成一个环 形网络,由于交换机执行广播请求,那这种网络会造成网络风暴,所以需要启用stp规避此问题 。

网络测试诊断工具

作用

工具/命令

测试网络联通

fping

显示正确路由表

IP route route

跟踪路由

traceroute tracepath mtr

确定服务器的使用

nslookup host dig

抓包工具

tcpdump wireshark

安全扫描

nmap netcat(nc)

流量控制工具

tc

 

fping

相对于ping多个主机时性能要高得多。 fping完全不同于ping,可以在命令行上定义任意数量的主机, 或者指定包含要ping的IP地址或主机列表的文件, 常在shell 脚本中使用

#-g 选项可以指定网段或地址范围
[root@ubuntu ~]# fping -g 10.0.0.0/24
#对文件中的主机进行测试
[root@ubuntu ~]# tee hosts.txt <<EOF
10.0.0.7
10.0.0.6
EOF
10.0.0.7
10.0.0.6
[root@ubuntu ~]# fping -s < hosts.txt
10.0.0.6 is alive
10.0.0.7 is unreachable
       2 targets
       1 alive
       1 unreachable
       0 unknown addresses
       1 timeouts (waiting for response)
       5 ICMP Echos sent
       1 ICMP Echo Replies received
       0 other ICMP received
0.07 ms (min round trip time)
0.07 ms (avg round trip time)
0.07 ms (max round trip time)
        4.080 sec (elapsed real time)

 

tcpdump

网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等 逻辑语句帮助去除无用的信息。

#常用选项
-a 							#以主机名来显示
-c 							#达到数量后就不再抓包
-d 							#友好格式显示
-dd 						#友好格式显示
-ddd 						#十进制格式显示
-e 							#显示链路层信息
-f 							#以数字格式显示IP
-i 							#指定设备
-n 							#不转换主机名和IP地址
-N 							#不显示域名
-q 							#快速输出,只显示少量指标
-r 							#从指定的文件读取数据
-s 							#指定数据包大小
-S 							#用绝对数字显示TCP关联数
-t 							#不显示时间
-tt 						#显示时间戳
-T 							#指定输出的类型
-v 							#详细显示指令执行过程。
-vv 						#显示详细过程
-x 							#十六进制输出
-w 							#将输出内容写到指定文件

 

#查看网卡
[root@ubuntu ~]# tcpdump -D
#监听特定网卡
[root@ubuntu ~]# tcpdump -i eth0
#监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。
[root@ubuntu ~]# tcpdump host 10.0.0.100
#特定来源
[root@ubuntu ~]# tcpdump src host hostname
#特定目标地址
[root@ubuntu ~]# tcpdump dst host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
[root@ubuntu ~]# tcpdump host hostname

#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
tcpdump tcp
#来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包
tcpdump tcp port 22 and src host 10.0.0.100
#监听特定主机之间的通信
tcpdump ip host 10.0.0.101 and 10.0.0.102
#10.0.0.101和除了10.0.0.1之外的主机之间的通信
tcpdump ip host 10.0.0.101 and ! 10.0.0.1

 

#详细示例
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 :设置为0表示使用默认值262144字节抓取每个包,以便与tcpdump的旧版本兼容
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用wireshark分析
#限制抓包的数量,如下,抓到1000个包后,自动退出
tcpdump -c 1000
#保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,
才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)
tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

nmap

扫描远程主机工具,比发送 ICMP 报文的 ping 命令的功能要强大很多

#命令选项
-sT   			#TCP connect() 扫描,这是最基本的 TCP 扫描方式。
-sS  	 		#TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描
-sF|-sX|-sN 	#秘密扫描模式
-sP     		#ping 扫描,主机阻塞ICMP echo请求包是ping扫描是无效的
-sU  	 		#UDP 的数据包进行扫描,想知道在某台主机上提供哪些 UDP 服务,可以使用此选项    
-sA   			#ACK 扫描,这项高级的扫描方法通常可以用来穿过防火墙。    
-sW   			#滑动窗口扫描,非常类似于 ACK 的扫描    
-sR   			#RPC 扫描,和其它不同的端口扫描方法结合使用。    
-b     			#FTP 反弹攻击 (bounce attack),连接到防火墙后面的一台 FTP 服务器做代理,接着进行端口扫描。
-P0   			#在扫描之前,不 ping 主机。    
-PT   			#扫描之前,使用 TCP ping 确定哪些主机正在运行    
-PS   			#对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。    
-PI   			#设置这个选项,让 nmap 使用真正的 ping(ICMP echo 请求)来扫描目标主机是否正在运行。   
-PB   			#默认的ping扫描选项,使用 ACK(-PT) 和 ICMP(-PI) 两种扫描类型并行扫描,能够穿过防火墙
-O   			#这个选项激活对 TCP/IP 指纹特征 (fingerprinting) 的扫描,获得远程主机的操作系统类型
-I   			#打开 nmap 的反向标志扫描功能。    
-f   			#使用碎片 IP 数据包发送 SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度
-v   			#冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S IP   		#在一些情况下,nmap 可能无法确定你的源地址 。在这种情况使用这个选项给出指定 IP 地址
-g port   		#设置扫描的源端口
-oN   			#把扫描结果重定向到一个可读的文件 logfilename 中  
-oS   			#扫描结果输出到标准输出。    
--host_timeout   #设置扫描时间,以毫秒为单位。默认的情况下,没有超时限制    
--max_rtt_timeout #设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时
--min_rtt_timeout #设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位    
-M count   		#置进行 TCP connect() 扫描时,最多使用多少个套接字进行并行的扫描

 

#Tcp ack 扫描,并发2000,速度快
nmap -n -PA --min-parallelism 2000 172.16.0.0/16
#仅列出指定网段上的每台主机,不发送任何报文到目标主机.
[root@ubuntu ~]# nmap -sL 10.0.0.0/24
#可以指定一个IP地址范围
[root@ubuntu ~]# nmap -sP 10.0.0.1-10
#批量扫描一个网段的主机存活数
nmap -sP -v 192.168.1.0/24
nmap –v –sn ip/24 
#有些主机关闭了ping检测,所以可以使用-P0跳过ping的探测,可以加快扫描速度.
nmap -P0 192.168.1.100
#扫描主机
nmap –v –A IP 
#一次性扫描多台目标主机
[root@ubuntu ~]# nmap 10.0.0.6 10.0.0.7
#从一个文件中导入IP地址,并进行扫描
[root@ubuntu ~]# cat hosts.txt
[root@ubuntu ~]# nmap -iL hosts.txt
#探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)
[root@ubuntu ~]# nmap -PS22,80,443 10.0.0.1
#使用SYN半开放扫描
[root@ubuntu ~]# nmap -sS 10.0.0.1
#扫描开放了TCP端口的设备
[root@ubuntu ~]# nmap -sT 10.0.0.1
#扫描开放了UDP端口的设备
[root@ubuntu ~]# nmap -sU 10.0.0.1
#只扫描UDP端口
nmap –e eth1 -sU -O 10.0.0.1  
#扫描TCP和UDP端口
nmap -sTU -O 10.0.0.1
#用于扫描目标主机服务版本号
[root@ubuntu ~]# nmap -sV 10.0.0.7
#查看主机当前开放的端口
nmap localhost    
#查看主机端口(1024-65535)中开放的端口
nmap -p 1024-65535 localhost  
#探测目标主机开放的端口
nmap -PS 10.0.0.1   
#探测所列出的目标主机端口
nmap -PS22,80,3306 10.0.0.1  
#探测目标主机操作系统类型
nmap -O 10.0.0.1
#探测目标主机操作系统类型
nmap -A 10.0.0.1

nc的作用

实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

端口的扫描,nc可以作为client发起TCP或UDP连接

机器之间传输文件

机器之间网络测速

-g 					#设置路由器跃程通信网关,最多可设置8个
-G 					#设置来源路由指向器,其数值为4的倍数
-i|--idle-timeout 	#设置时间间隔,以便传送信息及扫描通信端口。
-l| --listen 		#使用监听模式,管控传入的资料。
-n|--nodns 			#直接使用IP地址,而不通过域名服务器。
-o|--output 		#将输出内容写文件
-p|--source-port 	#指定本机端口
-s|--source 		#指定本机IP
-u|--udp 			#使用UDP传输协议
-v|--verbose 		#显示过程
-w|--wait 			#设置超时时间
#安装nc
[root@ubuntu ~]# apt -y install netcat-openbsd
[root@centos8 ~]# yum -y install nc
#探测TCP协议
[root@ubuntu ~]# nc -zv   10.0.0.101 22
Connection to 10.0.0.101 22 port [tcp/ssh] succeeded!
[root@ubuntu1804 ~]#nc -zv   10.0.0.101 2222
nc: connect to 10.0.0.101 port 2222 (tcp) failed: Connection refused
#探测UDP协议
[root@ubuntu ~]# nc -zv -u 10.0.0.101 2049
Connection to 10.0.0.101 2049 port [udp/nfs] succeeded!
[root@ubuntu ~]# nc -zv -u 10.0.0.101 111
Connection to 10.0.0.101 111 port [udp/sunrpc] succeeded!
[root@ubuntu ~]# nc -zv -u 10.0.0.101 123

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白了个白i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值