请问一个关于在程序中取得当前Internet IP与由程序远程设置另一个服务器的DNS设置的问题.

Jacky趙家傑 2003-02-22 12:19:14
现况:
本公司有两个分部,香港与大陆.两边都用ADSL路由器上网,香港有固定IP,大陆用动态.现在数据库服务器放在大陆,当通知IP给香港后,由香港连上大陆的数据库没有问题.由于每次都要通知,太麻烦!


想法:
在香港安装DNS服务器(固定IP),在大陆运行一个程式,更新香港DNS服务器的设置,让指定的域名(如 aaa.bbb.com) 它指向新的IP.


可行性:
此想法在技术上一定能实现,因为以前有个网站提供免费的动态域名解析服务就是用这个方法.


问题:
1.如何取得自已的IP? 我用ADSL路由器+ADSL Modem 拔号,再接入内部网络.那么我怎样才能取得路由器的IP?.(我想在香港运行一个服务端程式,当大陆要更新DNS时,用Socket连接到香港的服务端程式,由服务端程式取得大陆的Internet IP, 这个方式我应该能实现,但是不想在香港安装该程式,由于那边没有人维护)

2.怎样通过程序修改DNS服务器的设定? 将域名aaa.bbb.com 指向 123.456.789.012 改为指向 111.111.111.111 ?
...全文
76 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jacky趙家傑 2003-03-03
  • 打赏
  • 举报
回复
怎样才算重启?我连服务器都重启了,但那个Refresh 时间设为1秒还是不能生效,有什么办法?
Lewolf 2003-03-03
  • 打赏
  • 举报
回复
你修改了以后,用控制面板的DNS工具察看一下,是否正确的更改了,如果没问题,那一定是DNS服务器的问题,我指的是客户段的DNS服务器的问题,因为每一个DNS服务器都有缓存,所以在DNS的配置信息中有Refresh和expire。

你可以试验一下,在DNS工具中修改配置后是否能够立即刷新,如果可以就是程序修改的问题了,或者更简单的,将DNS工具修改前的.DNS备份保存,使用DNS配置工具修改成功后后比较内容有什么不同就行了。
serial number 为修改DNS的版本序列号,可以忽略(这个我也不敢肯定,因为也可以DNS需要靠序列号判断是否刷新呢!!??),但是序列号增加是没有错的。
Lewolf 2003-03-01
  • 打赏
  • 举报
回复
重新启动DNS服务就可以了。
Jacky趙家傑 2003-02-28
  • 打赏
  • 举报
回复
Lewolf(李狼) 兄:

我试过修改com.dns这个文,但当我修改后总是不能生效(我已将Refresh 时间设为1秒!),只有通过手工“重新加载”才能生效。

请问有没有高手知道如果用程序控制DNS服务器现实“重新加载”?
Lewolf 2003-02-27
  • 打赏
  • 举报
回复
另外,获取本机IP地址的代码如下:

int i,Num;
in_addr** AddrPtr;
TStringList* IPList = new TStringList;
hostent *Host;
AnsiString Temp;
char Buffer[256];
gethostname(Buffer,256);
Host = gethostbyname(Buffer);
AddrPtr = (PInAddr*)(Host->h_addr_list);
Num = (DWORD)Host->h_name - (DWORD)(*Host->h_addr_list);
Num = Num / Host->h_length;
for( i = 0; i < Num ;i ++ )
{
Temp = inet_ntoa((*AddrPtr)[i]);
IPList->Add(Temp);
}

//IPList为获取的IP地址列表
Lewolf 2003-02-27
  • 打赏
  • 举报
回复
1.当香港的服务端被大陆的客户端连接上的时候,实际上已经获取了大陆客户端的地址,使用Socket组件就可以察看远端的ip地址。
2.你的服务器是在内部网络上,既然通过ADSL可以访问到内部的数据库,说明已经安装有端口映射、VPN等相关功能的软件,因此这个问题可以不用考虑。
3.DNS的配置是全文本的方式记录的,如果是在win2000系统,到System32\dns目录可以找到记载有某个域的配置信息,比如aaa.com就会有一个aaa.com.dns的纯文本文件。格式如下:
;
; Database file aaa.com.dns for lewolf.net zone.
; Zone version: 4
;

@ IN SOA servername
administrator.servername (
4 ; serial number
900 ; refresh
600 ; retry
86400 ; expire
3600 ) ; minimum TTL

;
; Zone NS records
;

@ NS //NS记录

;
; Zone records
;

@ A 192.168.0.250
www A 192.168.0.250 //这是你要的A记录

修改A记录的IP地址就可以的,至于什么时候可以生效,就要看你的
refresh
retry
expire
等参数设置了,如果需要访问数据库的客户机其DNS都指向这台服务器,那么生效是立即的。
warton 2003-02-24
  • 打赏
  • 举报
回复
找找QIP的资料看看,朗讯有这方面的软件
l_clove 2003-02-22
  • 打赏
  • 举报
回复
你的动态IP是外网IP么?如果是私有IP,你就不用想了
你的IP是由ADSL路由分配的吧,如果是这样那么你只能主动去通知另一端,另一端主动访问你可能很难

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