Linux 에서 커널 네임스페이스가 활성 상태인지 확인하는 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 커널 네임스페이스 (kernel namespace) 가 활성화되어 있는지 확인하는 방법을 배우게 됩니다. 프로세스 격리 및 컨테이너화에 중요한 네임스페이스의 존재를 식별하고 확인하는 다양한 방법을 살펴볼 것입니다.

먼저 lsns 명령을 사용하여 시스템의 다양한 네임스페이스를 나열하고, 해당 유형과 관련된 프로세스를 이해합니다. 다음으로, 프로세스가 특정 네임스페이스에 어떻게 연결되어 있는지 확인하기 위해 /proc/self/ns 디렉토리 내의 네임스페이스 링크를 검사합니다. 마지막으로, 네트워크 격리를 관리하는 데 사용되는 일반적인 도구인 ip netns 명령을 사용하여 네트워크 네임스페이스를 구체적으로 확인합니다.

lsns 로 네임스페이스 나열

이 단계에서는 lsns 명령을 사용하여 시스템에 존재하는 네임스페이스를 나열하는 방법을 배우게 됩니다. 네임스페이스는 프로세스, 네트워크 인터페이스, 마운트 지점 등 다양한 시스템 리소스에 대한 격리를 제공하는 Linux 의 기본 개념입니다. 이러한 격리는 컨테이너와 같은 기술의 핵심입니다.

lsns 명령은 util-linux 패키지의 일부이며, 시스템의 네임스페이스에 대한 정보를 나열하는 데 사용됩니다.

먼저, util-linux 패키지가 설치되어 있는지 확인해 보겠습니다. 일반적으로 설치되어 있지만, 확인하는 것이 좋습니다. 이를 위해 apt를 사용할 수 있습니다.

아직 열려 있지 않다면 터미널을 엽니다. 데스크탑 왼쪽에서 Xfce 터미널 아이콘을 찾을 수 있습니다.

이제 다음 명령을 입력하여 패키지 목록을 업데이트합니다.

sudo apt update

Enter 키를 누릅니다. 다음과 유사한 출력을 볼 수 있습니다.

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...

다음으로, util-linux를 설치해 보겠습니다. 다음 명령을 입력하고 Enter 키를 누릅니다.

sudo apt install util-linux

패키지가 이미 설치되어 있다는 출력을 볼 수 있으며, 이는 괜찮습니다. 설치되면 진행률 표시줄과 확인 메시지가 표시됩니다.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
util-linux is already the newest version (x.xx.x-xu).
0 upgraded, 0 newly installed, 0 to remove and xx not upgraded.

이제 lsns를 사용할 수 있는지 확인했으므로, 이를 사용하여 네임스페이스를 나열해 보겠습니다. 다음 명령을 입력하고 Enter 키를 누릅니다.

lsns

다음과 유사한 출력을 볼 수 있으며, 다양한 유형의 네임스페이스와 관련된 프로세스가 표시됩니다.

        NS TYPE   NPROCS   PID PPID       CMD
4026531835 cgroup      1     1    0     /sbin/init
4026531836 pid         1     1    0     /sbin/init
4026531837 user        1     1    0     /sbin/init
4026531838 uts         1     1    0     /sbin/init
4026531839 ipc         1     1    0     /sbin/init
4026531840 mnt         1     1    0     /sbin/init
4026531841 net         1     1    0     /sbin/init
4026532720 cgroup     10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532721 pid        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532722 user       10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532723 uts        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532724 ipc        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532725 mnt        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532726 net        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
...

출력은 NS (네임스페이스 ID), TYPE (네임스페이스 유형, 예: cgroup, pid, user, uts, ipc, mnt, net), NPROCS (네임스페이스의 프로세스 수), PID (프로세스 ID), PPID (상위 프로세스 ID) 및 CMD (명령) 과 같은 열을 보여줍니다.

이 명령은 시스템에서 활성 상태인 네임스페이스와 해당 네임스페이스 내에서 실행 중인 프로세스에 대한 개략적인 정보를 제공합니다.

다음 단계로 진행하려면 계속을 클릭하십시오.

/proc/self/ns 에서 네임스페이스 링크 확인

이전 단계에서 lsns를 사용하여 시스템의 네임스페이스 목록을 확인했습니다. 이제 실행 중인 프로세스가 이러한 네임스페이스와 어떻게 관련되는지 살펴보겠습니다.

Linux 의 모든 프로세스는 /proc/<pid>/ns/ 아래에 있는 특수한 디렉토리를 가지며, 여기에는 해당 프로세스가 속한 네임스페이스에 대한 심볼릭 링크가 포함되어 있습니다. /proc/self/ 디렉토리는 현재 실행 중인 프로세스 (이 경우 터미널 세션) 의 /proc/<pid>/ 디렉토리에 대한 심볼릭 링크입니다.

