※简介※
对于服务器而言多网卡是标配,针对不同需求,如何充分利用是集成运维时应该思考的问题,比如为了冗余可以配置双网卡绑定,为了连接多网段我们可以启用路由转发,但有时我们仅仅是想要连接两个独立的终端,或两个hub,配置多网卡的网桥模式,更合时宜。
一、桥接、交换、路由?
①、桥接
为了让同学们更充分理解需求,在讲网桥之间,我们需要了解一下什么是桥接、交换、路由?首先是桥接,其工作在OSI网络参考模型的第二层数据链路层,是一种以mac地址来作为判断依据来讲网络划分为两个不同物理段的技术,其工作机制就是将物理网络段(即冲突域)进行分割,根据mac地址来判断连接两个物理网段的计算机的数据包发送。
举个例子如上图有两台集线器分别连接多台计算机,我们分别将A集线器和B集线器定为A冲突域和B冲突域,如果两个集线器之间是直连的。在这样的网络环境中,如果计算机M1向计算机M4发送数据包时,集线器A会将数据包在整个网络中的全部计算机(包括集线器B)发送一遍,而不管这些数据包是不是需要发送到另一台区域B。
而如果我们再将集线器A和集线器B分别连接到网桥的两个端口上,如果计算机M1再向计算机M4发送数据包时会遇到什么样的情况呢?这时集线器A也是同样会将数据包在全网发送,当到达网桥后,网桥会进行数据包目的MAC地址的分析,然后对比自己学习到的MAC地址表,如果这个表中没有此MAC地址,网桥便会在两个网段上的发送数据包,同时会将计算机A的MAC地址记录在自己的表当中。
经过多次这样的记录,网桥会将所有的MAC地址记录,并根据网桥的两个接口划分成两个物理网段,这时计算机M1再次发送数据包给M4的时候,数据包到达网桥时,网桥会将目的MAC地址和自己的表进行对比,并且判断计算机M1和计算机M4是否在同一个段位上,如果是便不会转发到区域B当中,而如果不在同一个物理段当中,网桥便会允许数据包通过网桥。
通过以上的例子我们了解到,网桥实际上是一种控制冲突域流量的设备,即隔离冲突域。而事实上网桥现在基本上已经很少用到了,因为交换和路由设备已经很普遍存在了。目前桥接更多的应用不是多网卡做网桥,而是用来虚拟系统与外部的桥接,比如常用的vmware的桥接,和docker容器的网络栈。
②、交换
交换同样工作在OSI网络参考模型的第二层数据链路层,也是一种以MAC地址来作为判断依据来将网络划分成两个不同段的技术,不同的是交换将物理网段划分到每一个端口当中,简单的理解就是一种多端口的网桥,它实际上是一种桥接技术的延伸,可以理解为交换机的每个端口都是一个网桥。
了解数通交换路由的同学应该知道,交换机系统有一张mac地址交换表,记录的是mac地址和接口的表,有别于arp表的mac地址和ip对应关系,交换机通过自我学习记录mac地址和接口的对应关系来隔离冲突域。
②、路由
路由有别于上面两个,其工作在OSI参考模型的第三层网络层中,基于第三层ip地址和其的子网掩码信息来作为判断依据将网络划分为不同子网段从而寻径转发的技术。
路由划分的是独立的逻辑网段,具有隔离广播的能力,而桥接和交换是划分的物理网段,仅仅是将物理传输介质进行分段处理。同时路由具备路径选择的能力,根据不同目的ip、开销等分析到达目的最合适的路径。
有的同学可能说vlan不也是交换机的配置嘛,但vlan走的是三层的路由协议,交换机之所以支持是因为集成了三层路由的功能,我们说的三层交换机是交换和路由的集合体。
二、linux多网卡网桥配置
①、安装bridge软件:
ubuntu下安装:
$sudo apt-get install bridge-utils
rehad/centos下安装:
# yum -y install bridge-utils#
②、命令brctl
Usage: brctl [commands]
commands:
addbr <bridge> add bridge
delbr <bridge> delete bridge
addif <bridge> <device> add interface to bridge
delif <bridge> <device> delete interface from bridge
hairpin <bridge> <port> {on|off} turn hairpin on/off
setageing <bridge> <time> set ageing time
setbridgeprio <bridge> <prio> set bridge priority
setfd <bridge> <time> set bridge forward delay
sethello <bridge> <time> set hello time
setmaxage <bridge> <time> set max message age
setpathcost <bridge> <port> <cost> set path cost
setportprio <bridge> <port> <prio> set port priority
show [ <bridge> ] show a list of bridges
showmacs <bridge> show a list of mac addrs
showstp <bridge> show bridge stp info
stp <bridge> {on|off} turn stp on/off
③、创建网桥br1
$ sudo brctl addbr br1
④、将eth0、eth1网卡加入br1
$ sudo brctl addif br1 eth0
$ sudo brctl addif br1 eth1
⑤、查看网桥br1
$sudo brctl show
$sudo bridge link
$sudo bridge vlan
⑥、配置ip:
$ip addr add 127.0.0.1/8 dev lo brd +
$ifconfig br0 192.168.1.1
⑦、删除网桥:
$ip addr del 192.168.1.1/24 dev br0 brd +
$sudo brctl delif br0 eth0
$sudo brctl delif br0 eth1
$sudo brctl delbr br0
⑧、通过“ip”命令管理网桥:
$ sudo ip link add name br0 type bridge <创建网桥br0>
$ sudo ip link set br0 up
$ suduo ip link set dev eth0 master br0 <网卡加入br0>
$ sudo ip link set dev eth0 nomaster
$ sudo ip add add 192.168.1.1/24 dev br0 <配置ip地址>
$ sudo ip route add default via 192.168.1.2
$ sudo route add defatult gw 192.168.1.2 <配置默认网关>
三、windows多网卡网桥配置
①、命令“ncpa.cpl”打开网络适配器管理界面。
②、通过上面的理解,把两个物理网卡桥接,网卡可以被理解为一根网线,所以不许配置ip,我们把IP地址获取方式修改为自动获取。
③、我们可以把本地连接和无线网络连接两个网卡做桥接,从而可以使其它没有无线网卡的终端通过本地连接接入到无线网络中上网,反之亦然。配置桥接很简单,只需同时选中“本地连接”和“无线网络连接”两个网卡,鼠标右键,点击“桥接”即可。
④、然后给生成的桥接网卡配置ip地址即可。
⑤、如果设计复杂点的网络还可通过打开路由转发,配合路由,做网络交换路由使用。
(今天的分享就到这里,如果您有高见或好的分享,记得留言哦!)
十年之约-虫洞穿梭而来,学习到了!