최근에 어떤 장치 pppd가 생성되었는지 감지하는 방법은 무엇입니까?

최근에 어떤 장치 pppd가 생성되었는지 감지하는 방법은 무엇입니까?

PPPD를 사용하여 SSH를 통해 VPN을 설정하려고 합니다(아래).아치스 위키). 주어진 명령은 다음과 같습니다:

/usr/sbin/pppd updetach noauth silent nodeflate pty \
  "/usr/bin/ssh root@remote-gw /usr/sbin/pppd nodetach notty noauth"  \
  ipparam vpn 10.0.8.1:10.0.8.2

위 명령을 적절하게 수정하여 성공적으로 설정했습니다. 서버 측에서 내부 네트워크에 연결하려면 iptables서버 측에서 설정 전달을 사용해야 합니다.이번 SF 포스팅):

iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

나는 이것을 자동화하고 싶다. 현재로서는 eth0수정되었지만 ppp0변경될 수 있습니다(예: 다른 사람이 유사한 설정을 시작함). pppd서버 측 명령이 어떤 인터페이스를 생성했는지 감지하는 방법은 무엇입니까 ? 분석dmesg ? 출력을 비교 하시겠습니까 ip -o a? pppd나에게 신고 할 수 있나요 ?

  • 클라이언트는 최신 Arch Linux입니다.
  • 서버는 최신 Ubuntu 14.04입니다.

dmesg작동하지 않는 것 같습니다.

$ dmesg | grep -i ppp
[    0.803033] PPP generic driver version 2.4.2
[135747.442807] PPP BSD Compression module registered
[135747.459013] PPP Deflate Compression module registered

장치가 생성된다는 언급이 없습니다. syslog더 유용해 보입니다.

Apr 26 13:52:15 server pppd[12725]: pppd 2.4.5 started by muru, uid 0
Apr 26 13:52:15 server pppd[12725]: Using interface ppp0
Apr 26 13:52:15 server pppd[12725]: Connect: ppp0 <--> /dev/pts/7
Apr 26 13:52:15 server pppd[12725]: BSD-Compress (15) compression enabled

Using interface ppp0라인이 제가 원하는 것 같습니다. 나는 다음과 같이 얻을 수 있다고 생각합니다 :

awk '/started by muru/{getline; pppdev=$NF} END {print pppdev}'

pppd의 출력을 신뢰할 수 있습니까?

답변1

아마도 /etc/ppp/ip-up.d당신이 찾고 있는 곳이 바로 그 곳일 것이다.

내 예는 Gentoo Linux에서 작동하지만 동일한 디렉터리 구조가 Arch에도 존재하는 것 같습니다.

VPN 연결이 설정될 때마다 일반적으로 순차적으로 /etc/ppp/ip-up실행됩니다 /etc/ppp/ip-up.d/*. 첫 번째 매개변수는 연결된 pppn장치입니다.

/etc/ppp/ip-up.d/90-local예를 들어 다음 스크립트를 아래에 입력하세요.

#!/bin/sh

# Optional trace:
# logger -t "ppp" "$6: $1 (${2:--}, $3) $4 --> $5"

iptables -A FORWARD -i $1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o $1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

pppd스크립트를 실행하기 전에 환경 변수 세트를 사용할 수 있습니다 . 당신이 찾고 있는 사람은 입니다 $DEVICE. 위 스크립트를 $1다음으로 바꾸십시오.$DEVICE

iptables -A FORWARD -i $DEVICE -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o $DEVICE -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

연결이 설정되면 어떤 일이 발생하는지에 대한 자세한 내용은 man pppd리소스를 참조하세요.pppd

관련 정보