学习运维——管理IPv6网络及高级网络配置

来源:互联网 发布:阿里云dns如何设置 编辑:程序博客网 时间:2024/05/17 00:53

一、IPv6网络的管理

1.简介

       IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议,号称可以为全世界的每一粒沙子编上一个网址,由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍

2.表示方法

IPv6的地址长度为128b,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。

1>冒分十六进制表示法
  格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:
  ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
  这种表示法中,每个X的前导0是可以省略的,例如:
  2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A

2>0位压缩表示法
  在某些情况下,一个IPv6地址中问可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,
       例如:
  FF01:0:0:0:0:0:0:1101 → FF01::1101
  0:0:0:0:0:0:0:1 → ::1
  0:0:0:0:0:0:0:0 → ::

3>内嵌IPv4地址表示法
  为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用


3.检测 IPv6 网络的工具
• ping6 2001:db8:0:1::1
• tracepath6 2001:db8:0:2::451
• netstat -46n
– n
– t
– u
– L
– a
– p

4.IPv6 的命令设定
• nmcli connection add con-name eth0 ifname eth0 type ethernet ip6 2014::1 gw6 2014::5
– ip addr show
– ip -6 route

5.IPv6 的文件设定
• vim /etc/sysconfig/network-scripts/ifcfg-eth0
– IPV6_AUTOCONF=no
– IPV6INIT=yes
– IPV6ADDR=2014::1/64
– IPV6_DEFAULTGW=2014::5

linux下怎么配置IPv6
1>先删除IPv4的网络配置#rm -fr /etc/sysconfig/network-scripts/ifcfg-eth0      #删除IPv4的网络配置文件

2>新建IPv6的网络配置文件#nmcli connection add con-name westos ifname eth0 type ethernet ip6 2017::8/24

3>重启网络#systemctl restart network

4>ping6 2017::8        ##如果ping通就配置正确


二、桥接
桥接(Bridging),是指依据OSI网络模型的链路层的地址,对网络数据包进行转发的过程,工作在OSI的第二层。一般的交换机,网桥就有桥接作用。
就交换机来说,本身有一个端口与mac的映射表,通过这些,隔离了冲突域(collision)。 简单的说就是通过网桥可以把两个不同的物理局域网连接起来,是一种在链路层实现局域网互连的存储转发设备。网桥从一个局域网接收MAC帧,拆封、校对、校验之后 ,按另一个局域网的格式重新组装,发往它的物理层,通俗的说就是通过一台设备(可能不止一个)把几个网络串起来形成的连接。


网络桥接的管理命令
brctl
### 桥接管理命令
– show ### 显示
– addbr ### 添加网桥
– delbr ### 删除网桥
– addif ### 添加网桥连接
– delif ### 删除网桥连接


1.linux下怎么配置网络桥接
1>先将原先的网桥文件备份到/mnt下
#mv /etc/sysconfig/network-scripts/ifcfg-br0 /etc/sysconfig/network-scripts/ifcfg-enp2s0 /mnt 

2>#nm-connection-editor
我们要在真机上删掉两个Ethernet下的System enp2s0,Bridge下面的Bridge enp2s0


3>编写网桥文件
#vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
NAME="Bridge enp2s0"
ONBOOT=yes
BOOTPROTO=none
IPADDR0=172.25.254.90
PREFIX0=24
IPADDR1=172.25.90.250
PREFIX1=24
TYPE=Bridge

# vim /etc/sysconfig/network-scripts/ifcfg-enp2s0
DEVICE=enp2s0
BOOTPROTO=none
BRIDGE=br0
ONBOOT=yes
TYPE=Ethernet
NAME="System enp2s0"

4>重启网络
#systemctl restart network

在虚拟机中配置网桥:
1.先删除IPv4的配置
2.
#brctl addbr br0        ##添加网桥br0
#brctl show               ##显示当前网桥
#brctl addif br0 eth0 ##将网桥配在网卡上
#brctl show               ##显示当前网桥
#ifconfig                    ##此时我们会看到网桥br0就被我们配置好了





三、多网卡绑定

• Red Hat Enterprise Linux 允许管理员使用bonding 内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定到一个通道。根据选择的绑定模式 , 通道绑定使两个或更多个网络接口作为一个网络接口 , 从而增加带宽和 / 提供冗余性

·将多个Linux网络端口绑定为一个,可以提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据,如果使用单个的千兆网口将会是很严重的瓶颈。其它的应用,比如ftp服务器,高负载的下载网站, 都有类似的问题。因此使用Linux teaming或bond来绑定多个网卡作为一个逻辑网口,配置单个的IP地址,会大幅提升服务器的网络吞吐(I/O)。

