1. 这是如何工作的?

如果两个以太网 LAN 都连接到互联网,您可以透明地桥接它们之间的流量,以将它们连接在一起。

没有办法实现“真正的”桥接,您只能桥接第三层协议,Linux 知道如何路由这些协议,但带有这些协议的以太网流量看起来会被桥接。您可以创建 2 个以太网桥,以桥接 IP 和/或 IPX 流量。您无法在不同的 LAN 之间透明地桥接任何其他第三层协议。您应该阅读本文档的其余部分,以确定您是否可以桥接任何其他协议。

1.1. 在 2 个 LAN 之间桥接以太网上的 IP 流量。

如果您有
PC1   (192.168.0.1  /24)--|
PC3   (192.168.0.3  /24)--|
PC5   (192.168.0.5  /24)--|--[ eth0 - bridge_1 - eth1 (195.0.0.1) ]

PC253 (192.168.0.253/24)--|              
                                         | (192.168.0.2  /24) PC2
                                         | (192.168.0.4  /24) PC4
[ (192.0.0.1) eth1 - bridge_2 - eth0 ] --| (192.168.0.6  /24) PC6

                                         | (192.168.0.254/24) PC254

bridge_1bridge_2 是您的 Linux 网桥,并且外部连接到互联网接口 eth1。所以195.0.0.1并且192.0.0.1可以是您的 ISP 给您的任何有效的互联网地址。

所以,您应该

  1. 获取两台装有 Linux 内核 2.2 或 2.4 的计算机。内核应该使用 PPPAdvanced Router 编译。您还需要正确安装 iproute2 软件包。关于 iproute2 的信息可以在Configure.help您的内核的 Advanced Router 下的注释中找到。您还需要以下实用程序

    您也可以在 http://www.freshmeat.net 上找到它们

    请记住,如果您想使用 MS ChapMS 加密 (MPPE),您需要 pppd 和内核的特殊补丁。有关如何获取和安装这些补丁的说明,请参阅 PoPTop 手册。

  2. 将您的路由器连接到互联网,或在它们之间建立任何其他通信,但 IP 除外。

  3. 在它们之间建立一个 PPTP 隧道。PoPToP(服务器)和 pptp(客户端)手册中有示例配置。

  4. 现在您应该有两个网桥,并且它们之间有一个 IP 隧道,可能是加密的(请参阅 PPP 手册)。让我们配置桥接。

  5. 请记住,网桥实际上是一个路由器,因此我们需要在我们的网桥上运行以下命令(这假设 bridge_1bridge_2 是 IP 地址,分配给网桥之间 PPTP 隧道的每一端)

         bridge_1$ip route add 192.168.0.2 via bridge_2
         bridge_1$ip route add 192.168.0.4 via bridge_2
         bridge_1$ip route add 192.168.0.6 via bridge_2
                 
         bridge_1$ip route add 192.168.0.254 via bridge_2
         bridge_1$ip route add 192.168.0.255 via bridge_2
            

    在另一侧

         bridge_2$ip route add 192.168.0.1 via bridge_1
         bridge_2$ip route add 192.168.0.3 via bridge_1
         bridge_2$ip route add 192.168.0.5 via bridge_1
                  
         bridge_2$ip route add 192.168.0.253 via bridge_1
            

    这将告诉每个网桥另一侧有哪些主机。您可以使用旧式的route命令执行相同的操作。它看起来像

         bridge_1$route add -host 192.168.0.2 gw bridge_2
         bridge_1$route add -host 192.168.0.4 gw bridge_2
         bridge_1$route add -host 192.168.0.6 gw bridge_2
                  
         bridge_1$route add -host 192.168.0.254 gw bridge_2
         bridge_1$route add -host 192.168.0.255 gw bridge_2
            

    在另一侧

         bridge_2$route add -host 192.168.0.1 gw bridge_1
         bridge_2$route add -host 192.168.0.3 gw bridge_1
         bridge_2$route add -host 192.168.0.5 gw bridge_1
                   
         bridge_2$route add -host 192.168.0.253 gw bridge_1
            

    请再次注意,bridge_1bridge_2 不是您的 ISP 给出的 IP 地址,而是 分配给 PPTP 隧道每一端的 IP 地址。

  6. 现在您有两个网桥,并且每个网桥都知道在哪里找到特定的 IP。但是,您如何告诉这些计算机将其远程网络的流量发送到本地网桥?您需要 tarpd。

    tarpd是一个非常简单的守护进程,它响应特定 IP 地址的 arp 请求。您只需要运行一个tarpd在每个网桥上,并指定在远程端找到的 IP 地址列表。

    例如,对于这两个网桥,您应该运行

         bridge_1$tarpd eth0 192.168.0.2 255.255.255.255  \
                             192.168.0.4 255.255.255.255  \
                                      
                             192.168.0.254 255.255.255.255
            

    在另一侧

         bridge_2$tarpd eth0 192.168.0.1 255.255.255.255  \
                             192.168.0.3 255.255.255.255  \
                                      
                             192.168.0.253 255.255.255.255
            

    您在每个网桥上指定 128 个远程对(IP/掩码。掩码应为 255.255.255.255,以免混淆 tarpd!)。

  7. 享受您的网桥!

1.2. 其他协议呢?

真的,我对其他协议路由一无所知。我从未使用过它们。但是我认为,如果您熟悉其他协议,那么以这种方式桥接它应该不会太难。