当前位置:首页 > 未分类

在Debian 12上使用socat进行端口转发

一往无前1个月前 (01-17)未分类268

在Debian 12上使用socat进行端口转发

socat是一个强大的网络工具,可以建立两个双向数据流通道,常用于端口转发、协议转换等场景。下面是在Debian 12上配置socat进行端口转发的详细指南。

1. 安装socat

sudo apt update
sudo apt install socat -y

2. 基本端口转发示例

2.1 本地端口转发(TCP)

将本地8080端口的流量转发到本地80端口:

socat TCP-LISTEN:8080,fork TCP:127.0.0.1:80

2.2 转发到远程服务器

将本地8080端口的流量转发到远程服务器192.168.1.100的80端口:

socat TCP-LISTEN:8080,fork TCP:192.168.1.100:80

2.3 远程端口映射到本地

将远程服务器的3306端口映射到本地3307端口:

socat TCP-LISTEN:3307,fork TCP:remote-server-ip:3306

3. 常用参数说明

  • fork:使socat保持运行并处理多个连接
  • reuseaddr:允许重用本地地址
  • bind=IP:指定绑定的IP地址
  • tcp4/tcp6:指定使用IPv4或IPv6
  • -d -d:增加详细输出级别(调试用)

4. 后台运行socat

4.1 简单后台运行

nohup socat TCP-LISTEN:8080,fork,reuseaddr TCP:192.168.1.100:80 >/dev/null 2>&1 &

4.2 创建systemd服务

创建服务文件 /etc/systemd/system/socat-forward.service

[Unit]
Description=Socat Port Forwarding
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/socat TCP-LISTEN:8080,fork,reuseaddr TCP:192.168.1.100:80
Restart=always

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable socat-forward
sudo systemctl start socat-forward

5. 其他有用示例

5.1 UDP端口转发

socat UDP-LISTEN:53,fork UDP:8.8.8.8:53

5.2 SSL/TLS端口转发

socat TCP-LISTEN:443,fork,reuseaddr OPENSSL:example.com:443,verify=0

5.3 转发到多个目标(负载均衡)

socat TCP-LISTEN:8080,fork TCP:server1:80,sndbuflen=4096 || TCP:server2:80,sndbuflen=4096

6. 安全注意事项

  1. 仅转发必要的端口
  2. 使用防火墙限制访问源IP:
    sudo ufw allow from 192.168.1.0/24 to any port 8080
  3. 避免以root用户运行socat(可以使用非特权端口>1024)
  4. 定期检查socat进程和日志

7. 验证端口转发

# 检查监听端口
sudo netstat -tuln | grep 8080

# 测试连接
telnet localhost 8080
# 或
nc -zv localhost 8080

以上就是在Debian 12上使用socat进行端口转发的基本方法。根据具体需求,您可以调整参数和配置来满足不同的网络转发场景。