网络拓扑
需求
- 管理节点和计算节点都在一个内网当中,整个网络只有管理节点暴露了连接地址
- 平时通过ssh访问gpu002,都只能通过登录管理节点
ssh test@172.20.0.100
,再ssh gpu002
为跳板访问gpu002 - 即
外部主机>>跳板机(管理节点)>>内部主机(计算节点)
- 现在gpu002需要通过web页面管理数据(向外提供端口访问8888),并且需要联网验证许可证(需要联网)
问题
- 外部主机:
- ip地址为172.20.0.123,可以开放全部端口,可以连接到管理节点MGT,但无法直接连接至gpu002
- 跳板机(管理节点):
- ip地址为172.20.0.100(外),mgt(内)
- 内部主机(计算节点)
- 可以暴露多个端口,但iptable和route都限制了路由
本地转发
- 使用管理节点(172.20.0.100,mgt)为跳板机,将gpu002的8000端口映射到本地2121端口
- 命令格式
ssh -L <本地端口>:<内部主机>:<内部主机的端口> <跳板机> -N
-L
:开启本地转发
<本地端口>
:2121 (选择本地任意一个未使用的端口即可)
<内部主机>
:隐藏在跳板机之后的节点,如gpu002,可以通过跳板机访问
<内部主机的端口>
:本例中为8000,为计算节点提供的web服务端口
<跳板机>
:格式为ssh访问格式,账户@ip地址
,本例中为test@172.20.0.100
# 在本地节点上执行
ssh -L 2121:gpu002:8000 test@172.20.0.100 -N
- 通过访问
http://localhost:2121
,借助跳板机访问gpu002的服务
远程转发
- 使用跳板机,将172.20.0.0123的7890端口,映射到gpu002
- 再将本地端口设置为代理,从而使内网gpu002可以上网
ssh -R 8000:172.20.0.123:7890 -N gpu002
export http_proxy='http://127.0.0.1:8000'