想了想 内网穿透 端口映射 都属于 端口转发

主机列表

标识名称IP网络类型可访问端口列表
local本机192.168.1.10内外网jumptcp/13128
jump跳板机10.0.2.20内网server_localserver_publictcp/280
server_local内网服务器10.0.3.30内网server_publictcp/33306
server_public外网服务器172.16.4.40公网jump

转发类型

本地转发

服务器 上 的端口映射到 本机

1.在受限网络中访问某个服务器提供的端口、常见于只提供了本地shell,需要访问服务端其他端口

1
ssh -L [本地监听地址 localhost]:[本地监听端口]:[服务器地址]:[服务器监听端口] [待登录主机用户名]@[待登录主机地址]
  • 连接 跳板机 后 把 跳板机280 端口映射到 本机1280 端口
1
ssh -L 1280:localhost:280 jump@10.0.2.20
  • 连接 跳板机 后 把 内网服务器33306 端口映射到 本机13306 端口
1
ssh -L 13306:10.0.3.30:33306 jump@10.0.2.20

远程转发

本机、目标 上 的端口映射到 服务器、还有个响亮的名字叫 内网穿透、端口映射

  1. 支付、登录回调等
  2. 内网的服务器通过本地代理上网
1
ssh -R [目标地址 localhost]:[目标端口]:[服务器监听地址]:[服务器监听端口] [待登录主机用户名]@[待登录主机地址]
  • 连接 跳板机 后 把 本机13128 端口映射到 跳板机23128 端口
1
ssh -R 13128:localhost:23128 jump@10.0.2.20
  • 连接 跳板机 后 把 本机13128 端口映射到 外网服务器43128 端口
1
2
3
4
5
6
# 先把 本机 的 13128 映射到 跳板机 的 23128
sh -R 13128:localhost:23128 jump@10.0.2.20
# 再把 跳板机的 23128 映射到 外网服务器的 43128
sh -R 23128:0.0.0.0:43128 server_public@172.16.4.40
# 如果 本机 可以直接连接 外网服务器的 时最简单
ssh -R 13128:0.0.0.0:43128 server_public@172.16.4.40

动态转发

本机 上建立一个 socket 代理、通过此代理的数据 将通过 服务端 转发出去

  1. 恩 好像就 789020170 那种端口吧
1
ssh -D [本地监听地址 localhost]:[本地监听端口] [待登录主机用户名]@[待登录主机地址]
  • 本机 18080 端口接受到的数据通过 跳板机 转发出去
1
ssh -D 18080 jump@10.0.2.20

参考地址