网络相关的学习和命令总结

工作两年后,发现sheel脚本用的挺多,一直感觉自己用的还可以,后来才发现很多地方自己不够清楚,特写下这篇博客对用到的地方进行总结。

一、route

  直连路由:是直接连接在路由器接口的网段,由路由器自动生成,属于静态路由。

  非直连路由:是不直接连接在路由器接口的网段,此记录需要手动添加(静态路由)或者是使用动态路由。。

estination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.198.0   *               255.255.255.0   U     1      0        0 eth0
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
default         192.168.198.2   0.0.0.0         UG    0      0        0 eth0

 route命令的输出项说明:

Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:
  U — 路由是活动的
  H — 目标是一个主机
  G — 路由指向网关
  R — 恢复动态路由产生的表项
  D — 由路由的后台程序动态地安装
  M — 由路由的后台程序修改
  ! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口

3种路由类型:

  主机路由:

主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如,在下面的示例中,本地主机通过IP地址192.168.1.1

的路由器到达IP地址为10.0.0.10的主机。

Destination    Gateway       Genmask          Flags     Metric    Ref    Use    Iface
-----------    -------     -------            -----     ------    ---    ---    -----
10.0.0.10     192.168.1.1    255.255.255.255   UH        0           0      0    eth0

  网络路由:

网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的实例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为

192.168.1.1的路由器上

Destination    Gateway       Genmask         Flags    Metric    Ref     Use    Iface
-----------    -------     -------         -----    -----   ---    ---    -----
192.19.12.0     192.168.1.1    255.255.255.0      UN      0       0        0    eth0

  默认路由

当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。例如,在

下面的示例中,默认路由是IP地址为192.168.1.1的路由器。

Destination    Gateway       Genmask   Flags     Metric    Ref    Use    Iface
-----------    -------     ------- -----      ------    ---    ---    -----
default       192.168.1.1     0.0.0.0    UG         0        0     0    eth0

       首先给出两个结论:

  ①、同一台服务器只有一个路由表,因此如果两个物理网卡配置为同一个网断的IP,会有一个网卡收不到数据,因为经过路由查找时,只会经过第一路由表项。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
192.168.1.0   0.0.0.0         255.255.255.0   U     1      0        0 eth1

  ②、同一个网卡,如果被设置为两个网段的IP(虚IP),只有一个可以通的,经过路由查找时,会过滤掉第二路由项。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
192.168.2.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0:1

  本质上可以讲在同一个服务器上,因为只有一个路由表,所以一个网段只能有一个路由项同时一个网卡也只能有一个路由项,就比如上面的例子,第一个例子中是有两个路由表项(会全部通过第一个),第二个例子中也是有两个路由表项(忽略第二个,所以不能访问)。

                          

 

二、以太网三张表

  arp表、路由表和交换机表

  可参考链接:https://cloud.tencent.com/developer/article/1173761

  可参考链接:https://blog.51cto.com/dengqi/1223132

三、arping

  arping主要用来:是查看ip的MAC地址及IP占用的问题

  arp -a:看缓存表。

四、bonding

  bond原理:网卡工作在混杂(promisc)模式,接收到达网卡的所有数据包,tcpdump工作用的也是混杂模式(promisc),将两块网卡的 MAC地址修改为相同接收特定MAC的数据帧,然后把相应的数据帧传送给bond驱动程序进行处理

  bond模式(0、1、6用的多):

  bond0(balance-rr) Round-robin policy平衡轮询策略,Bond0可以保证bond虚拟网卡和被bond的两张或多张物理网卡拥有相同的MAC地址,其中bond虚拟网卡的MAC地址是其中一张物理网卡的MAC地址,而bond虚拟网卡的MAC地址是根据bond自己实现的一个算法来选择的。在bond0模式下,如果一个连接或者会话的数据包从不同的网口发出,途中再经过不同的链路,则在客户端很有可能会出现数据包无序到达的现象,而无序到达的数据包一般需要重新发送,这样网络的吞吐量就会下降。同时,如果做bond0的两张或多张网卡接到了同一交换机上,还需对其配置聚合模式(原因是交换机表不能处理一个mac地址对应多个网端口)。
  bond1(active-backup)Active-backup policy主备策略,mac地址是外部可见的,所以交换机不需要做配置,还有5和6

  bond2(balance-xor) XOR policy 平衡策略,基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,交换机需要静态聚合。

  bond3 broadcast 广播策略,在每一个slave接口上传输每一个数据包,此模式提供了容错能力,交换机需要静态聚合。

  bond4 (802.3ad)IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态连接聚合),建立一个聚合组,它们共享一样的速率和双工设定。根据802.3ad规范将多个slave工做在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略能够经过xmit_hash_policy选项从缺省的XOR策略改变到其余策略。须要注意的 是,并非全部的传输策略都是802.3ad适应的,尤为考虑到在802.3ad标准43.2.4章节说起的包乱序问题。不一样的实现可能会有不一样的适应 性。

  必要条件:ethtool支持获取每一个slave的速率和双工设定;switch(交换机)支持IEEE802.3ad Dynamic link aggregation;大多数switch(交换机)须要通过特定配置才能支持802.3ad模式

  bond5(balance-tlb)Adaptive transmit load balancing适配器传输负载均衡,不须要任何特别的switch(交换机)支持的通道bonding。在每一个slave上根据当前的负载(根据速度计算)分配外出流量。若是正在接受数据的slave出故障了,另外一个slave接管失败的slave的MAC地址。

  必要条件:ethtool支持获取每一个slave的速率。

  bond6(balance-alb) Adaptive load balancing适配器适应性负责均衡,该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb),并且不须要任何switch(交换机)的支持。接收负载均衡是经过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的惟一硬件地址,从而使得不一样的对端使用不一样的硬件地址进行通讯。

  来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,所以对端学习到这个硬件地址后,接收流量将会所有流向当前的slave。这个问题能够经过给全部的对端发送更新(ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而致使流量从新分布。当新的slave加入到bond中时,或者某个未激活的slave从新 激活时,接收流量也要从新分布。接收的负载被顺序地分布(roundrobin)在bond中最高速的slave上当某个链路被从新接上,或者一个新的slave加入到bond中,接收流量在全部当前激活的slave中所有从新分配,经过使用指定的MAC地址给每一个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答 不会被switch(交换机)阻截。

  必要条件: 条件1:ethtool支持获取每一个slave的速率;条件2:底层驱动支持设置某个设备的硬件地址,从而使得老是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每一个 bond 中的slave都有一个惟一的硬件地址。若是curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本同样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量

posted @ 2020-07-31 19:57  月光下的脚步  阅读(256)  评论(0编辑  收藏  举报