今天来教大家使用socat工具进行端口转发
建立连接:socat 可以用于建立各种类型的网络连接,包括TCP、UDP、UNIX域套接字等。这对于测试网络服务或连接到远程服务器非常有用。
转发数据:您可以使用 socat 将数据从一个端口或套接字传输到另一个端口或套接字。这对于端口重定向或端口转发非常有用。
代理服务器:socat 可以用作代理服务器,充当数据中转站,将来自客户端的数据传递给目标服务器,并将响应返回给客户端。这对于创建自定义代理服务器非常有用。
串口通信:socat 可以用于串口通信,允许您通过串口连接到设备,进行数据传输和控制。
加密和解密:socat 可以与加密套接字一起使用,以确保数据在传输过程中得到加密和解密。这对于安全通信非常有用。
调试网络应用程序:socat 可以用于调试网络应用程序,例如通过查看数据流量或捕获数据包来诊断问题。
虚拟端口:socat 可以用于创建虚拟端口,使应用程序可以通过虚拟端口进行通信,而不是物理串口或网络套接字。
文件操作:除了网络通信,socat 还可以用于文件操作,如复制、合并和转换文件。
总之,socat 是一个功能强大的工具,可以用于各种网络任务,从简单的端口转发到复杂的网络调试和代理服务器设置。您可以根据需要使用 socat 来满足各种网络通信需求。请注意,socat 的使用需要一定的网络知识和谨慎,因为错误的配置可能导致安全问题或网络故障。
以上介绍来自ChatGPT
安装:
Ubuntu:sudo apt-get install socat -y
Centos:sudo yum install socat -y
临时转发(重启或退出终端就失效):
socat TCP-LISTEN:<本服务器的端口>,fork TCP:<目标服务器的IP>:<目标服务器的端口>
例如:
socat TCP-LISTEN:8080,fork TCP:8.8.8.8:443
临时转发(后台挂起但重启就失效)
nohup socat TCP-LISTEN:<本服务器的端口>,fork TCP:<目标服务器的IP>:<目标服务器的端口> &
例如:
nohup socat TCP-LISTEN:8080,fork TCP:8.8.8.8:443 &
永久转发(重启或退出终端不失效):
用systemctl保活
sudo vim /etc/systemd/system/socat.service
单端口转发示例:
[Unit]
Description=Socat Port Forwarding Service
[Service]
ExecStart=/usr/bin/socat TCP-LISTEN:8080,fork TCP:8.8.8.8:443
Restart=always
User=root
[Install]
WantedBy=multi-user.target
多端口转发示例:
创建一个 socat 脚本文件,例如 socat-script.sh,并添加多个 socat 命令,每个命令负责一个端口转发规则。例如:
sudo vim /usr/local/bin/socat-script.sh
socat-script.sh内容如下:
#!/bin/bash
# 切换到脚本所在的目录
cd /usr/local/bin/
# 启动 socat 以前台方式
socat TCP-LISTEN:8080,fork TCP:1.2.3.4:443 &
socat TCP-LISTEN:8081,fork TCP:1.2.3.4:8443 &
# 无限循环以防止脚本退出
while true; do
sleep 10
done
然后将 socat-script.sh 脚本文件保存在一个合适的位置,例如 /usr/local/bin 目录下,并确保它具有可执行权限:
sudo chmod +x /usr/local/bin/socat-script.sh
最后在 socat.service 单元文件的 ExecStart 行中执行该脚本,如下所示:
sudo vim /etc/systemd/system/socat.service
socat.service内容如下:
[Unit]
Description=Socat Port Forwarding Service
[Service]
ExecStart=/usr/local/bin/socat-script.sh
Restart=always
User=root
Type=simple
[Install]
WantedBy=multi-user.target
重新加载 systemd 守护进程以读取更新后的服务单元文件:
sudo systemctl daemon-reload
启用并启动 socat 服务
sudo systemctl enable socat.service
sudo systemctl start socat.service
检查socat服务的状态
sudo systemctl status socat.service
sudo systemctl stop socat.service # 停止服务
sudo systemctl restart socat.service # 重新启动服务
PS:切记!端口不可用重复的,否则无法启动服务的!
评论 (0)