Ubuntu 20.04 使用 socat 转发特定端口

  1. 安装socat
    复制代码
    • 1
    apt install socat
  2. 根据需求确定要转发的端口
    比如,我的需求是监听IPv6的某一TCP端口,并转发至局域网内某一特定主机,可以使用以下命令:
    复制代码
    • 1
    socat TCP6-LISTEN:xxxx,fork TCP:1.2.3.4:xxx
    UDP端口也类似:
    复制代码
    • 1
    socat UDP6-LISTEN:xxxx,fork UDP:1.2.3.4:xxx
    由于 UDP 是无连接的传输层协议,socat监听UDP端口的子进程创建后可能无法自动关闭,可以设定超时参数 -T<超时时间> 指定超时时间,当达到超时时间后无其余操作则会自动结束当前子进程。
    将以上命令放置在后台运行,即可转发端口。
  3. 使用 systemd 守护后台运行的转发进程
    默认情况下, socat 以 daemon 进程形式运行在前台,不方便管理,采用 systemd 进行管理:
    • 新建 service 文件,使用以下内容保存在 /lib/systemd/system/socat_forward.service:
    复制代码
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    [Unit] Description = Socat Daemon For Port Forward After = network-online.target [Service] Type = simple ExecStart = /usr/bin/socat -dd TCP-LISTEN:XXXX,fork TCP:1.2.3.4:XXXX Restart = on-failure TimeoutSec = 15 [Install] WantedBy = multi-user.target
    其中,使用 -dd 参数可以打印更多日志在 systemd 守护进程中。
    • 开启服务自启动:
      systemctl enable socat_forward.service
    • 运行服务:
      systemctl start socat_forward.service
      至此,端口转发的守护服务已开始运行。
posted @   wx2020  阅读(3142)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开