在 Linux 中创建网桥 Bridge
0X00 什么是网桥
普通的桥就是连接本来不通的路的基础设施,网桥就是用来本来不通的网的设备。但是这里介绍的不是真正意义上的物理设备,而是在 Linux 上创建的虚拟设备。Linux 上不仅可以创建虚拟网卡,也可以创建虚拟网桥,所以说我们在 Linux 环境下学习网络知识确实是一个不错的选择(除非你有钱买一堆物理设备🤣)。
桥接器(英语:network bridge),又称网桥,一种网络设备,负责网络桥接(network bridging)。桥接器将网络的多个网段在数据链路层(OSI模型第2层)连接起来(即桥接)。 – Wikipedia
0X01 网桥有什么用
网桥的本质就是将互不连通的网卡接到一起,原则上只有这么简单的功能,具体在这个功能之上能做什么事就看我们自己了。
如果用过 Docker 的话可以看一下自己本地的网络拓扑,实际上 Docker 的容器间通信和外网访问也是用到了 bridge 的。
最直观的一种操作就是:用一台双网卡机器串在两台主机之间,用来监听甚至修改数据包。乍一看这好像是搞坏事要用的技术手段呐,的确。如果有人拿一个双网卡的小机器(比如树莓派)串在了你的光猫和路由器之间,那么连接到路由器的所有外网请求都会经过这台小机器。如果你的流量不加密,比如用http协议或者ftp协议这种,那别人是可以看到中间的所有内容的,包括登录的密码之类的。所以这也是“不要随便连接来路不明的 Wi-Fi” 一大理由。
当然也不只是做坏事,现在的好多 WAF(Web Application Firewall)都是可以支持 “透明模式部署” 的,也就是说把这种安全软件所在的机器串在你的网关和 web 服务器之间,就可以在不破坏网络拓扑的情况下做到安全防护。
如果你想用这种方式来做软路由、绕开学校的网络共享限制,或是做流量分析都是可以实现的。