PPPインターフェースの命名

PPPインターフェースの命名

Ubuntu(サーバー)Linuxでは、pppdを使用して構成された2つのPPPピアdsl-line1とdsl-line2があります。

自動オプションは/etc/network/interfacesファイルによって開始されますが、各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

以前のバージョンでは@CallumAオプションをpppd提供していましたが、unit指摘:

   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(。ioctlOpenConnect 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で使用しています。

設定PPPoErootまたは実行sudo):

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

方法1:

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

リンクがインターフェイスで実行されています。ポイントツーポイント0

方法2:

pidファイル(PIDFILE=/var/run/pppoe-ppp4.pid)の名前を設定ファイル()で必要に応じて変更します/etc/sysconfig/network-scripts/ifcfg-ppp4)。これで、PIDを使用して名前を見つけることができます。カチッという音

#!/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

関連情報