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