tcp – ¿Cómo reservo puertos para mi aplicación?

Pregunta:

¿Cómo reservo una lista de puertos para mis aplicaciones personalizadas?

Para ser específico, el producto que estoy creando tiene muchos procesos y mucha intercomunicación entre ellos.

El problema que tengo es que, de vez en cuando, el sistema operativo me roba los puertos. Es raro, pero sucede.

Esto podría deberse a que una aplicación diferente ha utilizado ":: bind" sin un puerto especificado.

O, a veces, mis propias aplicaciones roban el puerto cuando llamo a ":: connect" con un conector no vinculado. Como se ve en la página del manual:

Si el conector aún no se ha vinculado a una dirección local, connect () lo vinculará a una dirección que, a menos que la familia de direcciones del conector sea AF_UNIX, es una dirección local no utilizada.

Entonces, mi pregunta es, ¿puedo reservar los puertos que necesito para que el sistema operativo no los use? ¿Se puede lograr esto con / etc / services? ¿O hay una forma diferente?

Respuesta:

Para asegurarse de que el kernel no entregará 49000 y 49001 a los clientes, ya que desea usarlos para sus servidores en Linux.

sysctl -w net.ipv4.ip_local_reserved_ports = 49000, 49001

suéltelo en /etc/sysctl.conf , y luego ejecute sysctl -p .

Tenga en cuenta que esto no está probado.

Referencias

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım