问题
今天遇到一个问题,需要再内网环境中做一个端口转发,而且目前防火墙是被关闭的,所以iptables 使用不了。
这里我使用的是 “socat”工具。
socat是一个功能强大的网络工具,可以用于在不同计算机之间建立各种类型的数据连接。它支持多种协议和数据格式,并提供了许多强大的特性,如加密、认证、流量转发、连接重定向等。
socat在Linux系统中被广泛使用,可用于各种场景,如端口转发、远程调试、数据备份等。它的配置简单、易用,并且拥有丰富的文档和社区支持,在网络工程师和系统管理员中得到了广泛的应用。
例如,socat可以将本地TCP端口与远程主机上的另一个TCP端口进行绑定,实现端口转发;它还可以将数据从一个设备复制到另一个设备,以达到数据备份的目的;它还可以用于流量分析和嗅探等方面。总之,socat是一款功能强大、灵活多变的网络工具,对于处理网络数据传输等问题非常有用。
环境
- Centos系统一台,无外网
- Windows 系统一台
需求
- 通过Centos上端口远程登录到Windows
安装Socat
查看系统版本
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
下载socat
可以通过这个网站进行搜索下载: rpm包网站
这里我下载的版本(socat-1.7.3.2-2.el7.x86_64.rpm)
上传到需要安装的机器上
执行一下命令安装
rpm -ivh --nosignature socat-1.7.3.2-2.el7.x86_64.rpm
- –nosignature: 跳过gpg秘钥安装
安装过程
配置端口转发
注意: 这里我是在新的一台机器上演示操作,这台机器上17005端口有一个postgres数据库,现在需求是将本机的17006转发到17005上作为模拟。
执行命令后将会后台运行,通过ps -ef | grep socat查看
nohup socat TCP-LISTEN:17006,fork,reuseaddr TCP:127.0.0.1:17005 > nohup.out 2>&1 &
验证效果
配置为开机启动
要将socat的配置作为系统服务并开机启动,可以使用systemd服务管理器来完成
- 创建socat服务文件
在/etc/systemd/system目录下创建一个新的socat服务文件
vim /etc/systemd/system/socat.service
输入内容为
[Unit]
Description=Socat TCP port forwarder
After=network.target
[Service]
ExecStart=/usr/bin/socat TCP-LISTEN:17006,fork,reuseaddr TCP:127.0.0.1:17005
User=root
Restart=always
[Install]
WantedBy=multi-user.target
- 重新加载systemd配置
systemctl daemon-reload
- 设置开机启动
systemctl enable socat.service
systemctl start socat.service
- 查看状态
systemctl status socat.service
5. 最后再次验证
评论区