回答:
Linuxネットワーク名前空間を使用して、プロセスに異なるネットワーク構成を割り当てることができます。理論的には、PAM *を設定して各ユーザーを独自の個別のネットワーク名前空間に設定することは可能ですが、問題のアプリケーションを独自の名前空間で起動する方が簡単です。
一般的な設定では、ネームスペースをネットワークに接続するためのLinuxブリッジインターフェースの作成について説明します。ipvlan(カーネルバージョン3.19以降に含まれています)またはmacvlanデバイス(ワイヤレスの場合はmacvlanを使用できません)を使用して、もう少し簡単なセットアップをアーカイブできます。Linuxカーネルのドキュメントには、ネットワーク名前空間でipvlanを設定するための詳細な例があります。
ドキュメントの例に従ってください:
ネットワーク名前空間ns0を作成する
ip netns add ns0
eth0(マスターデバイス)にipvlanスレーブを作成する
ip link add link eth0 ipvl0 type ipvlan mode l2
スレーブをネットワーク名前空間ns0に割り当てます
ip link set dev ipvl0 netns ns0
ネットワーク名前空間ns0でスレーブデバイスを構成する
ip netns exec ns0 ip link set dev ipvl0 up
ip netns exec ns0 ip link set dev lo up
ip netns exec ns0 ip -4 addr add 127.0.0.1 dev lo
ip netns exec ns0 ip -4 addr add $IPADDR dev ipvl0
ip netns exec ns0 ip -4 route add default via $ROUTER dev ipvl0
とにホストとルーターのアドレスを入力$IPADDR
し$ROUTER
ます。
次を使用してネットワーク名前空間でアプリケーションを実行します ip exec
ip netns exec ns0 <command>
別のユーザーとしてコマンドを実行するには、通常のを使用しsu <user> -c -- <command>
ます。
* 編集:理論から実践まで:ユーザーごとにネットワーク名前空間を変更する方法を示すために、簡単なPAMモジュールを作成しました。ip netns
上記のようにネットワーク名前空間を構成し、特定のユーザーを特定の名前空間にマップする必要があります。その後、すべてのユーザープロセスは、デフォルトの名前空間ではなく、設定された名前空間に配置されます。コードはgithubでホストされています。自分の危険で使用してください。
$IPADDR
と$ROUTER
私が提供する必要がありますか、それともすでに設定されていますか?
ubuntu 14.04
私は取得のみ:Garbage instead of arguments "mode ...". Try "ip link help"
。