如何查找PPPoE设备的父网络设备

如何查找PPPoE设备的父网络设备

对于一个点PPPoE ppp0Linux下的设备,如何可靠的获取底层的以太网设备?

ip -d link我查看了和 目录的输出/sys/class/net/ppp0,但既没有提到父设备,也没有提到 pppd 进程的 PID。

如果系统上只有一个 pppd 运行,则有一种“解决方法”:

$ cat /proc/net/pppoe
Id       Address           Device
0000516D dc:99:16:c4:58:35 wan.25

在本例中,wan.25就是所需的信息。

但那个“Id”0000516D我还没有看到其他地方将它链接到PPP设备。那么如何区分多个PPPoE接口呢?

答案1

重读时pppd联机帮助页我看到这/var/run/pppd2.tdb不仅仅适用于 MultiLink,而是将信息存储在TDB格式

手册页没有详细说明如何询问该文件,但我能够弄清楚:

注意:您需要可选的tdb 工具包或您的发行版中的同等内容。

$ D="inet"   # The name of your PPPoE interface
$ T="/copy/of/pppd2.tdb"

$ tdbdump $T -k IFNAME=$D
pppd34491
$ cID="pppd34491"

然后,该 ID“pppd34491”可用于在此数据库副本中查找该连接的其他连接信息。该信息存储为分号分隔的键=值对,因此为了查看,您可以通过以下方式传递该信息awk

$ tdbdump $T -k $cID | awk 'BEGIN{RS=";";FS="="}{print $1" "$2}' |column -t
CALL_FILE   Provider
DEVICE      wan.25
MACREMOTE   So:me:ma:cc:cc:cc
IFNAME      inet
IPLOCAL     MyIPV4
IPREMOTE    PeerIPv4

(删掉一些不太有趣的东西)

相关内容