65.9K
CodeProject 正在变化。 阅读更多。
Home

MonitorRouterIP

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (2投票s)

2010年10月27日

CPOL

12分钟阅读

viewsIcon

28564

downloadIcon

603

帮助具有动态域名的用户保持其DNS条目指向家庭计算机,并检查连接丢失情况

目的

  • 帮助具有动态域名的用户保持其DNS条目指向家庭计算机。
  • 检查连接丢失情况

引言

MonitorRouterIP 监控您的路由器的动态IP地址。当您配置路由器使用DHCP时,您的互联网服务提供商(ISP)会分配给您一个IP地址。如果您使用的是静态IP,那么此程序对您来说将毫无用处。当您的ISP为您的路由器分配新IP时,MonitorRouterIP 会以多种方式通知您。您可以根据您的配置选择通知方式。

MonitorRouterIP 设计用于家庭/小型办公室网络,这些网络拥有具有简单Web界面的路由器。您可以通过浏览器访问该界面,网址通常类似于:

http://192.168.0.1

我(作者)使用此程序来知道何时必须更新我在GoDaddy的DNS名称服务器,以便我的域名反映我的新IP。

此程序不会持续在后台运行。它需要作为计划任务安装。它应该会以一定间隔(我使用一小时)唤醒并检查更改。如果发生更改,程序将(可选地)通过以下方式发送警报:

电子邮件(通过SMTP)

电子邮件(通过您的默认电子邮件客户端)

短信

运行一个程序

显示在监视器上的消息

该程序占用空间相对较小,不占用太多资源。通常,它只需要读取历史记录文件即可获取路由器的最后已知IP地址。然后,它获取当前地址并进行比较。如果相同,则程序退出。此过程可能重复数周或数月,直到有一天您的IP发生变化。此时,将发送警报,并将历史记录文件更新为新的最后已知IP地址。在路由器IP地址再次更改之前,您将不会收到任何其他警报。

安装

没有自动安装方法。必须手动安装。有一个先决条件是您必须安装Microsoft .NET 3.5 Framework。您已经在Windows 7、Vista-SP2和XP-SP3上拥有此软件。您可以在此处下载。

1. 复制文件

将以下文件复制到任何目录。(为了方便本文档的说明,我们假定为c:\utility。)

  • MonitorRouterIP.exe
  • MonitorRouterIP.rft(本文件)

2. 运行程序

首次运行程序。它会询问您是否要创建配置文件。只需点击“确定”。这将同时创建一个新的历史记录文件。

3. 编辑配置文件

您应该会自动进入配置文件编辑器。如果不是,请手动编辑该文件。

c:\utility\MonitorRouterIP.config.xml

不要期望第一次就能做到尽善尽美。配置文件定义了三种类型的数据。第一种是用于确定连接性的<ping>信息。接下来是<router>部分,它定义了如何访问路由器的IP。最后是消息。这些消息位于<alerts>部分。

<ping>url="www.rogers.com"</ping> section

配置文件中的这一部分与检查您的互联网连接有关。您应该提供一个您可以始终访问的站点的URL。我建议使用您的ISP,就像我上面的例子一样。如果该站点不起作用,那么您也很可能也无法正常连接。只需打开命令窗口并输入命令,确保它响应ping命令即可。

ping www.rogers.com

首次运行后,MonitorRouterIP 会在配置文件中记住ping的IP,并使用该IP而不是URL。这样做更快,并且即使出现DHCP故障也能正常工作。

<router> section

配置文件中的这一部分与连接到路由器、导航到合适的URL以及从路由器提取WAN IP地址有关。因此,首先要做的是转到您的路由器的配置网页。在浏览器中,您会导航到类似以下的地址:http://192.168.1.0、192.168.0.1或192.168.10.1。这是路由器制造商和默认IP地址、用户名和密码列表

然后,系统会提示您输入用户名和密码。这些值将填入<user><password>。用户名很可能是“admin”。因此,我们得到:

<user>admin</user
<password>MyPassw0rd</password

然后,请在页面上搜索,直到找到包含WAN IP的页面。这就是配置文件中的<url>。在我的dlink路由器上,它是……

<url>http://192.168.0.1/st_device.html</url>

现在,找出页面上您想要显示的IP地址是哪一个。在我的状态页面上,它首先显示我的本地IP地址(192.168.0.1),然后显示子网掩码(255.255.0.0),然后显示我的WAN IP地址。这是页面上的第三个IP地址,所以我需要:

<occurence>3</occurence>

这就是我的D-Link 524的路由器部分。您的配置可能会有所不同。

<router>
  <user>admin</user>
  <password>NotTelling</password>
  <url>http://192.168.0.1/st_device.html</url>
  <occurence>3</occurence>
