Files
ProjectAGiPrompt/14-2026年2月11日-XAwindows转发/2026年2月11日-代理方案.md
2026-03-18 16:16:47 +08:00

6.6 KiB
Raw Blame History

完全正确既然主机B可以直接访问主机C同局域网那么只需要在主机B上配置端口转发即可无需在主机A和主机C上安装任何软件。 github

简化方案仅配置主机B

场景重新分析

主机B作为中转枢纽提供三个端口转发服务

  1. 内网端口 → 主机A:39000供主机C使用
  2. 内网端口 → 主机A:1999供主机C使用
  3. 公网端口 → 主机C:1998供主机A使用

主机B完整配置Windows Server

1. 下载Gost

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

2. 创建配置文件

C:\gost\ 目录创建 gost.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. 测试配置

# 在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服务

# 下载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. 启动服务

# 启动服务
nssm start GostService

# 查看服务状态
nssm status GostService

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

6. 服务管理命令

# 启动服务
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

# 允许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上

# 连接到主机B的内网IP
telnet 192.168.10.1 39000

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

需求2主机C访问主机A的1999端口HTTP

在主机C上

# 浏览器访问
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上

# 访问主机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上验证服务是否运行

# 查看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上进行本地测试

# 测试到主机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

配置优化建议

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

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

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

故障排查

如果遇到问题:

  1. 检查Gost服务状态
nssm status GostService
  1. 查看Gost日志(如果配置了日志输出):
type C:\gost\logs\gost.log
type C:\gost\logs\gost-error.log
  1. 手动运行查看错误
cd C:\gost
.\gost.exe -C gost.yaml -L debug
  1. 检查端口占用冲突
netstat -ano | findstr "39000"
netstat -ano | findstr "1999"
netstat -ano | findstr "11998"

这个简化方案只需要在主机B上操作维护更简单性能也更好 nephen