gpt4 book ai didi

linux - 使用 INTERFACE 选项通过 SOCAT 的 PPPd

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:03 25 4
gpt4 key购买 nike

我的目标是使用 pppd 而不是 socat。我有两个 eth0 相互连接(物理)的 Ubuntu 盒子。我可以 ping 通这两个 IP 地址。我在每个 Ubuntu 盒子上执行以下操作。

  1. 创建一个伪串行设备并将其链接到我的网络接口(interface)“eth0”。
    socat PTY,link=/dev/ttyp10 INTERFACE:eth0
  2. 在这个伪串行设备上使用 pppd。
    设备A:
    pppd noauth/dev/ttyp10 10.10.10.10:20.20.20.20
    设备B:
    pppd noauth/dev/ttyp10 20.20.20.20:10.10.10.10

我看到我的 ppp0 接口(interface)创建时间很短,但我无法 ping 两个 IP 地址(10.10.10.10 或 20.20.20.20)。我知道我的解决方案并不完整,因为我需要指定必须如何从我的 eth0 接口(interface)路由我的 pppd 数据包,但不确定该怎么做(我在 eth0 接口(interface)上使用了 tcpdump 并找到了一些数据)。

我通过将 socat 绑定(bind)到 TCP 服务器/客户端尝试了相同的实验并且成功了。

设备A:
1. socat pty,link=/dev/ttyp10,raw,echo=0 TCP4-LISTEN:7001,reuseaddr &
2. pppd noauth/dev/ttyp10 10.10.10.10:20.20.20.20

设备B:
1. socat pty,link=/dev/ttyp10,raw,echo=0,waitslave TCP4:20.1.1.2:7001 &
2. pppd noauth/dev/ttyp10 20.20.20.20:10.10.10.10

注意:20.1.1.2 是设备 A 的“eth0”IP 地址。这样我的 ppp0 接口(interface)就启动了,我可以 ping 两个 IP 地址(10.10.10.10 和 20.20.20.20)。

当我有一个可用的 eth0 接口(interface)时,为什么我需要使用伪串行设备是另一个问题,我们不讨论这个问题。

最佳答案

您可能想要改编取自 socat 手册页的示例:

socat PTY,link=/var/run/ppp,rawer INTERFACE:hdlc0

circumvents the problem that pppd requires a serial deviceand thus might not be able to work on a synchronous linethat is represented by a network device. socat creates a PTYto make pppd happy, binds to the network interface hdlc0,and can transfer data between both devices.Use pppd on device /var/run/ppp then.

在这个例子中,接口(interface)是一条同步线路(被操作系统视为HDLC接口(interface))。 pppd 使用(默认)HLDC-like framing因此将原始数据从 pppd 传输到 HDLC 设备是有意义的。

在您的情况下,您使用的是以太网设备,做同样的事情没有多大意义。

在您的第二个示例中,您设法通过 TCP 传输 PPP session ,这是一个非常简单且可行的选项。您的另一种解决方案是使用 PPPoE专为通过以太网传输 PPP 而设计。

关于linux - 使用 INTERFACE 选项通过 SOCAT 的 PPPd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com