Puncte:5

Linux listează toate spațiile de nume de rețea

drapel za

Vreau să enumerez toate spațiile de nume de rețea de pe mașina mea Linux. Până acum am găsit două moduri recomandate de a face acest lucru:

lista IP netns

Și

lsns --type=net

Din păcate, ambele comenzi nu listează toate spațiile de nume! Primul listează doar spațiile de nume găsite în /var/run/netns, iar al doilea va găsi doar spațiile de nume cu cel puțin un proces care rulează în el. Docker, de exemplu, își va salva spațiile de nume în /var/run/docker/netns (deci nu sunt afișate de ip netns) și există unele spații de nume fără un proces care rulează (deci nu sunt afișate de lsns). Există vreo comandă care imprimă TOATE spațiile de nume de rețea de pe gazdă?

A.B avatar
drapel cl
A.B
legate de: https://unix.stackexchange.com/questions/505112/how-do-i-find-all-interfaces-that-have-been-configured-in-linux-including-those
Garuno avatar
drapel za
Deci nu există un instrument încorporat pentru a face acest lucru? Trebuie să curăț sistemul de fișiere /proc pentru a obține toate spațiile de nume?
Puncte:0
drapel cn

Nu după nume, dar puteți găsi toate spațiile de nume folosite uitându-vă în /proc/{PID}/ns/net

Acest script (rulat ca rădăcină) arată o listă de ID-uri de spații de nume de rețea utilizate pe computer:

find /proc/ -name ns 2>/dev/null |xargs -I NS ls -la NS/net 2> /dev/null| awk -F '->' '{print $2}'|sort -u
A.B avatar
drapel cl
A.B
spațiile de nume doar montate nu vor fi găsite
George Shuklin avatar
drapel cn
Da, acest truc funcționează numai cu spațiile de nume utilizate de procese.
Puncte:0
drapel mx

Pentru a include spațiile de nume de rețea ale containerelor docker care rulează în lista IP netns ai putea seta doar un link simbolic (alias softlink) ca acesta:

ln -Ts /var/run/docker/netns /var/run/netns

Din păcate, nu există o comandă generică în linux pentru a enumera toate spațiile de nume de rețea. Puteți folosi următorul script Python pentru a lista cel puțin toate spațiile de nume care sunt legate /var/run/netns: https://github.com/Intika-Linux-Namespace/Namespace-Lister

Pentru aplicațiile care folosesc alte căi, va trebui să modificați acest script.

Garuno avatar
drapel za
Acest lucru va rezolva problema doar pentru cazul specific Docker. Cum aș știu dacă orice altă aplicație creează spații de nume în alte locații?
digijay avatar
drapel mx
Bună @Garuno, vezi editarea mea. Se pare că nu există o soluție generală pentru aceasta, ci cel puțin un script pe care l-ați putea modifica pentru a vă satisface nevoile. Sper ca ajuta!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.