隧道的使用

1,安全策略

公司生产机器,肯定不能随便就访问的。一个常规思路是,我们搞一个跳板机,只有通过跳板机才能访问公司生产机器。然后每个用户分配一个跳板机账号密码,可以很好的细粒度权限控制以及追溯。

1.1,公司有个跳板机

这个跳板机只能公司内网ip(链接公司wifi后的ip)访问。

1.2,公司有很多生产机器

这些生产机器,都是不能直接访问的,必须先登录跳板机,然后才能登录其他机器。

1.3,出了公司,如何访问线上机器

vpn,先通过vpn,给自己建立一个公司内网ip的网络通道,后续网络数据都通过这个通道先转给公司内网,然后通过公司内网登录跳板机,最后通过跳板机登录公司其他生产机器。

2,通过跳板机建立隧道

正常情况下,1.2/1.3的方式是可以访问线上机器的。but,我们的代码是不能直接先登录跳板机然后登录线上机器的(比如mysql服务器)。

2.1 思路

如果搞个快捷方式,我们代码看上去是直接访问某个线上ip,但是实际上做了两个步骤:自动先登录跳板机,然后通过跳板机登录线上机器。这种快捷方式叫做隧道。

2.2 代理软件的作用

那么就需要借助一个代理软件建立隧道,此类代理软件很多:mac下比如ssh_tunnel/finalshell。

代理软件就是把一个本机能访问的avaliable_ip:port的访问,通过本机能访问的另一个proxy_ip:22,转发成另一个target_ip:port的访问。非常适用于2.1思路的实现,而跳板机就扮演者代理机proxy_ip的角色。

2.3 代理软件ssh_tunnel配置隧道

下图所示配置,可以配置一个隧道,这个隧道的效果是:你可以本地访问 127.0.0.1:19004 快捷方式一样访问 r-xxxx:6379这个端口。下面这个图对代理机器sshhost起的作用非常清晰,图中 forwards to 标示的虚线就是一个隧道。

 

2.4 代理软件finalshell配置隧道

同样如下图所示,配置的隧道效果是:你可以本机访问 127.0.0.1:10126 快捷访问 10.172.80.185:22 这个端口。具体原理和sshtunnel一样(参考上图)

 

3,一种本地debug的困境

我们正常情况下,是不需要跳板机访问线上数据库的能力的。因为数据库只需要线上服务器或开发机器能访问即可。

所以我们本地debug如果需要链接线上数据库,那么是不能直接通过跳板机建立隧道链接的。

3.1 思路

假如本机ip 设为 LOCAL;

跳板机ip 设为 JUMP;

开发机器服务器ip设为 DEV;

线上数据库服务ip设为 MYSQL;

本机对四个ip的关系是:可以访问LOCAL,可以访问JUMP,可以通过JUMP建立隧道访问DEV,可以通过JUMP建立隧道访问不了MYSQL(因为没有分配权限),可以通过JUMP建立隧道访问DEV后基于DEV再访问MYSQL。

那么我们本机通过两个代理软件,实现两级跳两个隧道访问MYSQL。

首先通过finalshell使用JUMP作为代理机建立一个隧道,通过访问LOCAL:port1可以访问DEV:22,然后通过sshtunel使用LOCAL:port1(其实是DEV:22)作为代理机建立一个隧道,通过LOCAL:port2访问MYSQL。

然后代码即可直接使用LOCAL:port2访问线上数据库。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值