Network Namespace
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
ネットワーク名前空間は、ネットワークスタックの隔離を提供するLinuxカーネルの機能であり、各ネットワーク名前空間が独自のネットワーク構成、インターフェース、IPアドレス、ルーティングテーブル、およびファイアウォールルールを持つことを可能にします。この隔離は、各コンテナが他のコンテナやホストシステムから独立したネットワーク構成を持つべきであるコンテナ化など、さまざまなシナリオで有用です。
新しいネットワーク名前空間が作成されると、完全に隔離されたネットワークスタックが開始され、ループバックインターフェース(lo)を除いてネットワークインターフェースは存在しません。これは、新しいネットワーク名前空間で実行されているプロセスが、デフォルトでは他の名前空間やホストシステムのプロセスと通信できないことを意味します。
vethペアのような仮想ネットワークインターフェースを作成し、ネットワーク名前空間間で移動させることができます。これにより、名前空間間または名前空間とホストシステム間でネットワーク接続を確立できます。たとえば、vethペアの一端をコンテナのネットワーク名前空間に配置し、もう一端をホスト名前空間のブリッジまたは別のネットワークインターフェースに接続することで、コンテナにネットワーク接続を提供します。
名前空間内のネットワークインターフェースは、他の名前空間とは独立して独自のIPアドレス、ルーティングテーブル、およびファイアウォールルールを持つことができます。これにより、異なるネットワーク名前空間内のプロセスは異なるネットワーク構成を持ち、別々のネットワークシステムで実行されているかのように動作できます。
プロセスは、setns()
システムコールを使用して名前空間間を移動するか、unshare()
またはclone()
システムコールをCLONE_NEWNET
フラグと共に使用して新しい名前空間を作成できます。プロセスが新しい名前空間に移動するか、新しい名前空間を作成すると、その名前空間に関連付けられたネットワーク構成とインターフェースを使用し始めます。
新しいインスタンスの /proc
ファイルシステムを --mount-proc
パラメータを使用してマウントすることで、新しいマウントネームスペースがそのネームスペースに特有のプロセス情報の 正確で孤立したビュー を持つことを保証します。
また、ルートでない限り、他のプロセスネームスペースに入ることはできません。そして、ディスクリプタがそれを指していない限り、他のネームスペースに入ることはできません(例えば、/proc/self/ns/net
のように)。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)