sockfwd 一个数据转发的小工具

简介: 一个在socket之间转发数据的小工具。

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

相关文章
|
运维 负载均衡 网络协议
linux网络管理(链路聚合、桥接网络、故障排查、常用工具)
网卡的链路聚合就是将多块网卡连接起来,当一块网卡损坏,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,同时也可以提高网络访问速度。
1224 0
linux网络管理(链路聚合、桥接网络、故障排查、常用工具)
|
网络协议 芯片
|
4月前
|
C++ 运维
开发与运维转发问题之完美转发在C++中实现如何解决
开发与运维转发问题之完美转发在C++中实现如何解决
45 7
|
12月前
|
缓存 网络协议
内网协议信息收集
内网协议信息收集
|
网络协议 安全 Unix
虚拟路由和转发 (VRF) 表上下文中的多点标签分发协议带内信令
本文档是 Internet 工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。它已接受公众审查,并已获互联网工程指导小组 (IESG) 批准出版。有关 Internet 标准的更多信息,请参见 RFC 5741 的第 2 节。
434 0
虚拟路由和转发 (VRF) 表上下文中的多点标签分发协议带内信令
|
缓存 安全 网络安全
详解通信数据转发程序:代理、网关、隧道
1.代理 代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器 持有资源实体的服务器被称为源服务器。从源服务器返回的响应经过代理服务器后再传给客户端 每次通过代理服务器转发请求或响应时,会追加写入Via首部信息🎶
211 2
详解通信数据转发程序:代理、网关、隧道
|
网络架构
计算机网络学习20:IP数据报的发送和转发过程
如果C要给F发送数据报,那么如何知道F是不是跟自己在同一个网络呢?
计算机网络学习20:IP数据报的发送和转发过程
|
存储 数据采集 监控
数据预处理﹣系统监控 web 界面﹣各链路流量转发数据来源|学习笔记
快速学习数据预处理﹣系统监控 web 界面﹣各链路流量转发数据来源
155 0
数据预处理﹣系统监控 web 界面﹣各链路流量转发数据来源|学习笔记
|
消息中间件 RocketMQ 开发者
转发数据到 ConsumerQueue 文件|学习笔记
快速学习转发数据到 ConsumerQueue 文件
转发数据到 ConsumerQueue 文件|学习笔记
|
消息中间件 RocketMQ 开发者
转发 IndexFile 文件|学习笔记
快速学习转发 IndexFile 文件
转发 IndexFile 文件|学习笔记