sockfwd 一个数据转发的小工具

【sockfwd 一个数据转发的小工具】最近在看containerd的代码,上手试的时候才发现它监听的是unix socket,没法从外部访问containerd。
而我要验证的是从远端能不能访问containerd、管理containerd的容器,所以需要一个从远端访问unix socket的工具。
网上搜了一圈,没有现成的实现,就自己写了 sockfwd。
用法

Usage: sockfwd [flags]Flags: -d, --destination string目的地址,即要转发到的地址 -s, --source string源地址,即接收请求的地址 -q, --quiet静默模式

例子 将本地的containerd实例暴露到网络上:
./sockfwd -s tcp://127.0.0.1:8090 -d unix:///var/run/containerd.sock
将本地的127.0.0.1:8080端口暴露到0.0.0.0:8090端口上:
./sockfwd -s tcp://127.0.0.1:8090 -d unix://127.0.0.1:8090
将本地的服务暴露到网络上,需要格外注意是否有安全隐患!
其他碎碎念 最近在写golang,发现如果仅仅是处理数据面的话,golang提供的goroute再加channel就能够很优雅地处理数据转发,比如这篇文章写的sockfwd。
但是如果涉及管控面,比如复杂的状态管理,信息跨线程/goroute同步,那么channel的抽象能力还是不够的,需要写很多额外代码。
后续计划 可以加上支持tls认证来更加安全地转发数据。

    推荐阅读