소개
이 랩에서는 Linux 에서 특정 네트워크 소켓이 열려 있는지 확인하는 방법을 배우게 됩니다. 활성 네트워크 소켓을 식별하고 검사하는 방법을 이해하는 것은 네트워크 문제 해결 및 모니터링을 위한 기본적인 기술입니다.
실습을 통해 ss 및 netstat과 같은 강력한 명령줄 도구를 사용하여 네트워크 연결을 나열하고 필터링합니다. 또한 /proc/net 파일 시스템을 탐색하여 소켓 세부 정보를 더 깊이 이해함으로써 시스템에서 네트워크 소켓의 상태를 확인하는 포괄적인 접근 방식을 제공합니다.
ss -tuln 으로 소켓 확인
이 단계에서는 ss 명령을 사용하여 Linux 시스템의 네트워크 소켓을 검사하는 방법을 배우게 됩니다. 소켓은 네트워크를 통해 데이터를 송수신하기 위한 엔드포인트입니다. 활성 소켓을 보는 방법을 이해하는 것은 네트워크 문제 해결 및 모니터링에 매우 중요합니다.
ss 명령은 소켓을 검사하기 위한 강력한 도구입니다. 다음 옵션과 함께 사용합니다.
-t: TCP 소켓을 표시합니다.-u: UDP 소켓을 표시합니다.-l: 리스닝 소켓 (연결을 기다리는 소켓) 을 표시합니다.-n: 서비스 이름을 확인하지 않습니다 (대신 포트 번호를 표시합니다).
아직 열려 있지 않은 경우 터미널을 엽니다. 데스크탑 왼쪽에서 Xfce Terminal 아이콘을 찾을 수 있습니다.
이제 다음 명령을 입력하고 Enter 키를 누릅니다.
ss -tuln
다음과 유사한 출력이 표시됩니다.
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:631 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:5900 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:25 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 128 [::1]:631 [::]:*
tcp LISTEN 0 128 [::]:5900 [::]:*
tcp LISTEN 0 128 [::1]:25 [::]:*
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:*
udp UNCONN 0 0 [::1]:323 [::]:*
udp UNCONN 0 0 [::]:631 [::]:*
출력을 분석해 보겠습니다.
Netid: 소켓 유형 (예:tcp,udp).State: 소켓의 상태 (예:LISTEN은 연결을 기다리고 있음을 의미).Recv-Q: 큐에 있는 수신된 바이트 수.Send-Q: 큐에 있는 전송된 바이트 수.Local Address:Port: 소켓이 바인딩된 로컬 IP 주소 및 포트 번호.0.0.0.0및[::]는 소켓이 사용 가능한 모든 네트워크 인터페이스 (각각 IPv4 및 IPv6) 에서 리스닝하고 있음을 나타냅니다.Peer Address:Port: 소켓이 연결된 원격 IP 주소 및 포트 번호.*는 소켓이 모든 원격 주소로부터의 연결을 리스닝하고 있음을 나타냅니다.
이 출력은 시스템에서 실행 중이며 연결을 리스닝하는 서비스를 보여줍니다. 예를 들어, SSH(포트 22), CUPS(포트 631), VNC(포트 5900) 및 메일 서버 (포트 25) 가 리스닝 중임을 확인할 수 있습니다.
이 출력을 이해하는 것은 네트워크 연결 문제를 진단하거나 시스템에서 실행 중인 잠재적으로 원치 않는 서비스를 식별하는 첫 번째 단계입니다.
다음 단계로 진행하려면 계속을 클릭하십시오.
netstat -tuln 으로 소켓 검증
이 단계에서는 또 다른 명령인 netstat을 사용하여 네트워크 소켓을 확인합니다. netstat은 ss에 비해 오래된 명령이지만, 여전히 널리 사용되며 네트워크 연결, 라우팅 테이블 및 인터페이스 통계에 대한 유사한 정보를 제공합니다.
netstat을 ss와 동일한 옵션으로 사용하여 서비스 이름을 확인하지 않고 리스닝 TCP 및 UDP 소켓을 확인합니다.
-t: TCP 소켓을 표시합니다.-u: UDP 소켓을 표시합니다.-l: 리스닝 소켓을 표시합니다.-n: 서비스 이름을 확인하지 않습니다.
터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.
netstat -tuln
다음과 유사한 출력이 표시됩니다.
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::5900 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:631 0.0.0.0:*
udp6 0 0 ::1:323 :::*
udp6 0 0 :::631 :::*
netstat -tuln의 출력은 ss -tuln의 출력과 매우 유사합니다. 두 명령 모두 프로토콜 (Proto), 로컬 주소 및 포트 (Local Address), 외부 주소 및 포트 (Foreign Address), 연결 상태 (State) 에 대한 정보를 제공합니다.
ss가 일반적으로 복잡한 시나리오에서 더 빠르고 유익한 것으로 간주되지만, netstat은 여전히 Linux 명령 도구 상자에 포함할 가치가 있는 도구입니다. 두 가지 모두에 익숙해지는 것이 좋습니다.
이제 ss와 netstat을 모두 사용하여 리스닝 소켓을 성공적으로 확인했습니다. 이는 시스템의 네트워크 활동을 이해하기 위한 기본적인 기술입니다.
다음 단계로 이동하려면 계속을 클릭하십시오.
/proc/net 에서 소켓 상세 정보 확인
이 단계에서는 Linux 커널의 네트워크 스택 및 네트워크 프로토콜에 대한 자세한 정보를 제공하는 /proc/net 디렉토리를 탐색합니다. ss 및 netstat과 같은 명령이 데이터를 가져오는 곳입니다.
/proc 파일 시스템은 프로세스 및 기타 시스템 정보에 대한 정보를 제공하는 가상 파일 시스템입니다. 커널의 내부 상태를 검사하는 강력한 방법입니다.
/proc/net 내부에서 네트워크 연결에 대한 원시 데이터를 포함하는 파일을 찾을 수 있습니다. 예를 들어, tcp, udp, tcp6 및 udp6은 활성 TCP 및 UDP 소켓 (각각 IPv4 및 IPv6) 에 대한 정보를 포함합니다.
tcp 파일의 내용을 살펴보겠습니다. 터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.
cat /proc/net/tcp
다음과 유사한 출력이 표시됩니다.
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
0: 0100007F:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 12345 1 0000000000000000 0
1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 67890 1 0000000000000000 0
... (more lines)
이 출력은 원시 커널 데이터이므로 ss 또는 netstat보다 사람이 읽기 어렵습니다. 각 줄은 TCP 소켓을 나타내며 다음을 포함한 다양한 필드를 포함합니다.
sl: 소켓 목록 인덱스.local_address: 16 진수 형식의 로컬 IP 주소 및 포트.0100007F는127.0.0.1(루프백 주소) 의 16 진수 표현이며,0019는 포트 25 의 16 진수 표현입니다.rem_address: 16 진수 형식의 원격 IP 주소 및 포트.st: 소켓의 상태 (예:0A는LISTEN을 나타냄).tx_queue: 전송 큐 크기.rx_queue: 수신 큐 크기.uid: 소켓을 소유한 사용자 ID.inode: 소켓의 inode 번호.
/proc/net/udp 파일을 보면 UDP 소켓도 볼 수 있습니다.
cat /proc/net/udp
IPv6 소켓의 경우 /proc/net/tcp6 및 /proc/net/udp6을 확인할 수 있습니다.
일상적인 사용을 위해 이러한 파일을 직접 구문 분석하지는 않겠지만, 네트워크 정보가 여기서 시작된다는 것을 이해하면 Linux 가 네트워크 연결을 관리하는 방법에 대한 더 깊은 통찰력을 얻을 수 있습니다. ss 및 netstat과 같은 명령은 본질적으로 이러한 파일에서 데이터를 읽고 형식을 지정하여 더 쉽게 이해할 수 있도록 합니다.
이제 /proc/net 파일 시스템에서 사용할 수 있는 원시 소켓 정보를 탐색했습니다.
랩을 완료하려면 계속을 클릭하십시오.
요약
이 랩에서는 다양한 명령줄 도구를 사용하여 Linux 에서 특정 네트워크 소켓이 열려 있는지 확인하는 방법을 배웠습니다. 먼저 -tuln 옵션을 사용하여 ss 명령을 사용하여 리스닝 TCP 및 UDP 소켓을 표시하고, Netid, State, Local Address:Port, Peer Address:Port와 같은 출력 열을 이해했습니다.
ss를 사용한 후에는 일반적으로 유사한 네트워크 통계를 제공하는 netstat 명령을 사용하여 소켓 정보를 확인합니다. 마지막으로, 네트워크 스택에 대한 하위 수준 보기를 제공하는 /proc/net 파일 시스템에서 직접 자세한 소켓 정보를 검사하는 방법을 탐색했습니다. 이러한 단계는 Linux 시스템에서 열린 네트워크 소켓을 식별하고 검사하는 포괄적인 접근 방식을 제공합니다.



