windows 跳板机

  • Post author:
  • Post category:其他


前置问题:

A 内网服务器 (无法访问外网,可以访问B,无法访问C)

B 外网服务器   (可以访问外网,无法访问A,可以访问C)

C 第三方mysql数据库(外网)

需求:

A 连接 C

跳板机一般用于异构网络间的中转站,比如对方在防火墙上只给你开放了一台服务器的权限,你无法访问对方局域网的其它主机,但你能访问的这台服务器则有权限访问其它主机。那么这台服务器就可以作为对方网络的跳板机,有时又被称为前置机。

Windows 系统自带的 IP Helper 服务具有端口转发的功能,这个功能可以用来作为跳板,通过跳板机来访问其它主机的服务。

在 cmd 中运行 services.msc 检查 IP Helper 服务是否启动,Windows 的端口转发是由该服务提供的。在 “IP Helper” 服务的属性中可以查看服务描述:

“ IP Helper 服务:使用 IPv6 转换技术(6to4、ISATAP、端口代理和 Teredo)和 IP-HTTPS 提供隧道连接。如果停止该服务,则计算机将不具备这些技术提供的增强连接优势。”

当停用此服务时,端口转发将不生效。可以使用 netstat -an -p tcp 检查本地监听状态。


netstat -an -p tcp| findstr LISTENING

命令行启动 ‘IP Helper’服务:

C:\> net start 'IP Helper'IP Helper 服务正在启动 .IP Helper 服务已经启动成功。

设置端口转发规则,示例:将远程主机 192.168.23.18 的 65530 端口映射到本地的 1111 端口


netsh interface portproxy add v4tov4 listenport=1111 connectaddress=192.168.23.18 connectport=65530

命令行说明:

netsh interface portproxy add v4tov4 /?
用法: add v4tov4 [listenport=]<integer>|<servicename>            [connectaddress=]<IPv4 address>|<hostname>            [[connectport=]<integer>|<servicename>]            [[listenaddress=]<IPv4 address>|<hostname>]            [[protocol=]tcp]
参数:
        标记            值        listenport      - IPv4 侦听端口。        connectaddress  - IPv4 连接地址。        connectport     - IPv4 连接端口。        listenaddress   - IPv4 侦听地址。        protocol        - 使用的协议。现在只支持 TCP。

命令执行后,检查是否生效:


C:\> netsh interface portproxy show all


​​​​​​​



侦听 ipv4: 连接到 ipv4:



地址 端口 地址 端口


--------------- ---------- --------------- ----------


* 1111 192.168.23.18 65530

可以看到远程主机的端口已经映射到了本地的1111端口,即可以直接访问跳板机的1111端口来间接访问目标主机。

此时配置已生效,具体是否已经在本地开启对应端口的监听,需要通过netstat 命令进行查看:​​​​​​​​​​​​​​

C:\> netstat -an -p tcp | findstr 1111  TCP    0.0.0.0:1111           0.0.0.0:0              LISTENING

如果想导出配置,可以执行以下命令:


netsh interface portproxy dump > port.con

如果配置错误,想删掉重新配,可以执行以下命令:

netsh interface portproxy reset

可以执行 add 命令重新配,也可以修改导出的配置文件,通过还原命令导入之前的配置:


netsh -f port.conf

如果有多个端口需要映射,可以直接在配置文件中修改,然后重新导入配置即可:

C:\> netsh interface portproxy dump#========================# 端口代理配置#========================pushd interface portproxyresetadd v4tov4 listenport=1111 connectaddress=192.168.23.18 connectport=65530popd# 端口代理配置结束

比如上面 dump 出来的配置,直接重定向到文本文件,在其中 add 命令处复制多行,把端口改掉然后重新导入。

导入修改后的配置,效果如下:

从本地监听可以看到,本地的多个端口映射到了远程主机的同一个端口。这种将远程主机端口映射本地端口的**机制也被叫做正向代理,反之将本地端口映射到远程主机的模式叫反向代理。

正向代理一般用于做跳板机,而反向代理则常用于在防火墙上打洞。