特定のネットワーク名前空間で常に実行されるようにユーザーアプリケーションを制限する方法は?

特定のネットワーク名前空間で常に実行されるようにユーザーアプリケーションを制限する方法は?

ユーザーアプリケーションが常に特定のネットワーク名前空間で実行されるように制限できる必要があります。以前にネットワーク構成を次のように設定したとします。

ip tuntap add name tap0 mode tap
ip link add veth0 type veth peer name veth1
ip netns add appns

ip link set dev tap0 netns appns
ip link set dev veth0 netns appns
ip netns exec appns ip addr add 10.0.0.254/24 dev tap0
ip netns exec appns ip link set dev tap0 up
ip netns exec appns ip addr add 10.20.30.1/24 dev veth0
ip netns exec appns iptables -t nat -A POSTROUTING -o veth0 -j SNAT --to 10.20.30.1

ip link add name br1 type bridge
# eth1 previously exists, maps to physical interface
ip link set dev eth1 master br1
ip link set dev veth1 master br1
ip link set dev eth1 up
ip link set dev br1 up

この設定を使用すると、sudo以外のすべてのユーザーが、ユーザーが実行したかのように名前myapp空間myapp内で実行できるようになります。appns

> sudo ip netns exec appns sudo -u ${USER} myapp

myapptap0のインタフェースで読み書き10.0.0.xの何かと通信します10.20.30.x

setuidset(per) を使用してシェルラッパーを作成することはできません。この回答シェルスクリプトで setuid の使用を許可します。ネットワークネームスペースmyappで常にどのように実行しますか?appnsいくつかの.confファイルで名前空間名を設定できますか?

1これらのユーザーは、アプリケーションを実行するために必要なグループ(wiresharkWiresharkを実行しているグループと同様)の一部である可能性があります。

関連情報