
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_tunnel
magic0
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クライアントでこの例を使用してください。、私はそれに貢献しました。 )
すべてのオペレーティングシステムが任意のインターフェイス名を設定する機能を持っているわけではないため、まだアップストリームにマージされていないようです。しかし、pppd
ioctl
すでに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
方法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