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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
.cn 域名,1个 12个月
简介:

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控制台, 
虚拟服务器
增加端口
增加之后 
通过端口映射到局域网ip

即访问网关的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 花生壳域名: 
ping 注册的域名

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

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

相关文章
|
1天前
|
SQL NoSQL Java
彻底革新你的数据库操作体验!Micronaut数据访问技巧让你瞬间爱上代码编写!
【9月更文挑战第10天】Java开发者们一直在寻找简化应用程序与数据库交互的方法。Micronaut作为一个现代框架,提供了多种工具和特性来提升数据访问效率。本文介绍如何使用Micronaut简化数据库操作,并提供具体示例代码。Micronaut支持JPA/Hibernate、SQL及NoSQL(如MongoDB),简化配置并无缝集成。通过定义带有`@Repository`注解的接口,可以实现Spring Data风格的命名查询。
15 6
|
8天前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
36 6
|
6天前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
【9月更文挑战第6天】PolarDB是阿里云推出的高性能分布式关系型数据库,PolarDB Proxy作为其关键组件,位于客户端与PolarDB集群间,负责SQL请求的解析与转发,并支持连接池管理、SQL过滤及路由规则等功能。本文详细介绍了PolarDB Proxy的配置方法,包括连接池、负载均衡和SQL过滤设置,并探讨了监控调优、缓存及网络优化策略,以帮助提升数据库访问效率。
15 1
|
12天前
|
SQL 关系型数据库 数据库连接
探索研究Ruby 数据库访问
【8月更文挑战第31天】
24 1
|
18天前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
|
27天前
|
C# 数据库
C# 使用 DbDataReader 来访问数据库
C# 使用 DbDataReader 来访问数据库
52 2
|
1月前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
PolarDB是阿里云的高性能分布式数据库,PolarDB Proxy作为关键组件,解析并转发SQL请求至集群。本文概览PolarDB Proxy功能,包括连接池管理、负载均衡及SQL过滤;并提供配置示例,如连接池的最大连接数与空闲超时时间设置、一致哈希路由及SQL安全过滤规则。最后探讨了监控调优、查询缓存及网络优化策略,以实现高效稳定的数据库访问。
74 2
|
11天前
|
开发者 UED Java
Play Framework惊天秘密:如何让异常处理优雅得像芭蕾舞?
【8月更文挑战第31天】在Web应用开发中,异常处理至关重要,直接影响应用稳定性和用户体验。Play Framework作为轻量级Java Web框架,提供了基于Scala偏函数的灵活异常处理机制。通过实现`HttpErrorHandler`接口可定义全局异常逻辑,而在控制器中使用try-catch块则能捕获特定异常。定义自定义异常类也有助于表示特定错误情况。最佳实践包括保持处理一致性、提供有用错误信息、记录日志及分类处理异常。掌握这些技巧,能使Play应用更健壮可靠。
28 0
|
11天前
|
SQL 数据库 开发者
全面提速你的数据访问:Entity Framework Core性能优化指南,从预加载到批量操作的最佳实践揭秘,打造高性能数据库交互体验
【8月更文挑战第31天】本文详细介绍如何在Entity Framework Core(EF Core)中优化数据访问性能,涵盖从创建项目到定义领域模型、配置数据库上下文的最佳实践。文章通过具体代码示例讲解了预加载、惰性加载、显式加载、投影及批量操作等技术的应用,并介绍了如何使用SQL查询和调整查询性能来进一步提升效率。通过合理运用这些技术,开发者可以构建出高效且响应迅速的数据访问层,提升应用程序的整体性能和用户体验。
26 0
|
2月前
|
开发框架 前端开发 JavaScript
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用