使用socat做端口转发

最近买的云上mongo数据库但是数据库不支持外网访问,准备做iptables转发但是一直不成功,腾讯云官方给予的解释是受服务器内启动的docker影响 做iptables转发会冲突,所以只能另想办法,我发现使用socat做转发也很好用,所以记录一下开源给大家。

socat介绍:

socat 是一个功能强大的多功能网络工具,它可以在两个数据流之间建立连接,同时可以转换它们的特性。它的名字源自于 "SOcket CAT",意味着它可以像 cat 命令一样,但用于网络连接。

以下是 socat 的一些主要特点和功能:

  1. 多协议支持: socat 支持多种不同的协议,包括 TCP、UDP、IPv4、IPv6、UNIX 套接字等。

  2. 连接两个数据流: socat 可以连接两个数据流,这两个数据流可以是文件、套接字、管道等。

  3. 端口转发: 你可以使用 socat 在不同的主机之间进行端口转发,使得网络服务可以在不同主机之间进行通信。

  4. 代理和中继: 你可以使用 socat 作为代理或中继,将数据流从一个位置转发到另一个位置,这在网络调试和故障排除时非常有用。

  5. 加密和认证: socat 支持 SSL 和 TLS 加密,以及基本的认证功能,可以确保数据在传输过程中的安全性。

  6. 虚拟串口: 在某些情况下,socat 还可以创建虚拟串口,模拟物理串口的功能,用于串口通信和调试。

总的来说,socat 是一个非常灵活和强大的工具,可以在网络和系统管理、开发和调试等方面发挥重要作用。

tcp端口转发:

注:我在192.168.1.10这台服务器执行下面的命令让端口转发到内网IP:10.106.0.20的6379端口上,执行完下面的命令就可以在访问192.168.1.10:20001端口就可以转发到内网IP的6379端口上,也就可以使用外网访问我们的内网数据库。

socat TCP4-LISTEN:20001,fork TCP4:10.106.0.20:6379  &

执行完命令我们可以使用netstat -lntp 查看本地是否启动一个为20001的端口

然后我们使用命令:telnet 10.106.0.20:6379 27017 测试能否连通服务器如下图表示成功

注:如果是云上服务器记得开启服务器安全组20001端口,和后端服务器允许服务器192.168.1.10访问6379端口。

#TCP4-LISTEN表示监听一个TCP4端口(IPv4),fork表示每个连接都创建一个新进程处理数据流,TCP4:10.106.0.20:6379表示将数据转发到目标主机B的6379端口。这样,所有发送到主机A的20001端口的数据流都会被转发到主机B上的6379端口。会在A主机监听20001端口,所有访问A:20001端口的,会返回B:6379的资源。

UDP端口转发:

除了TCP端口转发,socat还支持UDP端口转发。假设有一台主机A,它的IP地址为192.168.100.10,上面运行着一个DNS服务器,监听在53端口。现在需要将53端口的UDP数据流转发到另一台主机B上的5353端口,可以使用以下命令:

socat UDP4-LISTEN:53,fork UDP4:192.168.100.20:5353  &

其中,UDP4-LISTEN表示监听一个UDP4端口(IPv4),UDP4:192.168.100.20:5353表示将数据转发到目标主机B的5353端口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/615805.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D 生成重建009-DreamGaussian使用gaussian splatting在两分钟内生成3d

3D 生成重建009-DreamGaussian使用gaussian splatting在两分钟内生成3d 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 DreamGaussian是第一个使用gaussian splatting方法进行3d生成的工作。论文最先使用gaussian splatting替代原来用nerf表示3d。整体架构依然保留了原来的…

C++调用有依赖库的python函数(VS2017+WIN10+Anaconda虚拟环境)

情况1.在写的函数中依赖了能够pip的库,例如numpy库、torch库,见下面的函数: import numpy as np import torch def add1(a, b):# 确保a和b都是NumPy数组a_array np.array(a) if not isinstance(a, np.ndarray) else ab_array np.array(b) if not isins…

云贝教育 |【直播课】5月19日Oracle 19c OCM认证大师课 即将上课了!(附课件预览)

贝教育独家认证课OCM全网价格最低,性价比最高!!! Oracle 19c OCM认证大师培训 - 课程体系 - 云贝教育 (yunbee.net) OCM部分课件预览 Oracle Database 19c Certified Master Exam (OCM) 认证大师 25 天 / 150课时 什么是Oracle 1…

利用IP地址查询解决被“薅羊毛”的方法

在互联网时代,随着各种网络诈骗手段的不断更新和演变,“薅羊毛”成为了一种常见的网络犯罪行为。其中,利用查询IP地址进行欺诈活动已经成为一种普遍的手段。当个人或组织的IP地址被不法分子查询后,可能会面临虚假注册、盗取个人信…

LLM一些适合小白的入门项目和视频

AIX 大模型专区学习(史上最丰富🥳) https://github.com/stay-leave/enhance_llm 图谱大哥五一写得。 【对于卷积神经网络,硕士博士不需要搞明白原理,只要会应用是这样吗?-pytorch/深度学习/神经网络】 htt…

