Network Namespace
Basiese Inligting
'n Netwerk-namespace is 'n Linux-kernelkenmerk wat isolasie van die netwerkstapel bied, wat elke netwerk-namespace in staat stel om sy eie onafhanklike netwerk-konfigurasie, koppelvlakke, IP-adresse, roetetabelle en vuremuur-reëls te hê. Hierdie isolasie is nuttig in verskeie scenario's, soos konteinerisasie, waar elke konteiner sy eie netwerk-konfigurasie moet hê, onafhanklik van ander konteinere en die gasheerstelsel.
Hoe dit werk:
Wanneer 'n nuwe netwerk-namespace geskep word, begin dit met 'n volledig geïsoleerde netwerkstapel, met geen netwerkkoppelvlakke behalwe die lusback-koppelvlak (lo). Dit beteken dat prosesse wat in die nuwe netwerk-namespace loop, nie standaard kan kommunikeer met prosesse in ander namespaces of die gasheerstelsel nie.
Virtuele netwerkkoppelvlakke, soos veth-pare, kan geskep word en tussen netwerk-namespaces geskuif word. Dit maak dit moontlik om netwerkverbinding tussen namespaces of tussen 'n namespace en die gasheerstelsel te vestig. Byvoorbeeld, een einde van 'n veth-paar kan in 'n konteiner se netwerk-namespace geplaas word, en die ander einde kan aangesluit word op 'n brug of 'n ander netwerkkoppelvlak in die gasheer-namespace, wat netwerkverbinding aan die konteiner bied.
Netwerkkoppelvlakke binne 'n namespace kan hul eie IP-adresse, roetetabelle en vuremuur-reëls hê, onafhanklik van ander namespaces. Dit maak dit moontlik vir prosesse in verskillende netwerk-namespaces om verskillende netwerk-konfigurasies te hê en te werk asof hulle op afsonderlike netwerkstelsels loop.
Prosesse kan tussen namespaces beweeg deur die
setns()
-sisteemaanroep te gebruik, of nuwe namespaces kan geskep word deur dieunshare()
- ofclone()
-sisteemaanroep met dieCLONE_NEWNET
-vlag te gebruik. Wanneer 'n proses na 'n nuwe namespace beweeg of een skep, sal dit begin om die netwerk-konfigurasie en koppelvlakke wat met daardie namespace geassosieer is, te gebruik.
Laboratorium:
Skep verskillende Namespaces
CLI
Deur 'n nuwe instansie van die /proc
-lêersisteem te monteer as jy die parameter --mount-proc
gebruik, verseker jy dat die nuwe berg-namespace 'n akkurate en geïsoleerde siening van die prosesinligting spesifiek vir daardie namespace het.
Docker
Kyk watter namespace jou proses in is
Om te bepaal in watter namespace jou proses tans is, kan jy die volgende opdrag gebruik:
Hier is die betekenis van die vlags in die uitset:
mnt
: Die bergingsnamespacepid
: Die prosesnamespacenet
: Die netwerknamespaceipc
: Die interproseskommunikasienamespaceuts
: Die stelselidentiteitsnamespaceuser
: Die gebruikersnamespace
As jy die uitset van die opdrag sien, kan jy bepaal in watter namespace jou proses tans is deur te kyk na die simboliese skakels wat na die aktiewe namespaces verwys.
Vind alle Netwerk namespaces
```bash nsenter -n TARGET_PID --pid /bin/bash ``` Verder kan jy slegs **toegang verkry tot 'n ander proses-namespace as jy root is**. En jy **kan nie** **toegang kry** tot 'n ander namespace **sonder 'n beskrywer** wat daarna verwys nie (soos `/proc/self/ns/net`).
Verwysings
Last updated