현재 터미널 프로세스에 대한 네임스페이스 링크를 확인하기 위해 /proc/self/ns/ 디렉토리의 내용을 나열해 보겠습니다.

터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

ls -l /proc/self/ns/

다음과 유사한 출력을 볼 수 있습니다.

total 0
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 cgroup -> "cgroup:[4026532720]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 ipc -> "ipc:[4026532724]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 mnt -> "mnt:[4026532725]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 net -> "net:[4026532726]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 pid -> "pid:[4026532721]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 user -> "user:[4026532722]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 uts -> "uts:[4026532723]"

각 줄은 서로 다른 유형의 네임스페이스 (cgroup, ipc, mnt, net, pid, user, uts) 를 나타내며, 커널의 내부 표현에서 실제 네임스페이스 파일을 가리키는 심볼릭 링크 (->) 입니다. 대괄호 안의 숫자 (예: [4026532720]) 는 이전 단계에서 lsns 명령의 출력에서 확인한 해당 특정 네임스페이스의 고유 ID 입니다.

이것은 현재 터미널 프로세스가 여러 다른 네임스페이스의 일부이며, 특정 시스템 리소스에 대한 자체 격리된 보기를 제공함을 보여줍니다.

/proc/<pid>/ns/를 이해하는 것은 특히 컨테이너 환경에서 실행 중인 프로세스의 네임스페이스 구성을 디버깅하고 검사하는 데 중요합니다.

계속하려면 계속을 클릭하십시오.

ip netns 로 네트워크 네임스페이스 확인

이전 단계에서 일반적인 네임스페이스에 대해 배우고 프로세스에 대한 네임스페이스 링크를 확인하는 방법을 배웠습니다. 이제 네트워크 네임스페이스에 초점을 맞추고 ip 명령을 사용하여 이를 관리하는 방법을 살펴보겠습니다.

네트워크 네임스페이스는 네트워크 인터페이스, IP 주소, 라우팅 테이블 및 방화벽 규칙을 포함하여 프로세스에 대한 별도의 네트워크 스택을 제공합니다. 이는 컨테이너 및 가상 네트워킹에서 사용되는 것처럼 네트워크 트래픽을 격리하는 데 필수적입니다.

ip 명령은 Linux 에서 네트워크 구성을 위한 강력한 유틸리티입니다. ip netns 하위 명령은 특히 네트워크 네임스페이스를 관리하는 데 사용됩니다.

현재 구성된 네트워크 네임스페이스를 나열하려면 ip netns와 함께 list 옵션을 사용합니다.

터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

ip netns list

일반적인 LabEx 환경 (종종 컨테이너) 에서는 이 명령으로 처음에 명시적으로 생성된 네트워크 네임스페이스가 표시되지 않을 수 있습니다. 출력은 비어 있을 수 있습니다.

이는 터미널이 실행 중인 기본 네트워크 네임스페이스가 기본 네임스페이스이고, ip netns list가 일반적으로 명시적으로 생성되고 등록된 네임스페이스를 표시하기 때문입니다.

그러나 이전 단계에서 수행한 것처럼 /proc/self/ns/net 심볼릭 링크를 검사하여 현재 프로세스가 속한 네트워크 네임스페이스를 여전히 확인할 수 있습니다. ip netns 명령은 특정 격리 목적으로 생성할 수 있는 이름이 지정된 네트워크 네임스페이스를 관리하기 위한 것입니다.

이 소개 랩에서는 새로운 네트워크 네임스페이스를 생성하지 않지만, ip netns list가 이를 확인하는 명령임을 이해하는 것은 네트워크 격리에 대한 향후 학습에 중요합니다.

이제 lsns를 사용하여 네임스페이스를 탐색하고, /proc에서 프로세스별 네임스페이스 링크를 검사했으며, 네트워크 네임스페이스를 나열하는 명령을 배웠습니다.

랩을 완료하려면 계속을 클릭하십시오.

요약

이 랩에서는 Linux 에서 활성 커널 네임스페이스를 확인하는 방법을 배웠습니다. 먼저 lsns 명령을 사용하여 시스템에 존재하는 다양한 네임스페이스를 나열하는 것으로 시작했습니다. 네임스페이스가 시스템 리소스에 대한 격리를 제공하고 컨테이너 기술의 기본임을 이해했습니다. lsns를 포함하는 util-linux 패키지가 apt를 사용하여 설치되었는지 확인했습니다.

lsns로 네임스페이스를 나열한 후, 제공된 내용에 자세히 설명되어 있지 않은 후속 단계에서는 /proc/self/ns 디렉토리 내의 네임스페이스 링크를 확인하고 ip netns 명령을 사용하여 특히 네트워크 네임스페이스를 확인하는 작업이 포함됩니다. 이러한 방법은 다양한 유형의 커널 네임스페이스의 존재 및 상태를 검사하고 확인하는 대체 방법을 제공합니다.