系统分析师论文——论软件需求分析方法和工具的选用

现已临近2024年软考,周围一些报名参加系统分析师考试的“小伙伴”还未准备论文,我分享早年写的一些内容(包括参加继续教育准备的论文),仅供大家结合最新考纲要求酌情参考,希望予人玫瑰,手有余香…

政安晨:【Keras机器学习示例演绎】(四十三)—— 使用 KerasNLP 实现英语到西班牙语的翻译

目录 简介 设置 下载数据 解析数据 数据标记化 格式化数据集 建立模型 训练我们的模型 解码测试句子(定性分析) 解码测试句子(定性分析) 评估我们的模型(定量分析) 10 个轮次后,得分…

声明变量的六种方法

ES6 声明变量的六种方法 varfunctionletconstclassimport 顶层对象的属性 1. ES6 声明变量的六种方法 ES5 只有两种声明变量的方法: var 命令和 function 命令。 ES6 除了添加 let 和 const 命令,还有另外两种声明变量的方法: import 命令和…

matlab使用教程(69)—创建包含多个 x 轴和 y 轴的图

此示例说明如何创建这样一张图,通过坐标区底部和左侧的轴放置第一个绘图,并通过坐标区顶部和右侧的轴放置第二个绘图。 使用 line 函数绘制一个红色线条。将 x 轴和 y 轴的轴线颜色设置为红色。 注意:从 R2014b 开始,您可以使用圆…

python脚本-整理vsphere虚拟机资源/批量开关机虚拟主机

1.整理vsphere中的虚拟机资源 将每一台虚拟主机所属esxi主机,虚拟机电源状态,虚拟主机ip,虚拟机的操作系统,虚拟所属文件夹,虚拟机的备注一一对应,存放到xlsx表格。 其中vsphere的目录为: fro…

《A data independent approach to generate adversarial patches》论文分享(侵删)

原文链接:A data independent approach to generate adversarial patches | Machine Vision and Applications author{Xingyu Zhou and Zhisong Pan and Yexin Duan and Jin Zhang and Shuaihui Wang}, 一、介绍 在图像识别领域,与数字域中的攻击相比…

【CTF MISC】XCTF GFSJ0513 pdf Writeup(PDF隐写)

pdf 菜猫给了菜狗一张图,说图下面什么都没有 解法 打开 pdf,只看见一张图片。 用浏览器搜索 flag,发现图片中间藏了一行字。 复制出来,得到 flag。 Flag flag{security_through_obscurity}声明 本博客上发布的所有关于网络攻…

物联网到底物联了个啥?——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网,这个听起来似乎颇具科技感和未来感的词汇,其实早已悄然渗透到我们生活的方方面面。从智能家居到智慧城市,从工业自动化到医疗健康,物联网技术正在以其独特的魅力改变着我们的生活方式…

【深耕 Python】Quantum Computing 量子计算机(5)量子物理概念(二)

写在前面 往期量子计算机博客: 【深耕 Python】Quantum Computing 量子计算机(1)图像绘制基础 【深耕 Python】Quantum Computing 量子计算机(2)绘制电子运动平面波 【深耕 Python】Quantum Computing 量子计算机&…

QT学习(2)——qt的菜单和工具栏

目录 引出qt的菜单栏工具栏菜单栏,工具栏状态栏,浮动窗口 属性设计ui编辑控件添加图片 总结 引出 QT学习(2)——qt的菜单和工具栏 qt的菜单栏工具栏 菜单栏,工具栏 1QMainWindow 1.1菜单栏最多有一个 1.1.1 QMenuBar…

开发利器 - docker 安装运行 mysql

本文选择安装的mysql版本为5.7 ,安装环境 mac 1、查看镜像是否存在 docker search mysql:5.7 2、拉取镜像 docker pull mysql:5.7 3、运行镜像 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot1234 -d mysql:5.7 --name:指定容器…

深入理解Linux下的网络监控工具:iftop

目录标题 1. 什么是iftop?2. 安装iftop在Debian/Ubuntu上安装在CentOS/RHEL上安装在其他Linux发行版上 3. 使用iftop监控网络流量命令行选项界面说明交互命令 4. 相关参数及说明 在维护和监控Linux服务器时,了解网络流量的细节非常重要。网络监控可以帮助我们诊断延…

在 Navicat 17 创建一个数据字典

即将于 5 月 13 日发布的 Navicat 17(英文版)添加了许多令人兴奋的新功能。其中之一就是数据字典工具。它使用一系列 GUI 指导你完成创建专业质量文档的过程,该文档为跨多个服务器平台的数据库中的每个数据元素提供描述。在今天的博客中&…

Python | Leetcode Python题解之第83题删除排序链表中的重复元素

题目: 题解: class Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not head:return headcur headwhile cur.next:if cur.val cur.next.val:cur.next cur.next.nextelse:cur cur.nextreturn head

【页面】3D六边形

<!DOCTYPE html> <html> <head><title>3D正六边形</title><style>body {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.container {perspective: 1000px;}.hexagon {width: 200px;height: 200px;…