¿Cómo puedo verificar si un puerto está escuchando en un servidor Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Si la salida está vacía, el puerto no está en uso.
¿Cómo puedo verificar si un puerto está escuchando en un servidor Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Si la salida está vacía, el puerto no está en uso.
Respuestas:
Puede verificar si un proceso escucha en un puerto TCP o UDP con netstat -tuplen
.
Para verificar si algunos puertos son accesibles desde el exterior (esto es probablemente lo que desea), puede usar un escáner de puertos como Nmap de otro sistema. Ejecutar Nmap en el mismo host que desea verificar es bastante inútil para su propósito.
-t
, -u
, -p
, -l
, -e
, y -n
. Gracias al analizador de opciones se puede expresar como -tuplen
. linux.die.net/man/8/netstat
telnet
comando generalmente solo admite TCP, por lo que no tiene suerte si el servicio que desea verificar se ejecuta en otro protocolo.
sudo netstat -tuplen
. Esto le proporcionará procesos propiedad no solo de usted, sino también de otros, e imprimirá detalles adicionales (como PID / Nombre del programa) si aún no se muestran como usuarios no root.
La forma más rápida de probar si un puerto TCP está abierto (incluidos los firewall de hardware que pueda tener) es escribir desde una computadora remota (por ejemplo, su escritorio):
telnet myserver.com 80
Que intentará abrir una conexión al puerto 80 en ese servidor. Si tiene un tiempo de espera o lo niega, el puerto no está abierto :)
if you get a time out or deny, the port is not open
OK, en resumen, tiene un servidor en el que puede iniciar sesión. Desea ver si algo está escuchando en algún puerto. Como root, ejecuta:
netstat -nlp
esto mostrará una lista de procesos que escuchan en los puertos TCP y UDP. Puede escanear (o grep) para el proceso que le interesa y / o los números de puerto que espera ver.
Si el proceso que espera no está allí, debe iniciar ese proceso y verificar netstat nuevamente. Si el proceso está allí, pero está escuchando en una interfaz y puerto que no esperaba, entonces hay un problema de configuración (por ejemplo, podría estar escuchando, pero solo en la interfaz de bucle invertido, por lo que vería 127.0.0.1:3306 y no hay otras líneas para el puerto 3306, en el caso de la configuración predeterminada para MySQL).
Si el proceso está activo y está escuchando en el puerto que espera, puede intentar ejecutar un "telnet" a ese puerto desde su Macbook en su oficina / hogar, por ejemplo,
telnet xxxxxxxxxxxx.co.uk 443
Eso probará si (suponiendo puertos estándar) que hay un servidor web configurado para SSL. Tenga en cuenta que esta prueba con telnet solo funcionará si el proceso está escuchando en un puerto TCP. Si se trata de un puerto UDP, también puede intentar con cualquier cliente que vaya a utilizar para conectarse a él. (Veo que usó el puerto 224. Esto es masqdialer, y no tengo idea de qué es eso).
Si el servicio está allí, pero no puede acceder a él externamente, entonces hay un firewall que lo bloquea. En ese caso, ejecute:
iptables -L -n
Esto mostrará todas las reglas de firewall tal como están definidas en su sistema. Puede publicar eso, pero, en general, si no está permitiendo todo en la cadena INPUT, probablemente tendrá que permitir explícitamente el tráfico en el puerto en cuestión:
iptables -I INPUT -p tcp --dport 224 -j ACCEPT
O algo por el estilo. No ejecute los comandos de su firewall a ciegas según lo que un extraño le haya dicho en Internet. Considera lo que estás haciendo.
Si su firewall en la caja permite el tráfico que desea, entonces su compañía de hosting puede estar ejecutando un firewall (por ejemplo, solo permiten SSH (22 / tcp), HTTP (80 / tcp) y HTTPS (443 / tcp) y negando todo otro tráfico entrante). En este caso, deberá abrir un ticket del servicio de asistencia con ellos para resolver este problema, aunque supongo que puede haber algo en su cPanel que lo permita.
Yo uso el combo de netstat
y lsof
:
netstat -an | grep <portnumber>
lsof -i:<portnumber>
Para ver si se está utilizando el puerto y qué lo está utilizando.
Si está conectado al sistema y puede ejecutar un comando como root, puede verificar la salida de iptables
iptables -L -vn
esto enumerará las reglas del firewall y qué puertos son objetivo abierto ACCEPT
y cualquier objetivo de puerto cerrado explícitamente REJECT
.
firewall-cmd --query-port=port/protocol
, por ejemplo firewall-cmd --query-port=80/tcp
.
lsof -i :ssh
enumerará todos los procesos con el puerto ssh abierto, tanto las conexiones activas como las de escucha.
sudo
si no devuelve ningún resultado.