文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux conntrack for Oracle TNS

linux conntrack for Oracle TNS

时间:2010-07-16  来源:necofang

本文档的Copyleft归necofang所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn : [email protected]
来源: necofang.cublog.cn
   假如Oracle数据库使用共享服务的方式提供服务,在客户端使用SQL-PLUS之类的软件进行连接时,Oracle数据库将采用REDIRECT的方式与客户端进行连接。如下所示:
      SQLPLUS                                          ORACLE       连接1521   --------------------------->                        <-------------------------      客户端,你下回数据连接XXX端口。       连接XX端口 -------------------------->                       <---在XX端口上跑数据---> 
   整个交互类似FTP的被动模式,因此我们可以仿照FTP的conntrack module写一个新module来支持oralce的这种通信方式。
感兴趣的TX可以直接下载代码,代码都提供了,我也就不多说了。就简单说说代码中处理不好的地方。
代码在linux-2.6.26.5上测试通过。

文件: conntrack-tns.tar.bz2
大小: 4KB
下载: 下载

static int find_pattern (const char *data, size_t dlen, struct nf_conntrack_man *cmd, u_int * matchoff, u_int * matchlen)
{
  struct tnshdr_redirect * ptnshdr = (struct tnshdr_redirect*) data;
  int len = 0;
  int level = 1;
  __be16 port = 0;
  char * data_ptr = NULL;
  
  //check TNS packet

  //判断报文是否为REDIRECT报文时,我仅通过报文大小和memcmp一段内容进行判断。

  //此判断方式可能在某种特殊情况下(及报文大小符合数据也符合,但不是一个REDIRECT报文)导致check出错。
  if (68 < dlen || 56 > dlen || //max datalen and min datalen
      NF_CT_TNS_REDIRECT != ptnshdr->tns_type || //tns type
      0 != memcmp (ptnshdr->datas, "(ADDRESS=", strlen ("(ADDRESS="))) {
    TNS_PRINT ("current data is not tns packet");
    return (0);
  }
  
  *matchoff = 0;
  *matchlen = ntohs (ptnshdr->pkt_len);
  
  data_ptr = (char*)data + dlen - 1;
  port = 0;
  for (len = 0; len < dlen; len++, data_ptr--) {
    if ('=' == *data_ptr) break;
    if (*data_ptr >= '0' && *data_ptr <= '9') {
      port = port + (*data_ptr -'0') * level;
      level *= 10;
    }
  }
  
  cmd->u.tcp.port = htons (port);
  
  TNS_PRINT ("ip = "NIPQUAD_FMT" port = %u", NIPQUAD(cmd->u3.ip), port);
  return ((0==port) ? 0 : 1);
}


另外,代码在安全方面还没仔细考虑。哪位有好想法或代码有什么问题请告知。
相关阅读 更多 +
排行榜 更多 +
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

飞行射击 下载