网桥:(Bridge)
Linux网桥是一种以同种协议连接两个局域网的产品。可以把它看成是一个决定发送的包是到自己的局域网还是到另一个局域网的设备。linux网桥检查局域网上所有的包,在同一个局域网中传送它,如果不是同一个网中的,就将它发到别的网上。
原理:
网桥是连接两个局域网的存储转发设备,用它可以完成具有相同或相似体系结构网络系统的连接。一般情况下,被连接的网络系统都具有相同的逻辑链路控制规程(LLC),但媒体访问控制协议(MAC)可以不同。
网桥工作在数据链路层,将两个LAN连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。 远程网桥通过一个通常较慢的链路(如电话线)连接两个远程LAN,对本地网桥而言,性能比较重要,而对远程网桥而言,在长距离上可正常运行是更重要的。
注:我们在安装LINUX的虚拟机的时候,有三个网络配置供我们选择分别为:
桥接模式、nat模式、host-only模式 (其中我们用的最多的是桥接模式,nat模式;host-only模式基本不用):
Bridge:使真机和虚拟机的网卡可以直接交换数据(不用通过内核了),使得数据传输速度变快
NAT : 虚拟机把数据先转发给真机,真机再通过网卡传输,所以速度较慢(而且!虚拟机可以ping宿主机,宿主机ping不了虚拟机)
所以我们一般优先使用bridge桥接模式!!!
开始实验!
首先在真机上进行操作:
ifconfig查看我们的网络信息:(可以看到有很多网卡设备)
也可以用nm-connection-editor图形界面直观查看:
我们第一步要做的就是清除所有网络配置文件:(注:删除之前先备份文件数据;这是一个非常重要的习惯!!!)
首先创建一个根下的 名为 networkmessages的目录用来备份我们的网络配置文件:
可以看到我们之前的这些网络配置文件(ifcfg-开头的文件):
备份它们先:(复制到/networkmessages 目录下):
删除掉/etc/sysconfig/network-scripts/下的所有网络配置文件:
可以看到都删掉了:
因为真实网卡上没有配置网络文件信息,此时也是ping百度,或者114.114.114.114的:(真机没有网络)
另一方面,虚拟机的管理界面里,虚拟机的网卡的网络连接选项里也没有了桥接选项(bridge)
目前可用的只有NAT模式,但是NAT模式效率相比较Bridge桥接模式效率不高:
所以我们需要创建桥接:
####以配置文件的形式创建桥接#####
在/etc/sysconfig/network-scripts/下编写配置文件:
首先编写我们真机的网卡(enp3s0)的配置信息:(每台机子 网卡设备名称不一样,需要自己ifconfig查看确认)
编写一个ifcfg-enp3s0文件:
文件内容如下:
DEVICE=enp3s0 #设备名称
。。。
BRIDGE=br0 #enp3s0网卡开启的网桥链接为br0设备
再编写 ifcfg-br0文件:(编写桥接设备br0的文件信息)
内容如下:
编写完毕后,重启网络服务: (注:如果文件编写没有问题,但是不能重启网络,需要先停止NetworkManager.service服务)
(systemctl stop NetworkManager.service)
systemctl restart network
看到改变:
其中 查看网桥,桥接信息的命令为:
brctl show
通过brctl命令可以看到桥接br0的信息:(利用的是enp3s0网卡接口)
此时可以看到虚拟机的网卡网络连接选项里有了网桥桥接选项:
####利用brctl命令来创建网桥(我们这次在虚拟机里进行)
刚进入虚拟机查看网桥桥接信息:
可以看到没有桥接设备:
添加桥接设备br0:
brctl addbr br0
可以看到添加成功了:
给br0设定一个IP地址:
PING一下真机172.25.254.148 :
可以看到ping不通:
这是因为我们还没有给网桥配置可用的物理网卡设备:
将物理网卡eth0与网桥br0连接:
可以看到eth0作为了br0的物理网卡接口(interfaces)
再次尝试PING一下真机:(可以看到PING通了)
网桥的删除:
brctl delif br0 eth0 #删除br0网桥的物理网卡接口
ifconfig br0 down #关闭br0网桥
brctl delbr br0 #删除网桥br0
over!