·Linux的多网卡绑定功能使用的是内核中的"bonding"模块,关于此模块可以参考Linux Ethernet Bonding Driver文档, 但是目前发布各个Linux版本内核均已包含了此模块,大多数情况下不需要重新编译内核。 Linux 的 bonding 驱动提供了绑定/集成(bond)多个网卡为一个虚拟逻辑网口的功能。并请注意绑定的网口(bonded)有多种工作模式; 一般来说,分为 热后备(hot standby) 和 负载均衡(load balancing). 在Redhat/Fedora和其它类Redhat Linux中是比较容易配置的。

·网卡绑定mode共有七种(0~6) bond0bond1bond2bond3bond4bond5bond6

常用的有三种

mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。


·需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里options bond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从原理分析一下(bond运行在mode 0下):


·mode 0bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ethernetchannelfoundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们的解 决办法是,两个网卡接入不同的交换机即可。

mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址。



0. mode=0 ,即:(balance-rr)Round-robin policy(平衡抡循环策略)
   特点:传输数据包顺序是依次传输(第一个包走第一个接口,第二个包走第二个接口……),;此模式下,同一连接/会话的数据包可能使用不同的接口进行传输(走不同的路由路径),到达目的地的数据可能是无序的, 而无序到达的数据包需要重新要求被发送,进而导致网络的吞吐量下降。
  此模式提供负载平衡和容错能力
1. mode=1,即: (active-backup)Active-backup policy(主-备份策略)
  特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N
  此模式只提供了容错能力
2. mode=2,即:(balance-xor)XOR policy(平衡策略)
  特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址)% slave数量。其他的传输策略可以通过xmit_hash_policy选项指定。在此策略下,同一会话的数据包会使用同一个接口传输。
  此模式提供负载平衡和容错能力
3. mode=3,即:broadcast(广播策略)
  特点:在每个slave接口上传输每个数据包,
  此模式提供了容错能力
4. mode=4,即:(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章节提及的包乱序问题。不同的实现可能会有不同的适应 性。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定
条件2:switch(交换机)支持IEEE802.3ad Dynamic link aggregation
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式
5. mode=5,即:(balance-tlb)Adaptive transmit load balancing(适配器传输负载均衡)
  特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
  该模式的必要条件:ethtool支持获取每个slave的速率
6. mode=6,即:(balance-alb)Adaptive load balancing(适配器适应性负载均衡)
  特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

选择 Linux 以太网绑定模式
• 模式 0 ( 平衡轮循 ) - 轮循策略 , 所有接口都使用采用轮循方式在所有 Slave 中传输封包 ; 任何Slave 都可以接收
• 模式 1 ( 主动备份 ) - 容错。一次只能使用一个Slave 接口 , 但是如果该接口出现故障 , 另一个Slave 将 接替它
• 模式 3 ( 广播 ) - 容错。所有封包都通过所有Slave 接口广播



配置Bond网卡绑定:
前提是有多块网卡,我用的是虚拟机

先用ifconfig看看是不是两块网卡,如果不是用虚拟机管理器给虚拟机添加一块虚拟网卡;
删掉IPv4的配置

上面事情完毕之后,开始配置
做以下操作时打开另一个终端监控:#watch -n 1 cat /proc/net/bonding/bond0

1.添加bonding模块
#nmcli connection add con-name bond0 ifname bond0 type bond active-backup ip4 172.25.254.190/24
用写配置文件的方式:
/etc/sysconfig/network-scripts/ifcfg-bond0
– DEVICE="bond0"
– BOOTPROTO="none"
– IPADDR="10.1.1.250"
– PREFIX=”24”
– ONBOOT="yes"
– BONDING_OPTS=”mode=1 miimon=50”
2.设置网卡eth0为bond0服务
#nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0

3.设置网卡eht1为bond0服务
#nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0

4.打开另一个终端监控我们是否配置正确:#ping 172.25.254.90
在bond1模式下,即使一块网卡宕掉,另一块网卡会立即顶上,网一直是通的

5.我们来测试4里说的异常情况
#ifconfig eth0 down
如果配置正确的话,此时网一直是通的

6.恢复eth0
#ifconfig eth0 up


#nmcli connection delete eth0            ##删除eth0
#nmcli connection delete eth1            ##删除eth1
#nmcli connection delete bond0         ##删除bond0





Team 的种类
•broadcast             广播容错
•roundrobin            轮询
•activebackup        主·备份策略
•loadbalance         负载均衡



配置Team
1.添加team模块
# nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.190/24

2.查看是否有Team模块
#ifconfig

3.监控Team的工作情况
#watch -n 1 teamctl team0 stat

4.打开另一个终端来监控Team配置是否正确
#ping 172.25.254.90

5.设置eth0为team0工作
#nmcli connection add con-name eth0 type team-slave ifname eth0 master team0

6.设置eth1为team0工作
#nmcli connection add con-name eth1 type team-slave ifname eth1 master team0

7.模拟异常情况
#ifconfig eth0 down

8.恢复eth0
#ifconfig eth0 up




0 0