我有两个 Linux 设备 - 为简单起见,我们将它们称为 Raspberry Pi - 在一个盒子中,我想通过单个以太网链路连接到网络。
它们都需要可以在网络上单独访问。我可以很容易地通过串行端口将一个连接到另一个。
它看起来像是pppd
或slip
可能是答案,但是到目前为止我看到的所有示例都使用固定配置,这对我来说没有用 -两个都董事会需要能够承担任何IP 地址可以通过 DHCP 或手动配置,与其他配置无关。
感觉使用 Linux 应该相当容易完成,但要么我没有找到正确的信息,要么我在搜索时使用了错误的术语。
任何想法表示赞赏。
答案1
在串行端口的两端,您可以使用它的变体
socat TUN,tun-type=tap,iff-up /dev/ttyS0
,您将在串行连接的两端获得一个 TAP 以太网设备。
您可能需要手动选择最佳串行端口速度,并且必须对两端的 TAP 设备进行桥接和其他网络集成。
答案2
这里有一个先有鸡还是先有蛋的问题:要建立 PPP/SLIP 连接,您需要 IP 参数,但串行连接设备在 PPP/SLIP 连接建立之前无法发出 DHCP 请求。 PPP 有自己的方法将配置信息从 PPP 服务器传递到客户端,但如果我没记错的话,SLIP 可能需要串行链路两端预先存在的配置信息。
据我所知,您有两种选择:
A.) 使用固定专用 IP 来设置 PPP/SLIP 链路,如果连接了链路,则让以太网连接设备为其自身配置第二个 IP 地址(通过运行 DHCP 客户端的第二个实例或通过手动方式)配置)并使用 NAT 将第二个 IP 地址的流量重定向到串行链路上使用的固定地址。
在这种方法中,串行连接的客户端不一定知道其真实IP地址,如果您需要使用不支持NAT的网络协议,这可能会出现问题。另一方面,在实际建立连接之前不必保留第二个地址。
B.) 让以太网连接的设备始终配置有两个以太网端 IP 地址(例如,如果使用 DHCP,则运行 DHCP 客户端的两个实例),一旦知道第二个地址,就用它来配置以太网端的服务器端。串行链接。如果使用pppd
,请使用其proxyarp
选项。如果使用 SLIP,请以其他方式配置代理 ARP(例如echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
)。
如果配置为准备串行连接,此方法将使以太网连接设备始终保留两个 IP 地址,但将允许串行连接设备实际保留可访问的 IP 地址。
对于这两种方法,串行连接设备的大部分网络配置必须在以太网连接设备上进行。