一般ユーザーのためのネットワークネームスペースとして

一般ユーザーのためのネットワークネームスペースとして

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

関連情報