我只需要通过unix 套接字使用 PPP。但首先我想用一个常用的串行端口启动 pppd,以确保我了解它的工作原理。据我所知,如果我将 pppd 绑定到串行端口,所有到达那里的数据包都将从 PPP/IP/... 解包,并使用我的应用程序重定向到某个端口。据我所知,这只能通过 pppd 创建一个新网络接口来完成。所以我需要给 pppd 一个 IP。在阅读手册后,遇到一些问题我找到了一个似乎正确的选项,但我仍然无法让它发挥作用:
$ pppd local -detach 10.5.57.198: /dev/ttyS4
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS4
LCP: timeout sending Config-Requests
Connection terminated.
Modem hangup
在标题LCP: timeout sending Config-Requests
出现之前我还有一些时间,我在这段时间里启动了它ifconfig
——唉,这里没有新的网络界面出现。
我也曾寻求过教程,但我找到的教程似乎都没什么用,主要是因为这些教程已被弃用:它们经常提到目前不存在的配置、软件或网站。部分原因是这些教程提到了很多对我来说似乎毫无意义的操作。
那么,有人知道我缺少什么选项吗?
答案1
一般来说pppd
,PPP 主要用于拨号连接,因此所有默认设置都假设该pppd
过程将作为手动启动序列的一部分启动。序列中的前一步应该是建立串行连接(即调制解调器通过说 来指示与远程调制解调器的握手完成CONNECT
)
您想反转事物的顺序,pppd
先启动,然后等待物理连接出现。该persist
选项可以实现这一点。
文档persist
说
这最大失败次数选项仍然对持久连接有影响。
因此您可能还需要maxfail 0
覆盖它。快速浏览手册页后,我可以看到其他相关选项,包括demand
、idle
和holdoff
,所有这些选项都可以帮助您控制当对等方不存在时接口的行为。
还有一个有用的选项:connect
在拨号情况下用于指定拨号调制解调器的程序的选项可能对您有用。您可以指定一个connect
脚本,该脚本只监视串行端口状态并在连接存在时退出。