最近在看 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 认证来更加平安地转发数据。