특정 네트워크 네임스페이스에서 항상 실행되도록 사용자 애플리케이션을 제한하는 방법은 무엇입니까?

특정 네트워크 네임스페이스에서 항상 실행되도록 사용자 애플리케이션을 제한하는 방법은 무엇입니까?

사용자 애플리케이션이 항상 특정 네트워크 네임스페이스에서 실행되도록 제한할 수 있어야 합니다. 이전에 네트워크 구성을 다음과 같이 설정했다고 가정해 보겠습니다.

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를 실행하는 그룹과 유사)의 일부일 수 있습니다.

관련 정보