bridge必须要配置IP吗?
发布时间:2023-05-11 13:53:35 所属栏目:Linux 来源:
导读:在我们常见的物理交换机中,有可以配置IP和不能配置IP两种,不能配置IP的交换机一般通过com口连上去做配置(更简单的交换机连com口的没有,不支持任何配置),而能配置IP的交换机可以在配置好IP之后,通过该IP远程连
在我们常见的物理交换机中,有可以配置IP和不能配置IP两种,不能配置IP的交换机一般通过com口连上去做配置(更简单的交换机连com口的没有,不支持任何配置),而能配置IP的交换机可以在配置好IP之后,通过该IP远程连接上去做配置,从而更方便。 bridge就属于后一种交换机,自带虚拟网卡,可以配置IP,该虚拟网卡一端连在bridge上,另一端跟协议栈相连。和物理交换机一样,bridge的工作不依赖于该虚拟网卡,但bridge工作不代表机器能连上网,要看组网方式。 删除br0上的IP: dev@debian:~$ sudo ip addr del 192.168.3.101/24 dev br0 于是网络变成了这样子,相当于br0的一个端口通过eth0连着交换机,另一个端口通过veth0连着veth1: +----------------------------------------------------------------+ | | | +------------------------------------------------+ | | | Newwork Protocol Stack | | | +------------------------------------------------+ | | ↑ | |.....................................................|..........| | ↓ | | +------+ +--------+ +-------+ +-------+ | | | | | | | | | .3.102| | | +------+ +--------+ +-------+ +-------+ | | | eth0 |<--->| br0 |<--->| veth0 | | veth1 | | | +------+ +--------+ +-------+ +-------+ | | ↑ ↑ ↑ | | | | | | | | +------------+ | | | | +------------|---------------------------------------------------+ ↓ Physical Network ping网关成功,说明这种情况下br0不配置IP对通信没有影响,数据包还能从veth1出去: dev@debian:~$ ping -c 1 192.168.3.1 PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data. 64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=1.24 ms --- 192.168.3.1 ping statistics --- 1 packets transmitted,time 0ms rtt min/avg/max/mdev = 1.242/1.242/1.242/0.000 ms 上面如果没有veth0和veth1的话,删除br0上的IP后,网络将会不通,因为没有设备和协议栈完全相连 bridge常用场景 上面通过例子展示了bridge的功能,但例子中的那种部署方式没有什么实际用途,还不如在一个网卡上配置多个IP地址来的直接。这里来介绍两种常见的部署方式。 虚拟机 虚拟机通过tun/tap或者其它类似的虚拟网络设备,将虚拟机内的网卡同br0连接起来,这样就达到和真实交换机一样的效果,虚拟机发出去的数据包先到达br0,然后由br0交给eth0发送出去,数据包都不需要经过host机器的协议栈,效率高。 +----------------------------------------------------------------+-----------------------------------------+-----------------------------------------+ | Host | VirtualMachine1 | VirtualMachine2 | | | | | | +------------------------------------------------+ | +-------------------------+ | +-------------------------+ | | | Newwork Protocol Stack | | | Newwork Protocol Stack | | | Newwork Protocol Stack | | | +------------------------------------------------+ | +-------------------------+ | +-------------------------+ | | ↑ | ↑ | ↑ | |..........................|.....................................|...................|.....................|....................|....................| | ↓ | ↓ | ↓ | | +--------+ | +-------+ | +-------+ | | | .3.101 | | | .3.102| | | .3.103| | | +------+ +--------+ +-------+ | +-------+ | +-------+ | | | eth0 |<--->| br0 |<--->|tun/tap| | | eth0 | | | eth0 | | | +------+ +--------+ +-------+ | +-------+ | +-------+ | | ↑ ↑ ↑ | ↑ | ↑ | | | | +-------------------------------------------+ | | | | | ↓ | | | | | | +-------+ | | | | | | |tun/tap| | | | | | | +-------+ | | | | | | ↑ | | | | | | +-------------------------------------------------------------------------------|--------------------+ | | | | | | | | | | | | | | | | +------------|---------------------------------------------------+-----------------------------------------+-----------------------------------------+ ↓ Physical Network (192.168.3.0/24) docker 由于容器运行在自己单独的network namespace里面,所以都有自己单独的协议栈,情况和上面的虚拟机差不多,但它采用了另一种方式来和外界通信: +----------------------------------------------------------------+-----------------------------------------+-----------------------------------------+ | Host | Container 1 | Container 2 | | | | | | +------------------------------------------------+ | +-------------------------+ | +-------------------------+ | | | Newwork Protocol Stack | | | Newwork Protocol Stack | | | Newwork Protocol Stack | | | +------------------------------------------------+ | +-------------------------+ | +-------------------------+ | | ↑ ↑ | ↑ | ↑ | |............|.............|.....................................|...................|.....................|....................|....................| | ↓ ↓ | ↓ | ↓ | | +------+ +--------+ | +-------+ | +-------+ | | |.3.101| | .9.1 | | | .9.2 | | | .9.3 | | | +------+ +--------+ +-------+ | +-------+ | +-------+ | | | eth0 | | br0 |<--->| veth | | | eth0 | | | eth0 | | | +------+ +--------+ +-------+ | +-------+ | +-------+ | | ↑ ↑ ↑ | ↑ | ↑ | | | | +-------------------------------------------+ | | | | | ↓ | | | | | | +-------+ | | | | | | | veth | | | | | | | +-------+ | | | | | | ↑ | | | | | | +-------------------------------------------------------------------------------|--------------------+ | | | | | | | | | | | | | | | | +------------|---------------------------------------------------+-----------------------------------------+-----------------------------------------+ ↓ Physical Network (192.168.3.0/24) 容器中配置网关为.9.1,发出去的数据包先到达br0,然后交给host机器的协议栈,由于目的IP是外网IP,且host机器开启了IP forward功能,于是数据包会通过eth0发送出去,由于.9.1是内网IP,所以一般发出去之前会先做NAT转换(NAT转换和IP forward功能都需要自己配置)。由于要经过host机器的协议栈,并且还要做NAT转换,所以性能没有上面虚拟机那种方案好,优点是容器处于内网中,安全性相对要高点。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |