PPP 인터페이스 이름 지정

PPP 인터페이스 이름 지정

Ubuntu(서버) Linux에서 pppd를 사용하여 구성된 두 개의 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에서는 네트워크 인터페이스를 사용할 수 있습니다 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에서 사용하고 있습니다.

설정 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

관련 정보