</router>

<alerts> 部分

这部分处理MonitorRouterIP 在IP地址更改、连接丢失或发生错误时如何通知您。有多种通知方式,每种方式都有自己的部分:

  • <sms>

    发送短信。此功能正在开发中。请勿使用。

  • <display>

    在监视器上显示消息

  • <edithistory>

    在监视器上打开IP历史记录文件

  • <email>

    使用您的默认电子邮件客户端发送消息

  • <smtp>

    通过Hotmail、Gmail、您的ISP的电子邮件、您自己的SMTP服务器发送电子邮件

  • <run>

    执行程序、批处理文件、PowerShell脚本等。

在每个部分中,您都会看到一个属性(这是XML的官方名称),形式为:

<xxxx use="true">

如果您将其设置为use="false",则只会禁用该警报。

如果您设置了<alerts use="false">,则无论各个警报如何说“use”,它都将禁用所有警报。我只在进行演示/演示文稿时使用此功能,当时我连接到其他网络,或者连接到邻居的无线路由器,以便从“外部”看到我的网站。

<display use="true" duration="300" />

这会在监视器上显示一条消息,每找到一个错误就会显示一条。duration是消息在屏幕上停留的时间。300表示5分钟。duration="0"表示消息将一直显示,直到您关闭它们(或您的PC)为止。

程序在消息显示期间会继续运行。如果您将MonitorRouterIP 作为任务运行,您可能会决定如果它运行时间超过一定时间就将其终止。请参阅下面的“调度”部分。

<email use="true" />paul_fakename_cotter@gmail.com></email>

这会通过您的默认电子邮件客户端(如Outlook、Window Live或Eudora)发送消息。还有另一种发送消息的方式,如下面的SMTP所示。为什么要同时拥有这两种方式?SMTP会立即传递消息。如果没有互联网,则不会发送任何消息。它们不会被缓冲。您的电子邮件客户端会接收消息并将其保存。它会在可能的时候进行传递。

您可能会收到一条消息,例如“一个程序正试图代表您发送电子邮件。您想允许这样做吗?”。您通常可以在您的客户端中更改此设置。在Windows Mail中,这在“工具”菜单的“选项”窗口的“安全性”选项卡下。有一个复选框,上面写着“当我尝试发送邮件时,警告我”。这将在下一个版本中得到解决。

<edithistory use="true">

如果IP地址发生变化,那么该文件(例如)c:\utility\MonitorRouterIP.history.xml 将在屏幕上打开,可能在编辑器中。此选项没有超时。它的用途有些有限。

<smtp use="true">

这是发送电子邮件的方式。它有点复杂,但如果您已经设置好电子邮件客户端,那么它应该会比较轻松。如果您只使用Webmail,那么可能更像拔牙。<smtp> 下的子部分定义了如何连接到电子邮件网络以及如何构建电子邮件。让我们逐一查看并与您的电子邮件客户端进行比较。因此,请查看电子邮件客户端帐户。在我下面的示例中,我使用Windows Mail,但所有邮件客户端都差不多,并且需要完全相同的信息。

您可以有多个<smtp>条目。我还有一个本地SMTP服务器,我也发送到那里。其中一个问题是,如果您的路由器失去连接,那么它将无法发送电子邮件。请注意,如果此程序无法发送电子邮件警报,那么它们就不会发生。它们不会被存储以供将来发送。

<server>smtp.rogers.com<\server>

这将与Windows Mail中的外出邮件(SMTP)服务器相同。

题外话:如果您运行SMTP服务器,它也可以是<server>127.0.0.1</server>的形式。

<from>paul_fakename_cotter@gmail.com</from>

这是发件人的“身份”。您的邮件服务器可能不允许您填写非您真实电子邮件地址的内容。实际上,这样做是徒劳的。在Windows Mail中,这在“常规”选项卡上的“我的电子邮件地址:”。

<to>paul_fakename_cotter@gmail.com</to>

这是警报电子邮件的主要收件人。请确保它是真实的。

<cc>paul_still_fake_cotter@hotmail.com</cc>

您还可以抄送其他地址,例如内部邮件到管理部门等。您可以拥有任意数量的<cc>条目。

<replyto>paul_fakename_cotter@gmail.com</replyto>

这是Windows Mail“常规”选项卡上的标准“回复地址”。

<subject>Problem / Change of IP for router (gmail)</subject>

这是电子邮件的标准主题。如果您不指定此项,将生成一个合适的主题。

 <port>578</port>

标准的SMTP端口是25。如果您的ISP也是您的电子邮件提供商,它很可能是25。例如,我的ISP是Roger,我的电子邮件地址是pr_fake_address@rogers.com,端口是25。

