¿Es posible utilizar el programa netcat (nc) de Unix para crear un servidor y monitor proxy TCP? Me gustaría que todo el tráfico TCP pasara a través de la tubería, y que se enviara a stdout para su monitoreo. Tenga en cuenta que esto se utilizará para controlar el tráfico HTTP entre un dispositivo de hardware y un servidor HTTP.Uso de netcat (nc) como servidor proxy HTTP y monitor
Respuesta
Claro, usted puede usarlo o un par faucet|hose
, pero ¿por qué hacer eso cuando se puede tener una instancia de un mínimo de Apache hacer exactamente lo mismo y proporcionar un conjunto más completo de funciones de análisis?
No netcat en sí mismo, ya que tendría que interpretar la solicitud HTTP y transmitirla. Por ejemplo, una solicitud HTTP a través de un proxy comienza con:
GET http://www.example.org/ HTTP/1.1
la que el proxy entonces tiene que ir, 'está bien, tengo que conectar a example.org y GET /'.
Ahora esto podría hacerse simplemente canalizando la salida nc en un script que analiza el HTTP req y luego llama a 'wget' para obtener la página, luego sorpréndelo a través de netcat ... oh diablos, ¿por qué?
Apache, o calamar, probablemente pueda hacer el trabajo.
Sí, debería ser posible.
Cuando pregunté sobre escribir un servidor web en bash 1 en un grupo de noticias, terminé con dos buenas ideas. Uno era usar xinetd como el servidor real, y hacer que ejecutara un script de shell para cada conexión; en su caso, el script podría usar tee y nc para reenviar y registrar la conexión (creo que con algún truco de descriptor de archivo para obtener un tee en cada transmisión). La otra era usar socat, que efectivamente le permite escribir un servidor completamente operativo, con sockets de escucha y subprocesos de manejador, en bash; de nuevo, desearía que tee y netcat hicieran el registro y el proxy.
Si desea un servidor proxy adecuado, como dice @Spacedman, necesitaría interpretar la línea de solicitud, pero eso es bastante fácil: lea la primera línea, aplique cut -d ' ' -f 2
para obtener la URL, alguna cadena sed o shell operadores para sacar el dominio y el puerto, y continuar. Sin embargo, si sabes de antemano que todo el tráfico va a un punto final, puedes conectarlo.
Sería difícil de configurar, por lo que funcionó correctamente. Una solución mejor sería usar un proxy adecuado (por ejemplo, calamar) o simplemente oler el tráfico (wireshark, pastmon).
Acabo de tener la necesidad ayer. Puede encontrar la respuesta aquí (francés): http://www.linux-france.org/~mdecore/linux/doc/memo2/node168.html
mknod backpipe p
nc -l -p 80 < backpipe | tee -a in | nc localhost 8080 | tee -a out.html > backpipe
Esta escucha en el puerto 80 y redirigir en el puerto 8080. El tráfico entrante estará presente en el archivo in
, el tráfico de salida en la canalización con nombre out.html
es file.The necesario para que la conexión sea bidireccional.
nc no le permite especificar -l y -p al mismo tiempo. – ScaryAardvark
Correcto, por lo que está obligado a dar un nombre de host para especificar un puerto para la primera nc.Acabo de probar con el comando 'nc -l localhost 8080
- 1. Servidor proxy HTTP
- 2. Servidor HTTP Proxy en C#
- 3. Uso de netcat para enviar un paquete UDP sin enlace
- 4. svn sobre proxy HTTP
- 5. C# webclient y servidor proxy
- 6. PHP HTTP Proxy Server
- 7. nuevo problema de línea con netcat
- 8. ¿Puede Play Framework actuar como un servidor proxy o como un proxy inverso?
- 9. Enviar solicitud POST con netcat
- 10. Uso de la computadora portátil como segundo monitor de programación
- 11. Creación de scripts de una solicitud de encabezado HTTP con netcat
- 12. ¿Cuán robusto es nodejs como servidor http?
- 13. Proxy HTTP autenticado con Java
- 14. ¿Cómo crear un monitor/bloqueador simple C# http?
- 15. Servidor Apache como proxy para el problema de Jboss
- 16. HTTP Spec: cabeceras Autorización proxy y autorización
- 17. Uso de la versión BusyBox de netcat para escuchar el puerto tcp
- 18. monitor solicitud HTTP de un navegador no
- 19. Node-http-proxy dynamic routetable?
- 20. ¿Cómo escala el servidor HTTP como Google?
- 21. Servidor Proxy usando Indy
- 22. Webdriver y servidor proxy para firefox
- 23. Carga de archivos FTP con HTTP Proxy
- 24. Emacs detrás del proxy HTTP
- 25. Cómo usar un proxy HTTP en java
- 26. ¿Cómo utiliza un Proxy HTTP el protocolo HTTP? un Proxy RFC?
- 27. lighttpd como proxy inverso
- 28. Apache: proxy inverso y mensaje de estado de HTTP 302
- 29. IIS como proxy inverso
- 30. rtsp en http sobre un proxy
Gracias, el proxy HTTP fue engañoso, porque eso es más de lo que necesito. Solo quiero establecer estáticamente un conducto que envíe todo el tráfico TCP de un puerto a otro host y puerto, y que proporcione monitoreo. –
bien, tal vez nc -l -p 9999 localhost | logging_processor | nc -p 9998 localhost: solo asegúrese de que su programa logging_processor lo pase todo. – Spacedman