基于内网外隔离的微信推送解决方案
先来看看需求
我们假设原始TOP如下:
内网用户和tomcat1&tomcat2 服务器有访问微信企业API接口服务器的需求,但是该网络环境要求比较严格,内网PC和服务器严禁访问互联网。
为了解决这一应有需求和矛盾,我们在内网服务器和互联网之间加一台双网卡服务器充当映射层。
TOP如下:
添加了一层映射层之后,内网PC和TOMCAT1&tomcat2服务器如果需要访问微信企业API服务器的80端口只需要访问rinetd端口转发服务器内网IP的80端口即可。
通过该构架一个完整的微信信息访问流程分解成三个部分
第一部分
内网服务器把消息推送给tomcat1&2服务器后,tomcat1&2服务器直接访问rinetd端口转发服务器内网IP的80端口。到此为止,应用层的信息流程结束
第二部分
端口转发把qyapi.weixin.qq.com的80端口直接映射到本地IP的80端口。访问本机的80端口就是访问qyapi.weixin.qq.com的80端口。当tomcat1&2发起访问请求的一个TCP会话内,整条通信链完整,可以互相推送信息,当这个TCP会话结束。qyapi.weixin.qq.com需要访问内部服务器将变得不可行,这是就需要第三部分完成
第三部分
整个网络中只有tomcat3服务器通过防火墙和互联网相连,TOMCAT3 实时保持对企业微信API服务器的连接。当企业微信API主动发起消息推送的时候,
TOMCAT3充当消息的接受者。而TOMCAT3内网端和TOMCAT1&2处在同一个网段。信息调用变得非常的便捷易于实现。
优缺点:
上述方案的优点非常明显
1、不改变现有网络TOP结构。
2、内网PC端和TOMCAT1&2不用做额外的配置
3、端口转发本身就是一个很好的安全策略
4、实施简单,后期维护方便
缺点
1、存在单点故障
2、对于频繁的大量的信息转发效率没有路由直连高
配置信息
端口转发配置
安装rinetd 请自行百度
编辑配置vi /etc/rinetd.conf
启动程序
pkill rinetd ##关闭进程
rinetd -c /etc/rinetd.conf ##启动转发
把这条命令加到/etc/rc.local里面就可以开机自动运行
查看状态
netstat -antup
tomcat1@2设置hosts
测试 OK 完美解决