命名 PPP 接口

命名 PPP 接口

我有两个 PPP 对等点,dsl-line1 和 dsl-line2,它们在 Ubuntu(服务器)Linux 上使用 pppd 配置。

它们是由 /etc/network/interfaces 文件通过 auto 选项启动的,但是每个 PPP 连接都会选择名称 pppX,其中 X 根据首先出现的名称而变化。

我想让 dsl-line1 具有诸如“dsl0”之类的名称,而 dsl-line2 具有诸如“dsl1”之类的名称,以便我可以更轻松地为每个设备创建防火墙规则并设置路由(以及因为更容易配置)。

我的问题是如何让 pppd 的接口自行命名?

/etc/ppp/peers/dsl-line1(dsl-line2 除了删除默认路由和以太网接口不同之外,基本相同)

noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
lcp-echo-interval 10
lcp-echo-failure 3
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth1
user "[email protected]"

/etc/network/interfaces(line1 部分​​,同样,2 非常相似)

auto dsl0
iface dsl0 inet ppp
    pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
    post-up /bin/sh /home/callum/ppp0_up.sh # Route everything
    post-up /bin/sh /etc/miniupnpd/ppp0_up.sh # Start miniupnpd (if not alr$
    provider dsl-line1

提前致谢。

答案1

虽然旧版本pppd提供了unit@CallumA 的选项指出:

   unit num
          Sets the ppp unit number (for a ppp0 or ppp1 etc interface
          name) for outbound connections.

pppd… Linux的更新版本(例如 2.4.7)已修补以提供该ifname选项,该选项允许您设置完全任意的接口名称,例如ppp_tunnelmagic0等:

   ifname string
          Set the ppp interface name for outbound connections.
          If the interface name is already in use, or if the name 
          cannot be used for any other reason, pppd will terminate.

正如评论中指出的,该ifname选项是Linux 特定的。在 Linux 上,网络接口可以使用SIOCSLIFNAME ioctl. (ioctl在 OpenConnect VPN 客户端中使用此示例,我对此做出了贡献。)

我猜它尚未合并到上游,因为并非所有操作系统都能够设置任意接口名称。然而,pppdioctl已经在 Solaris 上使用它ifname,因此在支持平台上包含该选项似乎并不是一个巨大的影响。

答案2

我发现最好的选择是 /etc/ppp/peers/... 文件中的“unit”选项。该选项是一个整数,它命名接口 pppX,其中 X 是“unit”后面的 int。

我最终只是在 /etc/network/interfaces 中命名接口 pppX 并在对等文件中使用“unit”以确保它们以这种方式命名。

答案3

最简单的方法是在/etc/ppp/ip-up.d/<script name>.

一个例子是:

#!/bin/sh -e
# only apply this when a connection to dsl10 has occurred
if [ "X$CALL_FILE" != "Xoptus" ]; then
     exit 0
fi

echo $CALL_FILE is using the ppp device $IFNAME

您可以在 SCRIPTS 部分中查看 pppd(8) 中可用的完整变量集

答案4

我的回答不完全是关于如何更改名称,而是关于如何找到名称。

我在 CentOS 7 上使用它

设置PPPoE(作为root或运行sudo):

yum install rp-pppoe # rp-pppoe-3.11-7.el7.x86_64
pppoe-setup

方法一:

/sbin/pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp4

链接已启动并在界面上运行点对点0

方法二:

将 pid 文件 ( PIDFILE=/var/run/pppoe-ppp4.pid) 重命名为我们在设置文件中喜欢的名称 ( ) /etc/sysconfig/network-scripts/ifcfg-ppp4)。现在使用 PID 我们可以找到名称点X

#!/bin/bash
# 02-02-2023
# /bin/bash /sys_script/lan_port4_pppx.bash
# /etc/sysconfig/network-scripts/ifcfg-ppp4
# PIDFILE=/var/run/pppoe-ppp4.pid
    
PFILE=/var/run/pppoe-ppp4.pid.pppd
   
if [ -f "$PFILE" ]; then
    pppoe_pid=$(</var/run/pppoe-ppp4.pid.pppd)  
    # check pppX name
    for ((i=0; i<=100; i++))
    do
    if [ "$pppoe_pid" == "$(</var/run/ppp$i.pid)" ]; then 
    pppx=ppp$i
    i=101
    fi
    done
    echo $pppx
    else 
    echo "down"
fi

相关内容