当前位置:首页 > 未分类

Debian 12 端口转发实现方法

一往无前1个月前 (01-19)未分类257

Debian 端口转发实现方法

  1. 安装 socat:

    sudo apt update
    sudo apt install socat
  2. 创建 systemd 服务实现永久生效:

    sudo nano /etc/systemd/system/port-forward.service

添加以下内容:

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

[Service]
ExecStart=/usr/bin/socat TCP-LISTEN:28066,fork,reuseaddr TCP:127.0.0.1:3306
Restart=always

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable port-forward.service
sudo systemctl start port-forward.service

Systemd 服务文件详解

[Unit] 部分

这部分定义了服务的元数据和依赖关系:

  • Description=Port Forwarding Service
    服务的描述文本,用于在 systemctl status 等命令中显示,帮助管理员识别服务用途。

  • After=network.target
    指定该服务在网络服务完全启动之后才启动。这对于端口转发服务至关重要,因为如果网络尚未准备好,端口监听将失败。

[Service] 部分

这部分定义了服务的实际行为:

  • ExecStart=/usr/bin/socat TCP-LISTEN:28066,fork,reuseaddr TCP:127.0.0.1:3306
    服务启动时执行的命令:

    • /usr/bin/socat:socat 程序的完整路径
    • TCP-LISTEN:28066:在本地监听 28066 端口
    • fork:为每个新连接创建一个新进程,允许多个连接同时处理
    • reuseaddr:允许重用本地地址,服务重启时避免”地址已在使用”错误
    • TCP:127.0.0.1:3306:将接收到的连接转发到本地的 3306 端口(通常是 MySQL 服务)
  • Restart=always
    定义服务异常终止时的重启策略。always 表示无论服务以何种方式退出(正常或异常),systemd 都会自动重启它,确保服务持续运行。

[Install] 部分

这部分定义了服务如何被启用:

  • WantedBy=multi-user.target
    指定服务属于哪个系统目标(target)。multi-user.target 是标准的多用户命令行模式。当您运行 sudo systemctl enable port-forward.service 命令时,systemd 会创建一个符号链接,使该服务在系统启动进入多用户模式时自动启动。

额外说明

这是一个基本配置。根据实际需求,您可能需要添加更多参数,例如:

[Service]
User=nobody  # 以特定用户身份运行,提高安全性
Group=nogroup
PermissionsStartOnly=true  # 仅在启动时应用权限
StandardOutput=journal  # 将输出发送到systemd日志
StandardError=journal

这种配置方式比一次性命令(如直接运行 socat)更可靠,因为它:

  1. 服务崩溃时自动重启
  2. 系统重启后自动生效
  3. 可以通过标准 systemd 命令(如 systemctl status port-forward)管理
  4. 集成到系统日志中,便于故障排查

通过 systemctl enable port-forward.service 启用后,该服务会随系统启动,持久化地提供端口转发功能。