关于golang: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认证来更加平安地转发数据。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理