如何让Raspberry Pi从路由器接收IP并将另一个IP传递给另一个设备?

如何让Raspberry Pi从路由器接收IP并将另一个IP传递给另一个设备?

我知道我可以使用以太网交换机实现所需的结果,但我很好奇是否可以通过一些更便宜的解决方案来实现这一点。

想法如下:

  • Rapsberry Pi 有两个以太网端口 - 一个是内置端口,另一个是一些便宜的 USB 以太网适配器

  • 其中一个端口直接连接到我的本地路由器并接收 DHCP IP 地址。假设它是 192.168.1.2。

  • 另一个端口将连接到其他设备。我需要此设备认为它直接连接到同一路由器并从路由器接收 DHCP IP 地址。假设地址是 192.168.1.3。

本质上,我希望 RPi 的行为就像以太网交换机一样,它为自己请求一个 IP,然后将其他请求路由到其他设备。

这是一张图片,解释了我如何使用开关来做到这一点:

具有某些设备和开关的 RPi

我希望它的工作方式如下:

具有某些设备和以太网适配器的 RPi

现在想象一下,我有五个(或更多)这样的对“RPi 加设备 X”,您就会明白为什么我想要摆脱交换机(如果可能的话) - 我可以购买五个 USB 以太网适配器,而不是五个 3 端口开关,这需要单独的电源和两根额外的电线。

是否有任何 Linux 配置选项可以使此设置与 RPi 的以太网端口和以太网适配器一起使用?

答案1

您应该能够通过设置来实现这一目标您的两个网络接口之间。

假设您的集成以太网接口为 ,eth0并且通过 USB 适配器打开的为eth1,则类似以下的配置/etc/network/interfaces应该可以工作(前提是您已经安装了该bridge-utils软件包并且您的内核支持它):

auto lo br0
iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual

iface br0 inet dhcp
    bridge_ports eth0 eth1

如果你运行ifconfig,你应该会看到一个界面(如果我没记错的话,br0可能有 MAC 地址)。eth0该接口实际上将成为 RPi 的合并接口,并从路由器获取其 IP 地址。

来自其他设备的流量应该流经网桥,并且它也应该获得其 IP 地址。如果流量不通过,您可能需要通过 允许它iptables。您也可能对。。。有兴趣本文

(顺便说一句,这不一定适用于无线 LAN 适配器,因为许多适配器不能同时使用多个 MAC 地址。)

答案2

最好的选择是将 Pi 设置为静态 IP。

从那里您要安装 dhcp 服务器

 apt-get install isc-dhcp-server 

然后您可以编辑配置文件

 /etc/conf.d/dhcp 

它告诉 dhcp 服务器在哪个接口上侦听此行:

 DHCP4_ARGS="... eth0" 

然后您可以使用以下命令启动服务器守护进程:

 sudo /etc/rc.d/dhcp4 start 

现在,任何广播连接到 eth0 的 IP 的客户端都将由 dhcp 服务器管理。

您可能需要将 eth0 替换为 eth1 以满足您的需求

答案3

请注意,Pi USB+以太网来自单个哑板载芯片,该芯片连接到 Pi GPU 上的单个端口 = 即 USB 以太网适配器不仅仅“直接链接”到内置以太网

因此,当您尝试将数据从一个接口传输到另一个接口时,吞吐量会受到影响,因为每个字节都必须由 CPU 读取,等待 CPU 告诉 GPU 选择另一个接口(在外部芯片上),然后 CPU可以将数据写回 GPU 并输出到其他接口。

当然,一次读取和写入“数据块”会更有效,但是,当 Pi 在一个接口上发送数据块时,另一个接口会断开连接,因此传入的任何内容都将被“丢弃”并且必须被删除。重传...

根据以太网和 USB“加密狗”驱动程序的编码方式,您的 100mbs 以太网可能会减少到不到 10mbs(我见过一些 kbs 范围内的报告)

相关内容