
자체 포트를 여는 애플리케이션(이 포트에 대한 서버 역할을 하여 해당 포트에서 수신 대기)과 동일한 애플리케이션이 다른 애플리케이션에 의해 바인딩된 포트에 연결되는(이 포트에 대한 클라이언트 역할을 함) 애플리케이션을 테스트하고 있습니다.
애플리케이션이 어떤 포트를 생성하고 어떤 애플리케이션과 포트에 연결하는지에 대한 개요를 알고 싶습니다.
어떻게 해야 하나요?
답변1
이를 위해 사용할 수 있습니다 netstat
. 예를 참조하세요(나는 을 찾았습니다 ssh
):
netstat -putan | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1725/sshd
tcp 0 0 1.2.3.4:45734 1.2.3.5:22 ESTABLISHED 2491/ssh
tcp6 0 0 :::22 :::* LISTEN 1725/sshd
설명:
나는 종종 매개변수를 사용합니다 -putan
(기억하기 쉽기 때문입니다).
-p
: 애플리케이션/프로세스의 PID를 표시합니다.-u
: UDP 포트/연결 표시-t
: TCP 포트/연결 표시-a
: 청취 소켓과 비청취 소켓을 모두 표시합니다.-n
: 숫자 출력(호스트 이름 등에 대한 DNS 조회를 수행하지 않음)
위 출력에서는 모든 네트워크 인터페이스( )의 포트에서 수신 대기하는 sshd
PID가 있는 ssh 데몬 프로세스( ) 가 있음을 알 수 있습니다 . 또한 포트 번호의 IP 주소에 연결된 SSH 클라이언트 프로세스(PID)가 있습니다. 내 IP 주소는 이고 외부 포트는 입니다 . 연결이 설정된 것을 확인할 수 있습니다. 따라서 을(를) 통해 로그인했습니다 .1725
22
0.0.0.0
2491
1.2.3.5
22
1.2.3.4
45734
ssh
답변2
이를 수행할 수 있는 또 다른 도구는lsof
:
# lsof -i -a -p 1981
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:22 (LISTEN)
#
사용된 옵션은 다음과 같습니다.
-i
프로세스에 의해 열린 인터넷 포트를 인쇄하려면-a
모든 옵션을 AND로 연결하려면-p 1981
프로세스 1981의 출력을 표시합니다.-n
호스트 이름 조회를 금지하고 대신 IP를 표시합니다.-P
서비스 조회를 금지하고 대신 포트 번호를 표시합니다.
lsof
더 큰 출력에서 프로세스를 찾아내지 않고도 확인할 프로세스를 지정할 수 있다는 장점이 있습니다. 이전보다 더 표준이 되어가고 netstat
있지만 시스템에서 더욱 안정적으로 사용할 수 있습니다 .lsof
답변3
우리는 이미 좋은 답변을 가지고 있지만 명령이 실행되는 순간 열려 있는 포트만 나열합니다.
strace
애플리케이션 수명 동안 열린 연결을 모니터링하는 데 적합한 도구입니다.
strace -e socket,connect,close -f -o hipchat.strace.txt hipchat
출력에는 UDP 요청 및 열렸지만 닫힌 연결과 같은 추가 정보가 표시됩니다.
답변4
ss -a4 | less
IPv4에 대해 말씀하시는 것 같습니다... 그렇지 않은 경우 앞의 명령에서 4를 6으로 바꿀 수 있습니다. -a 매개변수는 모든 포트(수신 및 비수신)를 표시하는 것입니다. 디스플레이에서 이름을 확인하지 않으려면 매개변수에 -n을 추가할 수 있습니다.