2016-01-01 7 views
10

Numer ip netns tworzy odniesienie do nazwanej (nazwanej) sieciowej przestrzeni nazw w /var/run/ns, którą można łatwo śledzić. Również to samo można określić za pomocą /proc/[pid]/ns/net. Jednak niektóre programy niestandardowe mogą utworzyć sieć i zapisać odpowiedni i-węzeł w innej niekonwencjonalnej lokalizacji. Może to utrudnić ustalenie, czy istnieją sieci, które moglibyśmy wymienić.Przestrzenie nazw systemu Linux: czy istnieje przestrzeń nazw sieci bez powiązania z procesem?

Po drugie, unshare <cmd> niszczy sieć, gdy proces się zakończy, co jest w porządku. Jednak ip netns exec <netns> <cmd> zachowa ns nawet po wyjściu polecenia/procesu. Sądzę więc, że każdy niestandardowy program mógłby zrobić to samo.

W związku z tym pytanie brzmi: Czy jest możliwe, że niestandardowy program tworzy nienazwaną sieć i pozostanie niezaangażowanyz jakimkolwiek procesem?

Co więcej, czy możliwe jest wylistowanie takich (ukrytych) net ns z przestrzeni użytkownika, ponieważ nie znamy ścieżek do i-węzłów? (Jądro ma oczywiście link do net ns) Pomocny będzie fragment kodu.

+0

Doceniłbym więcej odpowiedzi. Ktoś? Dzięki! – user31986

Odpowiedz

1

Czy jest możliwe, że niestandardowy program tworzy nienazwaną sieć i nie jest powiązany z żadnym procesem?

Tak, jest to możliwe. Według Linux przestrzenie nazw strony man (http://man7.org/linux/man-pages/man7/namespaces.7.html):

Każdy proces ma/proc/[pid]/ns/podkatalog zawierający jeden wpis dla każdej przestrzeni nazw, która obsługuje jest manipulowany przez setns (2):

Wiązanie (patrz mount (2)) jednego z plików w tym katalogu do gdzie indziej w systemie plików zachowuje odpowiadający obszar nazw proces określony przez pid alive, nawet jeśli wszystkie procesy obecnie w przestają istnieć.

O innym pytaniem:

to jest możliwe, aby wymienić się takie (ukryty) ns netto z przestrzeni użytkownika, biorąc pod uwagę, że nie wiemy, ścieżki do węzłów?

Jeśli wziąć pod uwagę powyższy cytat z pierwszego pytania, analizując oprawionych ścieżki powinny być w stanie znaleźć te ukrytych nazw.

+0

Ścieżki związane w/proc/są specyficzne dla narzędzia netns, które celowo je tworzy. Jeśli utworzysz sieć ns, powiedzmy, w programie C, jak ją wyśledzić? – user31986

Powiązane problemy