
私は単純な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スクリプトの設定方法に問題があるのです。うまくいかない場合は、別の問題があります。