¿Qué tan seguro es cambiar el rango de puertos efímeros de Linux?


14

Veo el siguiente rango de puertos efímero en mi caja de Linux.

sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

Quiero ampliar el rango de puertos para comenzar desde alrededor de 16000. Una pregunta rápida aquí es: ¿qué tan seguro es cambiar el rango en contexto a las otras aplicaciones? ¿Otras aplicaciones se verán afectadas por este cambio? Entiendo que una aplicación se ve afectada solo si está utilizando los puertos en el rango de puertos especificado. Pero, en general, ¿cómo se trata este tipo de problemas?


No creo que haya ningún efecto en otras aplicaciones, pero no estoy seguro. Interesante pregunta.
ikrabbe

Correcto. Incluso intenté buscar alguna otra documentación, y no encontré ningún efecto en otras aplicaciones. Los siguientes dos enlaces son excelentes explicaciones de la razón por la que estaba enfrentando este problema: vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html ncftp.com/ncftpd/doc/misc /ephemeral_ports.html
Ashwin Tumma

@ikrabbe Ciertamente tendrá un efecto en otras aplicaciones si, por ejemplo, su navegador abre un puerto efímero para contactar un sitio web, entonces alguien / cosa intenta iniciar una aplicación que por coincidencia usa ese puerto. La aplicación fallará.
Ricitos

3
Solo por razones de integridad, la sintaxis para editar el rango de números de puerto es la siguiente: $ sudo sysctl -w net.ipv4.ip_local_port_range = "15000 61000"
Ashwin Tumma

Respuestas:


10

Cambiar el rango de puertos efímero puede causar problemas si está utilizando Mesos .

Mesos anuncia los recursos de un host a varios Mesos Frameworks que luego pueden elegir usar los recursos anunciados. Los recursos anunciados incluyen CPU, memoria, puertos, etc. El conjunto predeterminado de puertos que Mesos anuncia es 31000-32000 . Esto evita un choque con el rango de puerto efímero predeterminado de Linux de 32768-61000 .

Notablemente, Mesos no sabe si un puerto es utilizado por algún otro proceso, solo rastrea la asignación de puertos a las entidades que organiza ( Mesos Tasks & Mesos Executors ). Entonces, si cambia el rango de puertos efímeros de modo que se superponga con el rango de puertos de Mesos, es probable que algún proceso arbitrario use un puerto efímero que en realidad sea uno de esos "puertos de Mesos". Esto podría llevar a que Mesos ofrezca ese puerto a un Marco de Mesos , que se encontraría con fallas aparentemente aleatorias de sus Ejecutores de Mesos y / o Tareas de Mesos, ya que no podrán unirse a ese puerto.

Si necesita aumentar su rango de puerto efímero y también necesita ejecutar Mesos, puede modificar los puertos anunciados a través de un parámetro de configuración mesos-slave(que pronto cambiará su nombre a mesos-agent) --resources.


4

Puede obtener una lista de los servicios potencialmente afectados al ver qué hay en ese rango en su /etc/servicesarchivo local , por ejemplo:

awk '/^#/ { next } $2+0 >= 16000 && $2+0 < 32768 { print }' /etc/services

O en el lugar autorizado:

wget http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv
awk -F, '$2+0 >= 16000 && $2+0 < 32768 { print }' service-names-port-numbers.csv

¡Gracias por el script awk, definitivamente ayuda a identificar los puertos que figuran en los servicios!
Ashwin Tumma
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.