포트가 이미 열려 있는지 여부를 알려주는 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 -O
target
amap 은 배너 페이지를 잡아서 서버 소프트웨어를 추측하려고 시도하는 좋은 선택입니다.
초보자를 위해 :
amap
target
1-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 포트 l
istening가 보여 n
엄버 만 (하지 해결의 이름을 -이 빨랐다한다) 및 쇼 p
청취를하고있다 로웠을합니다 ( p
루트 경우에만 작동)
netstat -ulnp
표시 u
되는 포트 (DP) l
istening, 쇼 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에 연결합니다. 그런 다음 클라이언트쪽에 입력을 입력하면 서버에 표시됩니다. 그렇지 않은 경우 시스템 및 네트워크 별 도구를 조사해야합니다.