В linux вы можете создавать сетевые пространства имен, используя команду ip
. Но для запуска этой команды вам нужно быть root. Однако вы все равно можете создавать сетевые пространства имен как обычный пользователь:
#include <unistd.h>
#include <sched.h>
unshare(CLONE_NEWUSER | CLONE_NEWNET);
. С помощью этой команды новое сетевое пространство имен будет принадлежать ограниченному пространству имен пользователя.
С новым сетевым пространством имен я не могу подключиться к inte rnet. Для создания пары veth требуется root, есть ли способ разрешить моему сетевому пространству имен подключаться к inte rnet без root? И создайте это сетевое пространство имен с помощью C. Я знаю, что многие функции, такие как совместное использование физической сети с пространством имен, были бы невозможны. Можете ли вы создавать виртуальные интерфейсы, такие как tun0
, в ограниченном сетевом пространстве имен.