但是,如果我尝试通过端口25向不同的SMTP服务器发送邮件,那么Rogers将阻止它。这是ISP为防止您的地址发出垃圾邮件而采取的常见措施。

大多数非ISP电子邮件提供商使用一个或多个不同的端口。如果您使用安全连接,它们也可能不同。(这意味着您的消息将被加密。)例如,Gmail使用端口578和安全连接。

我将尝试获取主要电子邮件提供商(Gmail、Hotmail、Yahoo等)的端口号。如果您愿意,可以发送给我。

<timeout>30</timeout>

您通常会在电子邮件客户端设置的高级选项卡上看到此设置。这是ChekRouterIP 尝试连接到您的电子邮件提供商的秒数。60秒应该足够了。如果您在此时间内无法联系到您的提供商,那么您可能在此<smtp>配置中的其他地方存在错误。(例如,端口、安全连接、身份验证。)

<authentication>true</authentication>

几乎所有的电子邮件提供商都要求您提供身份验证。(即,提供用户名和密码)。唯一可能不需要这种情况是在您运行自己的电子邮件服务器的小型办公室。在Windows Mail中,这相当于复选框

My Server requires authentication

目前,此程序仅支持与传入邮件相同的安全设置用于外出邮件。如果这是一个问题,请设置一个Gmail或Hotmail帐户供您使用。

<user>paul_fakename_cotter@gmail.com</user>

这与<router>部分中的用户完全不同。这是您连接到电子邮件提供商所需的用户名。通常,它是您的电子邮件地址。Gmail、Hotmail、Rogers等都是如此。一些电子邮件提供商会省略“@”部分。

<user>paul_fakename_cotter</user>
<password>Y0ur_passw0rd</password>

您的电子邮件提供商的密码。同样,这与<router>部分中的密码完全不同。

<secureconnection>true</secureconnection>

这由您的电子邮件客户端定义。它会导致内容被加密。有些站点要求您使用它。有些站点要求您不要使用。有些站点是可选的,但它们使用不同的端口进行连接。

<run use="true" />explorer.exe /e,/separate,c:\utility</email>

这将执行您指定的程序。在这里,我们在一个新窗口中打开Explorer,指向我们的“c:\utility”目录。

您可能会收到一条消息,例如“一个程序正试图代表您发送电子邮件。您想允许这样做吗?”。您通常可以在您的客户端中更改此设置。在Windows Mail中,这在“工具”菜单的“选项”窗口的“安全性”选项卡下。有一个复选框,上面写着“当我尝试发送邮件时,警告我”。这将在下一个版本中得到解决。

测试

您需要测试您的警报。首次运行程序时,它会创建一个历史记录文件和一个配置文件。配置文件将是错误的,然后您需要编辑它。它可能仍然是错误的,但您需要对其进行测试。

编辑MonitorRouterIP.History.xml 文件。在<current> 部分,更改IP地址。当您重新运行程序时,由于路由器WAN IP不再与历史记录文件中的IP匹配,它将触发警报。请继续修改配置文件,直到一切正常。您每次都需要重新编辑历史记录文件才能触发警报。

在您成功运行之后,您可以将其添加为计划任务……

调度

您几乎肯定想要计划运行此程序。(如果您决定使用它的话。)

以下是我建议在Vista中将其设置为计划任务的方法。对于Windows 7或XP-SP3,方法将非常相似。

  1. 运行“任务计划程序”。根据您的系统,它可能位于:
    • > 开始> 然后输入任务计划程序并按回车键
    • > 开始> 管理工具 > 任务计划程序
  2. 菜单 > 操作 > 创建任务

在弹出的“创建任务”窗口中:

常规选项卡

名称:MonitorRouterIP

描述:监视路由器何时更改其WAN IP地址。发生这种情况时,它会通知用户。

即使登录用户未登录也运行 = 勾选

触发器选项卡

按“新建…”

新建触发器窗口中:

开始任务:按计划
每日
延迟任务最多(随机延迟):(勾选)= 1小时
重复任务时间:每(勾选)= 1小时,持续时间:= 1 天
如果任务运行时间超过:30 分钟
启用:(勾选)

操作选项卡

按“新建…”

新建操作窗口中:

操作:启动程序 程序/脚本:c:\utility\MonitorRouterIP.exe(即您存放它的位置)
在:c:\util

条件选项卡

除非您想指定网络可用,否则无需进行任何操作。

设置选项卡

允许按需运行任务(勾选)。

按“确定”。

当询问用户名和密码时,请输入您的登录ID和密码。MonitorRouterIP 无法访问此信息。任务计划程序需要此信息来提供程序将运行的凭据。

祝您好运!

© . All rights reserved.