名前空間内でppp0を生成するようにpppdを取得するにはどうすればよいですか?

名前空間内でppp0を生成するようにpppdを取得するにはどうすればよいですか?

私は単純なpppoe接続を持っており、うまく動作します。シンプル

# pon my-isp

デバイスを作成しますppp0

私は次の名前空間を定義しました。

ip netns add physical

しかし、その後

ip netns exec physical pon my-isp

ppp0グローバルネームスペースまたはネームスペースで作成されていませんphysical

上記の名前空間内でppp0をどのように取得できますか?

ベストアンサー1

アイデア:

1)ponデフォルトの名前空間にデバイスを作成し、プロセスphysicalを.Scriptに移動します。

2)ponただスクリプトを見れば を呼び出しますpppd。スクリプトをコピーしてnetns exec呼び出しに使用するように変更するpppdと、問題が解決するかどうかを確認してください。 Haukeが述べたように、名前空間にはPPPoEデバイスが必要です。名前空間で実行したい操作によっては、vethペアが必要な場合もあれば必要ではない場合もあります。

編集する

正確な設定がわからないので(すべてのpppとpppoe構成ファイルが説明にありません)、PPPoEを介して2つの名前空間をリンクする簡単な設定を試しました。期待どおりにpppd名前空間から起動すると、ppp0デバイスがその名前空間に表示されるため、構成に問題があるかどうかは実際にはわかりません。

以下をテストします(root)。

ip netns add ns1
ip netns add ns2
ip link add veth1 type veth peer name veth2
ip link set veth1 addr 52:54:00:00:00:01
ip link set veth2 addr 52:54:00:00:00:02
ip link set veth1 netns ns1
ip link set veth2 netns ns2
ip -n ns1 link set lo up
ip -n ns1 link set veth1 up
ip -n ns2 link set lo up
ip -n ns2 link set veth2 up    
ip netns exec ns1 pppd pty '/usr/sbin/pppoe -I veth1 -e 1:52:54:00:00:00:02 -m 1412' noaccomp nopcomp asyncmap 000a0008 noauth nocrtscts xonxoff local maxfail 0 192.168.36.1:192.168.36.2
ip netns exec ns2 pppd pty '/usr/sbin/pppoe -I veth2 -e 1:52:54:00:00:00:01 -m 1412' noaccomp nopcomp asyncmap 000a0008 noauth nocrtscts xonxoff local maxfail 0 192.168.36.2:192.168.36.1

これでxterms、両方の名前空間でユーザーから始めて、構成username、テストなどを見ることができますping。 (私はどちらが何であるかを知るために背景色を指定するのが好きです):

ip netns exec ns1 su -c "xterm -bg yellow &" username
ip netns exec ns2 su -c "xterm -bg lime &" username

うまくいけば、PPPoEスクリプトの設定方法に問題があるのです。うまくいかない場合は、別の問題があります。

おすすめ記事