我有两台机器,它们之间通过串行方式建立 ppp 连接。它们还通过以太网接口连接到单独的 LAN。我希望能够在这两个以太网网络之间进行通信。
这些网络可能位于不同的子网中,也可能不位于不同的子网中。所有 IP 都是静态分配的,因此不涉及 DHCP。
粗略的拓扑结构如下;
eth ppp(tty) eth
network1 <----> box1 <-----> box2 <-----> network2
这可以通过简单的命令实现吗 ip route
?
答案1
最好将 net1 和 net2 作为独立的子网,具有不同的 IP 地址前缀和单独的广播域。
在这种情况下,每个“盒子”中都有两个接口,实际上最简单的 IP 路由器。(只需将“ppp”接口视为连接两个路由器的第三个网络,它具有自己的私有 IP 前缀。)
每个路由器都已经知道如何到达直接连接的网络(当您在接口上配置 IP 地址时,它会从“子网掩码”或“前缀长度”中获取此信息)。它们仍然需要远距离网络的路由。
在盒子 1 上,通过 <盒子 2.ppp 的 IP 地址> 添加到 <网络 2> 的路由。
在盒子 2 上,通过 <盒子 1.ppp 的 IP 地址> 添加到 <网络 1> 的路由。
(也可以不给 ppp 接口编号,而是通过接口配置路由,例如在 Linux 上使用关键字dev ppp0
而不是via <addr>
。这可能不推荐。)
但更重要的是,这些设备之内这些网络必须知道它们应该使用 box1 和 box2 作为通向对面网络的网关。(它们不必使用 box1 和 box2 作为默认网关但是。如果两个网络已经有自己的默认网关,则改为通过 box1/box2 配置路由。)
如果 net1 和 net2 之间的链路在以太网层必须是透明的(例如,如果您发送非 IP 流量),那么设备就不能是路由器 - 它们需要充当桥梁在两个接口之间配置桥接很容易;但问题是“常规” PPP 仅承载网络层流量而不是原始以太网帧。
因此,对于桥接,您要么需要一种特殊的以太网 PPP 模式;要么可能需要 PPP 上的 MPLS(我相信存在);或者创建一个隧道,例如“gretap”或“erspan”在上面IP 网络(有一定的开销)。所有选项都是可能的,但需要知道 box1&box2 支持什么 - 与路由不同,路由是路由器的核心功能。