Ubuntu 8.04에서 포트를 사용할 수 있는지 어떻게 알 수 있습니까? 포트가 이미 열려 있는지

포트가 이미 열려 있는지 여부를 알려주는 bash에서 실행할 수있는 명령이 있습니까?



답변

“netstat”를 사용하여 현재 사용중인 포트를 확인하십시오.

netstat -antp

프로토 Recv-Q Send-Q 로컬 주소 외부 주소 상태 PID / 프로그램 이름
tcp 0 xxx.xxx.xxx.xxx 0.0.0.0:* LISTEN 16297 / 이름
tcp 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / 이름
tcp 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / 이름
tcp 00 127.0.0.1:53 0.0.0.0:* 듣기 16297 / 이름     

답변

이 (netstat)는 가장 빠른 솔루션입니다 …

netstat -lnt

… 그러나 이것은 당신에게 더 많은 통제력을 제공합니다 (속도 비용 (때로는 많은 속도)) …

lsof -n -i -a -u www-data

위의 예 는 Apache ( ) 사용자 에게 속한 모든 TCP 포트가 열려 있고 LISTEN상태 인 AND ( -a) 를 보여줍니다 www-data.


답변

모든 좋은 답변.

그러나 해당 컴퓨터에 로그온했는지 언급하지 않습니다. ;피

그렇지 않은 경우 nmap 은 친구입니다.

초보자를 위해 :

nmap -Otarget

amap 은 배너 페이지를 잡아서 서버 소프트웨어를 추측하려고 시도하는 좋은 선택입니다.

초보자를 위해 :

amaptarget1-6000


답변

시험

lsof -i :<port number>

결과가 나오면 무언가가 듣고 묶는 것입니다. 예 :

# lsof -i :80
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx    1833 nobody    3u  IPv4 51091229      0t0  TCP odessa.cheney.net:http->79.173.188.214:52918 (ESTABLISHED)
nginx    1833 nobody    5u  IPv4 46221856      0t0  TCP odessa.cheney.net:http->66.36.243.182:37876 (CLOSE_WAIT)
nginx    1833 nobody    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx    1833 nobody   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)
nginx    1833 nobody   14u  IPv4 46221857      0t0  TCP odessa.cheney.net:http->66.36.243.182:37880 (CLOSE_WAIT)
nginx    1833 nobody   15u  IPv4 51091030      0t0  TCP odessa.cheney.net:http->msnbot-65-55-106-132.search.msn.com:51708 (ESTABLISHED)
nginx   11832   root    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx   11832   root   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)

답변

netstat -tlnp  

표시 t되는 CP 포트 listening가 보여 n엄버 만 (하지 해결의 이름을 -이 빨랐다한다) 및 쇼 p청취를하고있다 로웠을합니다 ( p루트 경우에만 작동)

netstat -ulnp  

표시 u되는 포트 (DP) listening, 쇼 n에만 엄버 (하지 해결의 이름을 -이 빨랐다한다) 및 쇼 p청취를하고있다 로웠을합니다 ( p루트 경우에만 작동)

netstat -unp  

보기 u열려있는 포트하지만 안 듣고, 쇼 DP n전용 (names-가 해결되지 않는 것은 그것이 더 빨랐다 수) 엄버와 쇼 p청취를하고있다 로웠을합니다 ( p루트 경우에만 작동)

netstat -an

표시 a사용 LL 포트, 쇼 n엄버 전용 – 이름을 확인하지 않습니다

lsof -i <proto>@<host>:<port>

예 :

lsof -i tcp@localhost:25

localhost 25 / TCP 포트에서 수신 대기중인 것이 있는지 확인하거나

lsof -i tcp@0.0.0.0:636 

호스트 / 인터페이스에 대해 로컬 또는 원격 소켓이 있는지 (로컬) 또는 연결된 (로컬 또는 원격) 소켓이 있는지 확인


답변

lsof (열린 파일 목록)는 프로세스가 포트에서 수신 대기 중인지 확인하는 좋은 도구입니다.

lsof -P | grep : <포트 번호>

netstat는 활성 연결이 있는지 확인하기위한 좋은 도구입니다.

netstat -n | grep : <포트 번호>


답변

TCP 또는 UDP와 같이 사용하려는 프로토콜에 대해서는 언급하지 않았으며 “포트”는 시스템이 소켓을 명확하게하기 위해 지원하는 것만 큼 세분화되어 있지 않다는 것을 인식해야합니다. 예를 들어 시스템에 여러 개의 IP 주소가있는 경우 포트 80이 모든 IP 주소에서 사용 중이거나 (응용 프로그램이 “0.0.0.0”또는 “::”또는 각 IP 주소에 연속적으로 바인딩되어 있음) 또는 해당 IP 주소의 하위 집합에만 사용하십시오.

포트 / 주소가 사용 가능하고 사용 가능한지 판별하는 가장 좋고 확실한 방법은 해당 포트 / 주소를 바인딩하는 것입니다. Netcat이 유용합니다.

nc -l [-s abcd] -p NN

TCP 포트 NN에 바인드를 시도합니다 (옵션, 기본값은 모든 주소입니다) abcd UDP에서 동일하게 수행하려면 -u 옵션을 추가하십시오.

다음으로, 포트가 원하는대로 “열렸는지”알기 위해서는 잠재적 인 방화벽 규칙을 살펴 봐야합니다. 가장 쉬운 방법은 포트에 연결을 시도하는 것입니다. 서버에서 위와 같이 netcat을 사용하고 클라이언트에서 netcat을 사용하여 연 포트에 연결을 시도하십시오.

nc [-u] abcd NN

-u 플래그가 지정된 경우 UDP를 사용하여 abcd의 포트 NN에 연결합니다. 그런 다음 클라이언트쪽에 입력을 입력하면 서버에 표시됩니다. 그렇지 않은 경우 시스템 및 네트워크 별 도구를 조사해야합니다.