公网访问局域网内的数据库

1,外网的服务器(比如Java Web)如何连接局域网内的数据库呢? 

2,公网的电脑如何访问局域网内的某个服务呢? 
情景:

我们之前做的一个项目,是要做一个网站,并且网站要能访问到客户公司局域网内的SQL Server数据库. 
公网的电脑访问局域网内的数据库??? 
当时可把我们难倒了.在无计可施的时候,我打电话咨询了前公司的技术大牛,给我介绍了端口映射和花生壳 
首先我们要明确3点: 
(a)公网中的电脑是可以访问局域网的网关(外网ip)的; 
(b)网关的外网ip是由运营商分配的,是不固定的(所以才要用到花生壳); 
(c)外网是无法直接访问到局域网中的某台电脑的.

 

我们起初的解决方案如下: 
客户公司必须通过TP-LINK 上网,因为TP-LINK 有端口映射的功能. 
为什么要端口映射呢?比如SQL Server数据库的端口号是1433,所在电脑ip是192.168.1.125(示例),那么可以在TP-LINK中进行端口映射,效果就是只要访问公网ip的端口号为1433 时,TP-LINK 就会定位到ip是192.168.1.125(示例)的电脑,也就是TP-LINK通过这种机制,可以用端口定位到局域网中的指定电脑. 

牺牲端口,模拟公网IP
这样就达到了公网访问局域网中某台电脑的目的.如下图 

 但是客户公司使用的是电信光猫上网,而且电信光猫没有端口映射的功能,因此必须要连一个TP-LINK.连接TP-LINK之后,拓扑图如下: 

 

这样的话,就有两层局域网了,但是端口映射只能穿透一层局域网 
现在有两个难题: 
1,多了一个TP-LINK,因为有两个路由器就有两层局域网了,端口映射只能穿透一层局域网; 
2,网关的外网ip是随时都有可能变化的.公网访问时ip肯定是不能写死的.

难题1的解决方案:

让光猫只充当Bridge,说得通俗一点,就是充当一根网线.那么需要破解光猫,如何破解光猫呢? 
首先用电脑直接连接光猫,获取光猫的超级管理员,步骤如下: 
注意:电脑一定要直连光猫 
用光猫背后的useradmin 帐号和密码登录 192.168.1.1 
然后下载http://192.168.1.1/backupsettings.conf 

下载backupsettings.conf的具体步骤:

(a)使用路由器背面的用户名密码登录;

(b)登录成功之后,在地址栏敲这个http://192.168.1.1/backupsettings.conf

(c)可能会又进入登录界面(之前已登录,怎么又要登录?不正常啊! 咱们破解也不正常啊),不用管,照样输入路由器背面的用户名密码,可能要反复3次

(d)登录成功之后,重复(b),直到下载成功.

 

用记事本打开,找到telecomadmin+8位数,这个就是你光猫telecomadmin的密码。 
首先把URL>http://devacs.edatahome.com:9090/ACS-server/ACS找到,改成URL>http://devacs.edatahome.com.disable:9090/ACS-server/ACS,使得无法连接远程管理服务器,然后找到
<TotalTerminalNumber>5</TotalTerminalNumber>,把5改成一个比较大的数字用以解除光猫接入设备数量限制。 
然后用telecomadmin帐号和你刚才找到的密码登录192.168.1.1 
打开 http://192.168.1.1/updatesettings.html 页面,把刚刚改好的配置恢复。 
进入宽带设置界面,把internet连接从pppoe改成桥接(Bridge),类似于下面这个界面 

 

设置好了之后,让路由器连接光猫,然后把主机B(SQL Server所在的电脑)连接数路由器,登录192.168.1.1,先设置上网参数(密码),然后来设置端口映射. 
注意:此时,电脑直连光猫将不能上网,必须连接TPLink路由器,因为此时光猫仅仅起到Bridge作用. 
问题:为什么要连接局域网里的主机B,连公网的数据库不行吗? 
不行,因为客户之前购买了一个客户端软件,这个客户端软件安装了数据库,而我们做的网站要获取该数据库中的数据,所以只能连接主机B的数据库

端口映射 
因为SQL Server数据库的端口号是1433,所以我们需要映射1433 端口号. 
步骤如下: 
登录TP-LINK控制台, 


增加之后 

即访问网关的1433端口号时 相当于直接访问局域网电脑192.168.1.125

难题2的解决方法
使用花生壳 
使用端口映射技术后,公网的ip是随时都可能变化的,此时需要使用花生壳软件绑定一个域名。 
花生壳下载地址:http://pan.baidu.com/s/1pJFgLDL 
或者:http://oray.net/PeanutHull/Download.asp 
注册页面:https://console.oray.com/passport/register.html 
注册成功: 

花生壳的客户端: 

打开cmd ,直接ping 花生壳域名: 

查看域名解析信息,双击域名: 

在主机B(SQL Server所在的电脑)上启动花生壳客户端,就把花生壳域名绑定到了这台电脑上,只要网关的外网ip发生变化,花生壳客户端会立即监测到并更新绑定. 
所以公网的电脑只要访问花生壳域名就可以访问主机B(SQL Server所在的电脑) 
 
