问个问题,我开发的两层系统有点大,转成三层比较麻烦,我有个这样的情况,大家看能不能提点建议。
数据库是SQL2000、开发环境Berlin10.1、数据库组件用的是ADO、用的是经典CS模式连接。
因为客户那边的话,很多客户端是不给上互联网的,,同时连接到一台局域网内的服务器,目前我是把数据库放在服务器上。
我现在想把数据库放在云系统中,当然每台客户端通过互联网直连是可以访问的,我现在就是想解决大部分客户端不能上互联网、但可同时连接到一台服务器上、那台服务器又可以上互联网的情况下,实现都可以访问云端数据库的功能。
各位给一些建议或提示,有没有这样的捷径:不过多的修改程序、不用三层技术开发(或者搞搞就能用)、不用VPN,所有的机器通过某一台能上网的机器(就算是服务器)有点什么技术就可以连上云系统中的SQL Server,就把这个活给干了。
如果原来2层的客户端使用CLIENTDATASET,操作数据用了统一接口,那么改3层真是分分钟的事情。否则~ 你晓得的啦!
楼上很多人都乱说!
楼主只要能访问sql server就行了,客户虽然不让上互联网,可是这种限制从需求上并不包括数据库服务器,所以只要简单地让客户端仅能访问某个IP(sql server服务器的IP)就行了,这个和限制访问互联网不矛盾,当然从安全角度看还是VPN更好一些。所以根本和软件修改无关!
一个是通过路由设置一下就行了,不然搞一个代理服务器(安装在局域网内的服务器上也是一样的),反正都可以实现。从网管的角度还是路由设置一下的好
极其简单
打开那台服务器的防火墙配置,设一个端口转发,把内网网卡的1433端口映射到云端服务器的1433端口即可。XP都能实现这功能。
根据多年的经验,切不可请网管改路由,否则网络有P大点事都会怪罪到你头上
安全问题也简单
1、如果你服务器IP固定或者变化范围很小,,在sqlserver那边防火墙设个ip白名单,只允许你的服务器连接sqlserver就行了
2、如果IP变化大(如拨号方式上网),用不了白名单,稍微麻烦一点儿,需要你在服务器和sqlserver机器上都装一个stunnel(或者类似的东西),搞一个加密隧道,公网上达到VPN的安全效果,又比配VPN简单太多
实际上这种情况我们通常是这么做:
1、云端用云数据库(server_db),有云厂商维护,自己省事,没有公网ip,只能由LAN访问
2、云端开一台云主机(server_cloud),linux的,和云数据库在同一LAN
3、你的服务器(server_local),linux/windows都行,可以上internet访问云主机,用来当跳板
4、然后客户端填db地址时用 server_local 的内网地址
注意,高潮来了,在server_local上运行一条命令,你的系统就转起来了:
plink user@server_cloud -L 1433:server_db:1433 -C
而且公网传输使用ssh加密,安全无忧;server_db 也不暴露在公网,继续安全无忧。
注:plink适用于windows,要用linux命令有所不同
http://bbs.2ccc.com/topic.asp?topicid=519378