发布于:2006-11-19 19:57:19
来自:建筑设计 / CAD下载及教程
[复制转发]
各位大虾所说的技术已经可以实现了.
大概情况如下:
某网站 ,如www.test.com, 电信接入链路一条, 网通一条, 电信给的IP是1.1.1.1 ,网通给的是2.2.2.2 处于不同网段
要求实现 网通的用户从网通的链路 访问到 服务器, 而电信的用户用电信的链路访问到服务器.
解决方案:
要从DNS下手
某个用户从电信发起访问,过程如下
1 Client
2 Client所指定的DNS服务器 根据Client的网络接入的方式不同,DNS服务器地址未知
3 test.com的
Client 问自己的DNS www.test.com的IP是多少
Client DNS 服务器通过递归或则迭代,访问到test。com的soa dns服务器。
a, 如果是迭代,则最终向test。com询问谁是 www.test.com的 ,将是Client.
这样,test.com的DNS服务器将得到Client的IP,再根据IP地址是网段是属于
电信还是CNC的,决定返回www.test.com 的IP 1.1.1.1 还是 2.2.2.2
如果是电信用户,则返回1。1。1。1,这样该电信Client最终得到www.test.com = 1.1.1.1 的A记录解析,从而通过电信网络访问www.test.com,这样就能达到我们所预期的目的。
b,如果是递归查询,则比较麻烦, 因为最终向test.com 的dns服务器询问谁是www.test.com的,是Client DNS. 这样只能判定Client DNS是电信还是网通,而无法断定Client
是电信还是网通。 不过,由于网络接入的方式不一样,例如 网通的ADSL方式,其IP、DNS地址均由动态获取,这样此时 Client DNS服务器与Client应该是属于相同运营商IP,这样就能够通过判定Client DNS地址来大约断定Client所属运营商。
但是假如某网通用户手工指定DNS,恰好又指定了一个电信的DNS服务器,这个时候,就比较麻烦了,因为将会从电信的链路上收到一个TCP连接,其源地址为网通IP。
考虑此时是递归查询,所知Client DNS的IP地址为电信IP,则会返回1。1。1。1地址给与该 Client DNS,那么Client作为网通用户最终得到的IP将是 www.test.com=1.1.1.1 (该地址为电信地址) ,这样就会导致此用户得到错误的服务器地址。
不过,好运的是,现在的大多数DNS服务器都是迭代查询,因为没有多少DNS服务器可以承受递归的流量,所以对于99%的用户来说,都能得到正确的地址解析,从而正确的访问服务器。
目前手工配置DNS服务器来实现以上目的,好象只能有BIND能做到,不过需要自己开发一些相关工作流程,以及收集电信、网通IP地址段,工作内容比较复杂。
全部回复(1 )
只看楼主 我来说两句 抢板凳