多重链路 ppp0 ppp1

多重链路 ppp0 ppp1

我有两个使用 3G 调制解调器的 ppp0 和 ppp1 连接。是否可以同时使用两个连接?不幸的是,在为第一个 ppp0 定义默认网关时,ppp1 连接出现问题,反之亦然。是否可以不设置网关,通过iptables规则将数据包重定向到IP网关?

一般来说,我想在从多个调制解调器并行发送消息时使用它Mbuni 彩信网关

答案1

免责声明:我从未使用过这种方法,只使用过PPP,所以我不能保证这一定有效;我是很久以前通过CCNA认证才知道这一点的。希望有更多经验的人可以证实或否认这是否有效!我从档案中抄袭了一些信息Michael Bruck 的“Linux 的 PPP 多链路协议 (MP)”

有一种方法叫做多链路PPP这可能就是您正在寻找的。您的提供商必须支持它,但 Linux 支持它。首先,确保CONFIG_PPP_MULTILINK在内核中启用了该功能,并且您的 pppd 也启用了多重链接。 AFAICT 来自阅读手册页,在当前版本的 pppd 中,您只需要pppd使用multilink每个接口的选项来运行,只要另一方知道如何处理它就应该可以工作:最后您应该只有一个 ppp 接口。

答案2

如果没有自己的后端服务器,可以使用多宿主默认路由和基于策略的路由的解决方案。基本上,一个连接仍然仅使用一个上行链路,但另一个连接可以使用另一个上行链路,从而在多个连接并行活动时提供性能改进。

多宿主默认路由很简单:

ip route replace default nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1

但很可能这还不够,因为通过一个链路传入的数据包的答案可能会通过另一个链路传出——并且很可能不会被另一端识别。

这就是基于策略的路由发挥作用的地方;互联网上有很多关于这方面的指南,例如这里

如果您在后面有自己的服务器,则可以在“顶部”设置一些内容,重新组合两个连接,即使对于单个连接也能提供真正的几乎双倍的带宽。我目前在 ssh 上隧道多链路 ppp 方面取得了成功(原理),尽管TCP over TCP 不太好(可以使用netcatsocat代替 ssh 作为后端)。为此,我已经配置了我的服务器,无需密码即可启动,并且在我的客户端上运行如下内容pppdsudo

pppd nodetach local debug noauth multilink eap-timeout 90 \
  pty "ssh -b 10.220.105.203 -p 333 <user>@<server> -t -e none sudo pppd noauth multilink eap-timeout 90" \
  10.12.13.2:10.12.13.1

ssh仍然会以这种方式要求我输入密码。)

我尝试过但还不能完全发挥作用的其他解决方案包括vtun 上的多链路 ppp(因为后者在我的客户端上出现段错误)或虚拟主干(不具体-不可靠)。

并且可能还有一些方法可以使用带有分接接口的绑定或组合驱动程序。

相关内容