带有 ubuntu 的 Raspberry pi:将所有流量从一个接口转发到另一个接口

带有 ubuntu 的 Raspberry pi:将所有流量从一个接口转发到另一个接口

我有两个运行 Ubuntu 的 Raspberry Pi。它们都有一个原生以太网端口和一个 USB 以太网->USB 接口。它们都通过原生以太网连接到同一个家用路由器。

我希望它们将所有来自 USB 接口的流量通过 GRETAP 接口转发,该接口与物理 eth0 接口建立隧道,到达另一个 Pi。隧道已启动并运行,但我需要找到一种方法让来自 USB 接口的流量通过隧道。这相当于创建双向 IP 隧道。

我将尝试用一张图片来说明:https://i.stack.imgur.com/fLXta.png

最简单的解决方案是什么?使用 iptables 之类的东西可以实现吗?我可以将隧道设置为默认网关吗?

答案1

所有路由都基于目的地,目的地必须是 IP 地址或接口。即"send all traffic with destination address a.b.c.d to e.f.g.h""send all traffic with destination address a.b.c.d out from interface X"。无法创建规则"send all traffic received from interface A to interface B"

可能有一个应用程序可以在操作系统上运行,用于监控接口并将所有 usb1 传入流量转发到 eth0;反之亦然。我不知道有哪个。

从实际目的来看,在 RasPi 之间创建隧道是没有意义的;没有隧道也可以达到同样的效果。隧道用于跨越多个路由接口。RasPi A 和 B 在同一个 192.168.1.0/24 网络中有 eth0 接口 - 这些接口之间的流量不是路由的,而是交换的;即使用 MAC 寻址转发。作为 GRE 路由的练习,这是有意义的。

拓扑中的 IP 寻址将不起作用。这是因为 RasPi 本身充当路由器。只要接口有 IP 地址,它就会有一个进入该 IP 范围的直接接口;并且直接路径始终优先于路由路径。

图中 RasPi A 的接口 IP 地址为 192.168.10.3/24 和 192.168.1.104/24。它将从 usb1 转发所有发往网络 192.168.10.0/24 的流量。

RasPi B 的接口 IP 为 192.168.10.2/24 和 192.168.1.102/24。它将从 usb2 转发所有发往网络 192.168.10.0/24 的流量。

因此:无法将 RasPi A 配置为将流量发送到 192.168.10.0/24 网络,以便它能够到达 RasPi B:s usb2(除非作为发生故障时的备用路由,这违背了目的)。反之亦然。隧道不会改变这一点。唯一的方法是更改​​其中一个 IP 范围;例如将 RasPi2 usb2 IP 更改为 192.168.11.2/24。

通过更改 IP 范围,我们可以创建允许网络 192.168.10.0/24 和 192.168.11.0/24 通信的路由:

RasPi A: 192.168.11.0/24 => 192.168.1.102
RasPi B: 192.168.10.0/24 => 192.168.1.104

RasPi A 从任何接口接收的指向网络 192.168.11.0/24 的所有流量现在都将被转发到 RasPi B:s eth0 接口;反之亦然。

现在我们也可以创建隧道:

RasPi A: 
Tunnel source eth0/192.168.1.104
Tunnel destination 192.168.1.102
Tun0 IP 172.10.0.2/24

RasPi B:
Tunnel source eth0/192.168.1.102
Tunnel destination 192.168.1.104
Tun0 IP 172.10.0.1/24

我们可以通过替换目的地将 192.168.10.0/24 和 192.168.11.0/24 之间的路由指向 tun0 接口:

RasPi A: 192.168.11.0/24 => 172.10.0.1
Raspi B: 192.168.10.0/24 => 172.10.0.2

RasPi A 从任何接口接收的指向网络 192.168.11.0/24 的所有流量现在都将被转发到 RasPi B:s tun0 接口;反之亦然。

设备特定路由的完成方式完全相同。例如,如果 usb2 连接到 IP 为 192.168.11.10 的设备,我们只需将网络地址 .0 更改为设备地址 .11。

如果两个 USB 实际上都连接到其他路由设备 192.168.10.1/24 和 192.168.11.1/24,我们可以这样做:

RasPi A: 
192.168.10.0/24 => 192.168.10.1
0.0.0.0/0 => 172.10.0.1

RasPi B: 
192.168.10.0/24 => 172.10.0.2
0.0.0.0/0 => 192.168.11.1

0.0.0.0/0(默认路由)代表未知网络;即路由器没有更具体路由的任何 IP。0.0.0.0/0 必须指向下一跳路由器。

通过此配置,所有发往 192.168.10.0/24 的流量都将转发到 192.168.10.1。所有流量不是发往 192.168.1.0/24 或 192.168.10.0/24 的邮件将被转发到连接到 usb2 的 192.168.11.1。

出于显而易见的原因,不可能在两个 RasPi 上创建指向对方的默认路由。入站流量将到达每个 RasPi,但不会再流向其他地方。

相关内容