如果链接失效则重新连接

如果链接失效则重新连接

我通过以太网运行带有 pppd 的 FreeBsd 盒子。一切都运行良好,只有一个例外。有时,连接会变得陈旧,但这种情况并不常见。一切看起来都好像没问题:ifconfig 显示已启动,ppp 表示链接正常,但流量未通过。我所做的是运行killall pppd然后手动重新启动 ppp。它重新连接,一切又恢复正常。

我的问题是: pppd (或 mpd5 或其他任何地方)中是否有一个设置,如果设置的话,会使 ppp 检测到链接已过时并自动重新连接?

如果没有这样的设置,也许还有其他解决方案?

答案1

您是否配置了以下 pppd链路控制协议选项?它们控制 pppd 是否发送 LCP 回显以及发送 LCP 回显的频率来检查链路是否仍然有效,以及如果无效则如何响应。

lcp-echo-failure n
lcp-echo-interval n
lcp-echo-adaptive

它们与以下选项结合得很好,这些选项控制 pppd 是否在终止后尝试重新启动连接、重新连接之前延迟多长时间以及失败后重新启动多少次:

persist
holdoff n
maxfail n

如果 maxfail 非零,您可能还需要一个包装脚本或 cron 作业来重新启动 pppd(如果它已完全退出)(即,失败 > maxfail 设置)。 maxfail > 0 的一个常见原因是,可以编写包装器脚本来对长时间停机等情况做出更智能的响应(而不仅仅是一遍又一遍地重试)。

有关这些和其他配置选项的更多详细信息,请参阅 pppd 手册页。

答案2

我会向 crontab 添加一个简单的 shell 脚本,该脚本会定期 ping 已知主机,并在无法访问该主机时重新启动服务。

像这样的东西:

#!/bin/sh
ping -q -c3 google.com &> /dev/null
if [[ $? != "0" ]]
  then
    ppp_restart_command
fi

例如,将其命名conn_check.sh,将其添加到 crontab 并让它每 60 秒运行一次。

答案3

所以,我想出了这个解决方案。

enable lqr
set lqrperiod 5

相关内容