iptables 配置后连接不上数据库_Linux下iptables端口转发实现跳转访问数据库

在A、B、C三台设备中,由于网络限制,A无法直接访问C上的Oracle数据库。通过在B上配置iptables进行端口转发,使得A能够通过B跳转访问C的数据库。具体步骤包括在B上启用IP包转发,设置iptables规则,并在A的SQuirreL SQL Client中使用转发端口连接数据库,成功实现跳转访问。
摘要由CSDN通过智能技术生成

应用场景:

假设有A、B、C三台设备,A<==>B可以互相访问,B<==>C可以互相访问,A和C不能直接访问,在C上安装了Oracle数据库,如何实现A可以访问C的数据库呢?

基本思路:

第一反应是在B上搭建个代理,A配置访问代理后,可以通过B跳转访问C,但是平时连接Oracle用的客户端是PLSQL,从我抓包的情况看,PLSQL和数据库通信通过tcp和tns两个协议,tcp协议的代理好解决,而tns协议的代理就不是那么简单实现了。既然这条路不通,只能换一角度寻找解决办法,想到我们一般项目里都是通过JDBC访问数据库的,所以我们也可利用JDBC的原理,通过tcp访问避开tns即可。推荐一个客户端工具:SQuirreL SQL Client

(http://squirrel-sql.sourceforge.net)它非常方便的,同时能连接目前市面上的大多数数据库,只需要在B上能实现tcp的转发即可实现A访问C的数据库了,同时想到linux下iptables就可以实现简单ip包的端口转发,下面就给出具体的实验操作步骤。

具体环境:

A(192.168.8.253)、window vista

B(192.168.8.150)、linux CentOS 5.5

C(192.168.8.49 )、linux Redhat AS4、Oracle(SID:ora9i、端口:1521)

操作步骤:

1. B(192.168.8.150)允许IP包转发,修改配置文件/etc/sysctl.conf 中 net.ipv4.ip_forward = 1

(1:允许转发,默认:0)

PS:

不同的版本的linux可能存在差异,本文是在CentOS5.5下测试通过

2. B(192.168.8.150)修改iptables中的规则:

shell脚本

$iptables -t nat -A PREROUTING -p tcp -m tcp --dport 11521

-j DNAT --to-destination 192.168.8.49:1521

$iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 1521

-j SNAT --to-source 192.168.8.150

$service iptables save

$service iptables restart

PS:如果B是window系统,这里推荐一个非常方便小巧的工具kingate(http://sourceforge.net/projects/kingate

),简单配置即可实现端口转发功能。kingate功能非常全,同时支持http,https,socks,pop3,smtp,telnet,ftp,mms,rtsp,dns and tcp port redirect,同时也有linux版本。

3. A(192.168.8.253)配置客户端:SQuirreL SQL Client的连接参数如下:

URL=jdbc:oracle:thin:@192.168.8.150:11521

:ora9i

ps:

此处的端口和上面配置的转发端口一致

测试连接成功如下图所示:

到此我们基本实现了跳转访问数据库。

本文连接:http://sjsky.iteye.com/blog/1135635

转载请注明来自:Michael's blog @ http://sjsky.iteye.com

----------------------------- 分 ------------------------------ 隔 ------------------------------ 线 ------------------------------

大小: 86 KB

3

12

分享到:

2011-07-29 13:05

浏览 5876

评论

2 楼

sjsky

2011-11-15

dbn002385 写道

如果B本身要访问C的数据库(1521),这样会不会有影响?

不受影响的

1 楼

dbn002385

2011-11-15

如果B本身要访问C的数据库(1521),这样会不会有影响?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值