全封闭内网访问上行权限

201783

9:30

一次权限开通引发的思考。

    环境:公司用的 nginx + Tomcat高可用负载均衡,nginx有链接外网的权限,Tomcat所有服务器只能在内网访问。

    需求: Tomcat服务器现在要链接上海银行给的一个https的公网地址 ip + port

 

   动手前个人猜想: 服务器调用银行地址,只要服务器能访问外网不就能访问到这个地址了?所以我要让服务器上网。  1.直接让网络工程师在网络设备上开通权限。 2。我的nginx可以上网我可以在这里做代理,让其他服务器上网。

    犯下的罪:1. 没有考虑到要用支持https的代理软件. 只想着能上网就行了。    2. 服务器能上网不代表能访问到银行的地址。后面由讲到。

 

     初步计划: nginx正向代理,nginx代理做好后测试发现有的网站能访问,有的网站不能访问。后来才知道,nginx正向代理只支持 http,而不支持 https 。缺乏考虑。

     反思: 对于访问地址分清楚是 http 还是 https。做代理前先了解 代理软件是否支持你所需要的功能。

 

   二次崛起尝试计划: 当了解到squid代理支持 https,二话不说就又做了 squid的正向标准缓存代理。后面测试 https http代理上网都可以成功。 但是唯独银行给的地址不能用。原因公司服务器公网ip没有加入银行白名单。

      反思: 银行一般都有白名单,要访问银行给的地址。一定要先,让银行把你的服务器公网IP加入银行白名单。 做事先考虑外部影响因素。因为内部因素都是公司自己内部的问题。协商解决很快,和其他公司打交道,开权限,流程复杂,时间很长。如果业务要紧急上线,加一个白名单要等1-3天,在你这浪费了时间。相信领导从此不会对你有好印象的。

 




                                                     是万事俱备,还是又跳深坑?

过了2天,银行才把服务器公网IP给到我们,那天我晚上11点准备睡觉。领导打来电话:“上行接口地址已经给我们了,但是现在不能访问,是不是代理出问题了?”我:“不会吧,代理我测过呀,外网都能访问呀,百度,淘宝,jd我之前都测过的呀!” 我这时就有点虚了,不是Tomcat服务器外网能访问,上行的接口地址一定能访问吗?现在怎么回事?

    排查问题开始:

          1. 在可以上网的nginx上看看 上行地址 ,假如说是 1.1.1.1:8123, 能不能访问。 方法 telnet   curl  -k  :跳过ssl验证。   结果是可以的。---》上行权限已经开通,跟上行没关系了。内部排查开始。


          2.tomcat服务器上同样方法访问,返回 proxy 403错误。和当时猜想结果差别太大,一脸大写懵B -----》访问 jd 淘宝 百度,都正常。唯独上行 接口IP,不行。代理可能有问题。

代理的日志里是这样的报错: TCP_DENIED/403 3664 CONNECT  1.1.1.1:8123  - NONE/- text/html

然后尝试很多种办法,到了夜里2点左右还没解决。种种原因。只能等第二天继续解决,如果。

 

        第二天因为可能要上线,所以没有时间给我解决问题。在做代理之前我给领导提了两套方案。做代理是第一套,因为时间问题,放弃。 直接实施第二套方案,让网络人员直接在网络上开通到上行接口访问权限。(这里tomcat服务器数据出去的公网地址一定是要先让银行加入到白名单才行)

 

反思: 考虑问题不够全面,先是外部因素没有解决,导致后面出现问题,再是选择代理应用时,考虑太少,感觉只要是正向代理都能上网,肯定都支持http https两种呀。其实太自信,现实不是这样。  做事一定要留一手,这套方法不行,我们应该怎么办?