【问题标题】:Using netcat (nc) as an HTTP proxy server and monitor使用 netcat (nc) 作为 HTTP 代理服务器和监视器
【发布时间】:2011-05-02 12:26:15
【问题描述】:

是否可以使用 Unix netcat (nc) 程序来创建 TCP 代理服务器并进行监控?我希望所有 TCP 流量都通过管道传递,并发送到标准输出进行监控。请注意,这将用于监控硬件设备和 HTTP 服务器之间的 HTTP 流量。

【问题讨论】:

    标签: linux http bash unix tcp


    【解决方案1】:

    昨天刚有需要。你可以在这里找到答案(法语):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
    

    这在端口 80 上侦听并在端口 8080 上重定向。传入流量将出现在 in 文件中,传出流量将出现在 out.html 文件中。命名管道是双向连接所必需的。

    【讨论】:

    • nc 不允许您同时指定 -l 和 -p。
    • 对,所以你必须给一个主机名,以便为第一个 nc 指定一个端口。我刚刚使用命令nc -l localhost 8080 &lt; backpipe | tee -a in | nc stackoverflow.com 80 | tee -a out.html &gt; backpipe 进行了测试,然后在localhost:8080 打开一个选项卡工作正常,只是stackexchange 的虚拟主机处理部分感到困惑并且不知道该怎么做。
    【解决方案2】:

    不是 netcat 本身,因为它必须解释 HTTP 请求并传递它。例如,通过代理的 HTTP 请求以:

    GET http://www.example.org/HTTP/1.1

    然后你的代理必须去,'好的,我必须连接到 example.org 和 GET /'。

    现在这可以通过将 nc 输出通过管道传输到解析 HTTP 请求的脚本中来完成,然后调用“wget”来获取页面,然后通过 netcat 将其返回...哦,哎呀,为什么?

    Apache 或 squid 可能可以完成这项工作。

    【讨论】:

    • 谢谢,HTTP 代理具有误导性,因为这超出了我的需要。我只想静态建立一个管道,将所有 TCP 流量从一个端口发送到另一个主机和端口,并提供监控。
    • 好吧,也许 nc -l -p 9999 localhost |记录处理器 | nc -p 9998 localhost - 只需确保您的 logging_processor 程序通过所有内容。
    【解决方案3】:

    当然,您可以使用它或 faucet|hose 对,但是当您可以让一个最小的 Apache 实例做完全相同的事情并提供更完整的分析集时,为什么要这样做?

    【讨论】:

      【解决方案4】:

      是的,应该可以的。

      当我 [询问关于在新闻组中使用 bash1 编写 Web 服务器的问题时,我得到了两个不错的想法。一种是使用 xinetd 作为实际服务器,并让它为每个连接运行一个 shell 脚本;在您的情况下,脚本然后可以使用 tee 和 nc 来转发和记录连接(我认为使用一些文件描述符技巧来获取每个流的 tee)。另一种是使用 socat,它可以有效地让您在 bash 中编写一个完全可操作的服务器,带有监听套接字和处理程序子进程;同样,您希望 tee 和 netcat 进行日志记录和代理。

      如果你想要一个合适的代理服务器,正如@Spacedman 所说,你需要解释请求行,但这很容易 - 阅读第一行,应用 cut -d ' ' -f 2 获取 URL,一些 sed 或 shell字符串操作符拉出域和端口,然后继续。但是,如果您事先知道所有流量都流向一个端点,那么您可以硬连线它。

      【讨论】:

        【解决方案5】:

        设置起来会很棘手,因此它可以正常工作。更好的解决方案是使用适当的代理(例如 squid)或只是嗅探流量(wireshark、pastmon)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-02
          • 1970-01-01
          • 2010-10-29
          • 2010-12-16
          • 1970-01-01
          • 1970-01-01
          • 2014-09-24
          相关资源
          最近更新 更多