Pregunta

(Esta pregunta se ha downvoted, que me parece extraño. ¿Cómo he ofendido?)

¿Tengo razón para pensar que la ejecución de un servidor ostentoso por lo general abre el puerto 4005 para el mundo, no está vinculada a las conexiones localhost sólo?

Así que cualquier persona pueda espiar en un café no sólo está permitiendo a los transeúntes para ejecutar código arbitrario en su ordenador, pero les está dando una interfaz agradable que hacerlo con.

Parece que cuando corro un servidor ostentoso, ya sea con 'mvn clojure: Swank', o 'Lein Swank', o (swank.swank / start-server "/ tmp / yo")

Entonces consigo algo así (gracias Mike!):

$lsof -i -P
java      11693 john   13r  IPv6 6701891      0t0  TCP *:34983 (LISTEN)

y de hecho me puedo conectar desde un emacs que se ejecutan en otro equipo de la misma red.

(swank.swank/start-server "/tmp/yo")

Si comienzo el servidor con la mano, se produce la siguiente salida

Connection opened on local port  34983
#<ServerSocket ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=34983]>

Considerando lo siguiente:

(swank.swank/start-server "/tmp/yo" :host "localhost")

produce:

Connection opened on local port  40368
#<ServerSocket ServerSocket[addr=localhost/127.0.0.1,port=0,localport=40368]>

¿Qué se parece más a lo que esperaba.

¿Hay alguna buena razón para hacer esto?

¿Alguna idea sobre la forma en que las formas más convencionales de comenzar podría ser persuadido para aceptar solamente conexiones desde los procesos locales?

¿Fue útil?

Solución

pregunta totalmente válida.

Después de abrir un servidor de limo, se dará cuenta:

eames:~:% lsof -i -P | grep 4005
java      41477  mjd   33u  IPv6 0x0b8956d0      0t0  TCP [::127.0.0.1]:4005 (LISTEN)

La conexión está escuchando en la dirección local en el puerto 4005. Esta interfaz no está expuesto a la red, por lo que otros dispositivos de la red no pueden conectarse al servidor de limo.

editar

Esta fue mi resultado de comenzar Swank usando Leiningen, que ofrece "localhost" como argumento para swank.swank/start-server. Es posible que desee volver a comprobar que el plugin Leiningen es la apertura de los puertos no locales.

Tienes razón que Swank se abre la conexión en todas las direcciones si no se proporciona explícitamente un huésped. El código en cuestión es swank.util.net.sockets/make-server-socket, y este comportamiento se documenta. Estoy de acuerdo, parece que el defecto equivocado.

Otros consejos

sólo acepta una conexión por lo que incluso si se expone al mundo que deje de escuchar una vez que se conecte.

Si estás usando el clojure-maven-plugin, versión 1.3.4 fue lanzado recientemente, que ahora se inicia el servidor ostentoso contra localhost para evitar este problema.

Este comportamiento se puede configurar en el archivo pom.xml con:

<configuration>
  <swankHost>someotherhostname</swankHost>
</configuration>

o desde la línea de comandos con:

mvn clojure:swank -Dclojure.swank.host=someotherhostname
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top