socat - Linux/Unix TCP 端口转发

    socat 功能跟 一样,但更安全(支持 chroot ),兼容多种协议,支持操作 文件 ( file )、 管道 ( pipe )、 设备 ( device )、TCP 套接字、 Unix 套接字、 SOCKS 客户端、 CONNECT 代理以及 SSL 等等。

    注解

    本文译自:socat: Linux / UNIX TCP Port Forwarder

    • TCP端口转发 ( port forwarding );
    • 攻击弱防火墙(安全测试);
    • Unix 套接字的 shell 操作接口;
    • IPv6 转接;
    • 安全测试和研究;

    安装

    Debian/Ubuntu 下,只需执行 apt 命令:

    以下示例命令可能在你的电脑上 开端口 或者通过 套接字 连接其他互联网用户。使用这个工具必须有 TCP/IP 以及 Unix 网络方面的知识。

    80 端口转发到 202.54.1.5

    TCP-LISTEN:80 表示监听本地 80 端口; fork 表示创建子进程处理新连接;TCP:202.54.1.5:80 表示将新连接转发到 202.54.1.5:80

    经过以上命令,所有到 80 端口的 TCP 连接将被转发到 202.54.1.5 ,与 netcat 一样。

    连接SSH服务器

    Unix 套接字是非常常见的本地通讯方式,但是能够操作这类套接字的工具命令不多,socat 是其中一个。下面这个例子,通过 HAProxyUnix 套接字,获取其运行信息,包含 PID 、启动时间等:

    高级端口转发

    这个例子在 accept()系统调用fork 子进程进行处理,因此可同时处理多个并发连接。安全性方面也有所提高: forksunobody 用户,避免权限泄露;只允许来自 10.0.0.0/8 网段的连接。由于设置了 reuseaddr ,就算子进程套接字还没有完全关闭,主进程退出即可重启。由于指定 -lmlocal2 选项, accept 循环前日志将输出到 stderr 。后续的日志以 local2 为标识转发到 syslog

    订阅更新,获取更多学习资料,请关注我们的 :

    小菜学编程

    参考文献