我知道我可以使用以太网交换机实现所需的结果,但我很好奇是否可以通过一些更便宜的解决方案来实现这一点。
想法如下:
Rapsberry Pi 有两个以太网端口 - 一个是内置端口,另一个是一些便宜的 USB 以太网适配器
其中一个端口直接连接到我的本地路由器并接收 DHCP IP 地址。假设它是 192.168.1.2。
另一个端口将连接到其他设备。我需要此设备认为它直接连接到同一路由器并从路由器接收 DHCP IP 地址。假设地址是 192.168.1.3。
本质上,我希望 RPi 的行为就像以太网交换机一样,它为自己请求一个 IP,然后将其他请求路由到其他设备。
这是一张图片,解释了我如何使用开关来做到这一点:
我希望它的工作方式如下:
现在想象一下,我有五个(或更多)这样的对“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 范围内的报告)