일반 사용자를 위한 네트워크 네임스페이스로

일반 사용자를 위한 네트워크 네임스페이스로

Linux에서는 다음 명령을 사용하여 네트워크 네임스페이스를 생성할 수 있습니다 ip. 하지만 이 명령을 실행하려면 루트여야 합니다. 그러나 일반 사용자 ID를 사용하여 네트워크 네임스페이스를 생성할 수는 있습니다 unshare -rUn. 이 명령을 사용하면 제한된 사용자 네임스페이스가 새 네트워크 네임스페이스를 소유하게 됩니다.

새 네트워크 네임스페이스를 사용하여 인터넷에 연결할 수 없습니다. veth 쌍을 만들려면 루트가 필요합니다. 내 네트워크 네임스페이스가 루트 없이 인터넷에 연결할 수 있는 방법이 있습니까? 나는 많은 기능(예: 네임스페이스와 물리적 네트워크 공유)이 불가능하다는 것을 알고 있습니다. tun0제한된 네트워크 네임스페이스와 같은 가상 인터페이스를 만들 수 있습니까 ?

예를 들어 일반 사용자가 소유한 네트워크 네임스페이스를 사용하여 루트 없이 openvpn을 실행할 수 있습니다.

$ create-network-namespace
$ openvpn home.ovpn
$ google-chrome

답변1

해결책을 찾았습니다. github에는 네임스페이스에 가상 탭 장치를 생성하고 호스트 네임스페이스에 소켓 시스템 호출을 사용하는 프로젝트가 이미 있습니다. TAP를 통해 전송된 각 패킷은 소켓 작업으로 변환됩니다.

https://github.com/rootless-containers/slirp4netns

관련 정보