注意: 
(a)花生壳客户端一定要安装在要被外网访问的那台局域网电脑上; 
(b)电信光猫一定要破解,因为普通的用户登录之后是看不到宽带设置功能界面的. 
(c)破解光猫时,电脑一定要直连光猫,不能通过TP-LINK间接连光猫; 
(d)一定要把光猫的连接类型改为”Bridge

时间: 2024-10-29 23:41:25

公网访问局域网内的数据库的相关文章

无法访问局域网内IIS服务器的解决办法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今天上午遇到这样的问题: 无法访问局域网内其它电脑中的IIS,以前是可以的,重装了系统就不行了,自己可以访问,但别的电脑不行.看看IIS的IP设置,是192.168.*.*开头的.但为什么不能访问呢? 在网上找了一下解决办法,也没看到类似的回答. 有人说一般发生这种情况时操作系统是XP第二版.于时我就想到了,可能是安全性设置的问题,于时我在控

Android模拟器如何设置DNS访问局域网内网站

我们需要用到android-sdk开发包中adb shell指令 见下图   退出adb shell exit  

JAVA如何获取访问用户的客户端IP(适用于公网与局域网)

/** * 获取访问用户的客户端IP(适用于公网与局域网). */ public static final String getIpAddr(final HttpServletRequest request) throws Exception { if (request == null) { throw (new Exception("getIpAddr method HttpServletRequest Object is null")); } String ipString = r

局域网内的电脑无法互相访问怎么办

  解决方法一: 1.按Win+R键打开运行,输入service.msc,回车; 2.在服务列表中找到Server服务,双击打开; 3.设置启动类型为"自动",点击启动服务,然后点击确定即可. 解决方法二: 1.打开控制面板,点击"用户帐户和家庭安全"; 2.点击"用户账户"; 3.点击"管理其他帐户"; 4.可以看到Guest账户,双击进入设置; 5.点击启用来宾帐户即可. 如果无法访问局域网内的其他主机,不妨用上述的两种方

外网通过VPN访问公司局域网内文件的实验

实验拓扑图想出来的 外网通过VPN访问 公司局域网内文件 VPN在虚拟专用网中客户端使用特定属于隧道协议,与虚拟专用网服务器建立连接,虚拟专用网可以帮助远程用户轻松访问公司的文件可信的安全连接,并保证数据传输. 优点1:降低成本 优点2:传输数据可靠 优点3:连接灵活 优点4:完全控制 自己电脑做 客户端,公网ip是192.168.80.10

外网通过VPN访问公司局域网内文件的方法

实验拓扑图想出来的 外网通过VPN访问 公司局域网内文件 VPN在虚拟专用网中客户端使用特定属于隧道协议,与虚拟专用网服务器建立连接,虚拟专用网可以帮助远程用户轻松访问公司的文件可信的安全连接,并保证数据传输. 优点1:降低成本 优点2:传输数据可靠 优点3:连接灵活 优点4:完全控制 自己电脑做 客户端,公网ip是192.168.80.10 xp用来做 服务器的FTP服务器 共享文件ip地址192.168.90.99/24 内网地址 这时我们ping下文件服务器试下,肯定ping不同 不在一段

本机搭建tomcat服务器 架设网站 局域网内用户访问 页面动态加载的数据无法加载

问题描述 本机搭建tomcat服务器 架设网站 局域网内用户访问 页面动态加载的数据无法加载 本机搭建的tomcat服务器,数据库.局域网内用户访问系统页面,ajax动态加载数据无法显示.如图: [用户类型]是ajax动态加载的!本机页面正常,局域网内用户只有页面,没数据! 解决方案 你的代码呢?用chrome开发工具或者firebug看看报错了没有,ajax返回了什么内容. 解决方案二: 浏览器log中有没有错误,ajax打印下返回结果

【阿里云】 ECS Linux 云服务器中安装 rinetd 进行转发实现本地通过公网访问云数据库 Redis

转载请注明出处http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 今天在阿里云买了一个月的云数据库Redis试试水一开始因为我选择的云数据库Redis是经典网络所以搭建好之后设置键值对会超时. (注意ECS服务器和Redis数据库在一个地区很重要) 注意的事项是 redis是经典网络的, ecs是专有网络的,这两者内网不通, 所以需要在redis控制台, 实例信息,基本信息,将redis切换到专有网络下即可连接. 注意: 1. redis切换到专有

解决内网机器无法通过域名访问同一局域网内的网站

看到这个标题,你可能会猜想这个是不可能的呢.同一个局域网怎么会访问不了同一个网内的网站呢? 在解决这个问题之前,我先来做一点解释.我们公司的网络使用是有权限的,不是所有的人都能上外网.如果是可以上外网的机器,那么在同一个局域网内确实可以通过域名进行访问.但是,不能上外网的呢? 这个问题就出来了,不能上外网的机器也想通过域名的形式访问公司的网站.那我们该如何解决呢? 其实解决方法有三种,我们按照从简到繁的顺序来一一讲解. 我们先来讲解第一种方法. 方法一.既然是同一个局域网,那么网站服务器的IP一