完全正确！既然主机B可以直接访问主机C（同局域网），那么**只需要在主机B上配置端口转发**即可，无需在主机A和主机C上安装任何软件。 [github](https://github.com/ginuerzh/gost/issues/1027)

## 简化方案：仅配置主机B

### 场景重新分析

主机B作为中转枢纽，提供三个端口转发服务：
1. 内网端口 → 主机A:39000（供主机C使用）
2. 内网端口 → 主机A:1999（供主机C使用）
3. 公网端口 → 主机C:1998（供主机A使用）

### 主机B完整配置（Windows Server）

#### 1. 下载Gost

```bash
# 从 https://github.com/go-gost/gost/releases 下载Windows版本
# 解压到 C:\gost\
```

#### 2. 创建配置文件

在 `C:\gost\` 目录创建 `gost.yaml`：

```yaml
services:
  # 服务1: 主机C访问主机A的39000端口（TCP）
  # 主机C连接 192.168.10.1:39000
  - name: forward-c-to-a-39000
    addr: 192.168.10.1:39000
    handler:
      type: tcp
    listener:
      type: tcp
    forwarder:
      nodes:
        - name: host-a-39000
          addr: 144.7.97.70:39000

  # 服务2: 主机C访问主机A的1999端口（HTTP）
  # 主机C连接 192.168.10.1:1999 或 http://192.168.10.1:1999
  - name: forward-c-to-a-1999
    addr: 192.168.10.1:1999
    handler:
      type: tcp
    listener:
      type: tcp
    forwarder:
      nodes:
        - name: host-a-1999
          addr: 144.7.97.70:1999

  # 服务3: 主机A访问主机C的1998端口（HTTP）
  # 主机A连接 144.7.8.50:11998 或 http://144.7.8.50:11998
  - name: forward-a-to-c-1998
    addr: 144.7.8.50:11998
    handler:
      type: tcp
    listener:
      type: tcp
    forwarder:
      nodes:
        - name: host-c-1998
          addr: 192.168.10.2:1998
```

#### 3. 测试配置

```bash
# 在PowerShell或CMD中测试运行
cd C:\gost
.\gost.exe -C gost.yaml

# 观察输出，确认没有错误
# 看到类似以下输出表示成功：
# 2026/02/11 11:26:00 forward-c-to-a-39000: listening on 192.168.10.1:39000
# 2026/02/11 11:26:00 forward-c-to-a-1999: listening on 192.168.10.1:1999
# 2026/02/11 11:26:00 forward-a-to-c-1998: listening on 144.7.8.50:11998
```

如果测试正常，按 `Ctrl+C` 停止，继续下一步。

#### 4. 使用NSSM注册为Windows服务

```bash
# 下载NSSM: http://www.nssm.cc/download
# 解压到 C:\nssm\

# 以管理员身份打开CMD或PowerShell
cd C:\nssm\win64

# 安装服务
nssm.exe install GostService

# 在弹出的NSSM窗口中配置：
# Application标签页：
#   Path: C:\gost\gost.exe
#   Startup directory: C:\gost
#   Arguments: -C gost.yaml
#
# Details标签页：
#   Display name: Gost Port Forwarding Service
#   Description: Gost端口转发服务
#
# 点击 Install service
```

#### 5. 启动服务

```bash
# 启动服务
nssm start GostService

# 查看服务状态
nssm status GostService

# 如果需要，可以查看服务是否在运行
sc query GostService
```

#### 6. 服务管理命令

```bash
# 启动服务
nssm start GostService

# 停止服务
nssm stop GostService

# 重启服务（修改配置后使用）
nssm restart GostService

# 查看服务状态
nssm status GostService

# 编辑服务配置
nssm edit GostService

# 查看服务日志（在服务属性中可配置日志输出路径）
nssm edit GostService
# 在I/O标签页可以设置：
# Output (stdout): C:\gost\logs\gost.log
# Error (stderr): C:\gost\logs\gost-error.log

# 删除服务（如果需要重新配置）
nssm stop GostService
nssm remove GostService confirm
```

### 防火墙配置

在主机B的Windows防火墙中添加入站规则：

```powershell
# 以管理员身份运行PowerShell

# 允许39000端口（内网访问）
New-NetFirewallRule -DisplayName "Gost-39000" -Direction Inbound -LocalPort 39000 -Protocol TCP -Action Allow

# 允许1999端口（内网访问）
New-NetFirewallRule -DisplayName "Gost-1999" -Direction Inbound -LocalPort 1999 -Protocol TCP -Action Allow

# 允许11998端口（公网访问）
New-NetFirewallRule -DisplayName "Gost-11998" -Direction Inbound -LocalPort 11998 -Protocol TCP -Action Allow
```

或者通过图形界面：
1. 打开 `Windows Defender 防火墙` → `高级设置`
2. 点击 `入站规则` → `新建规则`
3. 选择 `端口` → `TCP` → 输入端口号 `39000,1999,11998`
4. 选择 `允许连接` → 完成

## 使用方式

### 需求1：主机C访问主机A的39000端口（TCP）

在主机C上：
```bash
# 连接到主机B的内网IP
telnet 192.168.10.1 39000

# 或使用你的应用程序连接
# 目标地址: 192.168.10.1:39000
```

### 需求2：主机C访问主机A的1999端口（HTTP）

在主机C上：
```bash
# 浏览器访问
http://192.168.10.1:1999

# 或使用curl
curl http://192.168.10.1:1999

# 或使用你的应用程序
# 目标地址: 192.168.10.1:1999
```

### 需求3：主机A访问主机C的1998端口（HTTP）

在主机A上：
```bash
# 访问主机B的公网IP
curl http://144.7.8.50:11998

# 或使用浏览器
http://144.7.8.50:11998

# 实际流量路径：主机A → 144.7.8.50:11998 → 192.168.10.2:1998
```

## 验证配置

### 在主机B上验证服务是否运行

```powershell
# 查看Gost进程
tasklist | findstr gost

# 查看监听端口
netstat -ano | findstr "39000"
netstat -ano | findstr "1999"
netstat -ano | findstr "11998"

# 应该能看到类似输出：
# TCP    192.168.10.1:39000     0.0.0.0:0              LISTENING       [PID]
# TCP    192.168.10.1:1999      0.0.0.0:0              LISTENING       [PID]
# TCP    144.7.8.50:11998       0.0.0.0:0              LISTENING       [PID]
```

### 测试连通性

在主机B上进行本地测试：

```powershell
# 测试到主机A的连接（需要确保主机A的服务在运行）
Test-NetConnection -ComputerName 144.7.97.70 -Port 39000
Test-NetConnection -ComputerName 144.7.97.70 -Port 1999

# 测试到主机C的连接（需要确保主机C的1998端口服务在运行）
Test-NetConnection -ComputerName 192.168.10.2 -Port 1998
```

## 配置优化建议

如果需要添加日志功能，可以修改配置文件：

```yaml
log:
  level: info
  format: json
  output: C:\gost\logs\gost.log

services:
  # ... 其他配置保持不变
```

## 故障排查

如果遇到问题：

1. **检查Gost服务状态**：
```bash
nssm status GostService
```

2. **查看Gost日志**（如果配置了日志输出）：
```bash
type C:\gost\logs\gost.log
type C:\gost\logs\gost-error.log
```

3. **手动运行查看错误**：
```bash
cd C:\gost
.\gost.exe -C gost.yaml -L debug
```

4. **检查端口占用冲突**：
```powershell
netstat -ano | findstr "39000"
netstat -ano | findstr "1999"
netstat -ano | findstr "11998"
```

这个简化方案只需要在主机B上操作，维护更简单，性能也更好！ [nephen](https://www.nephen.cn/posts/4669df2a/)