将 Proxy ARP 用于子网划分的应用相当具体。
在我的例子中,我有一块无线以太网卡,可以插入 8 位 ISA 插槽。 我想用这张卡一次为多台机器提供连接。 因为是 ISA 卡,所以我可以在 Linux 机器上使用它,在我为其编写了合适的设备驱动程序之后 - 这是另一份文档的主题。 从这里开始,只需要向 Linux 机器添加第二个以太网接口,然后使用某种机制将两个网络连接在一起。
为了便于讨论,假设网络 0 是连接到 Linux 盒子的本地以太网,通过 eth0 上的 NE-2000 克隆以太网接口。 网络 1 是通过 eth1 上的无线以太网卡连接的主网络。 机器 A 是具有两个接口的 Linux 盒子。 机器 B 是网络 0 上的任何 TCP/IP 机器,机器 C 同样是网络 1 上的机器。
通常,为了提供连接,我会执行以下操作之一
使用 IP-Bridge 软件(参见 Bridge mini-HOWTO)来桥接两个网络接口之间的流量。 不幸的是,无线以太网接口无法置于“混杂”模式(即,它无法看到网络 1 上的所有数据包)。 这主要是由于无线以太网的较低带宽 (2MBit/秒) 意味着我们不希望传输任何并非专门发往另一台无线以太网机器(在我们的例子中是机器 A)的流量或广播。 此外,桥接相当消耗 CPU!
或者,使用子网和 IP 路由器在两个网络之间传递数据包(参见 IP-Subnetworking mini-HOWTO)。 这是一个协议特定的解决方案,其中 Linux 内核可以处理 Internet 协议 (IP) 数据包,但其他协议(例如 AppleTalk)需要额外的软件来路由。 这也需要分配一个新的 IP 子网(网络)号,但这并不总是可行的。
在我的例子中,获得新的子网(网络)号不是一个选项,所以我想要一种解决方案,允许网络 0 上的所有机器看起来好像它们在网络 1 上一样。 这就是 Proxy ARP 的用武之地。 其他解决方案用于连接其他(非 IP)协议,例如 netatalk 以提供 AppleTalk 路由。