指向 DNS 地址的静态路由可以吗?

指向 DNS 地址的静态路由可以吗?

我需要在 Windows 服务器上添加一条通向具有服务的 Web 服务器的静态路由;我需要在 Windows 命令提示符下使用此命令添加静态路由:

ROUTE ADD -p IPADREESS GATEWAYIP

有没有办法对 DNS 地址而不是 IP 地址进行静态路由?如何做?

例如:

ROUTE ADD -p DNSServer GATEWAYIP 

答案1

该命令的语法route add

路线添加目的地面具子网掩码网关度量成本计量如果界面

目的地可以是IP地址或者主机名对于网络或主机。

例子:

route add webservices.example.com mask 255.255.255.255 10.11.12.13

请参阅此 Microsoft 文章:添加静态 IP 路由

您必须记住,该条目将解析为 IP 地址,因此如果主机名的 DNS 发生变化,路由表中仍会有原始 IP 地址。

答案2

这更像是我使用的解决方法。您可以使用这个批处理脚本。只需将其添加到任务计划程序中,即可在每次 PC 启动时运行。这将获取您的域名的 IP 并添加路由。

:: Get IP of Domain name
setlocal EnableDelayedExpansion

set myServer=your.server.com

for /f "tokens=1,2 delims=[]" %%a IN ('ping -n 1 !myServer!') DO (
 if "%%b" NEQ "" set myServerIP=%%b
)
echo ip is %myServerIP%

route add %myServerIP% mask 255.255.255.255 <gateway ip address>
EXIT

不要使用 -p 选项,否则路由将是永久的。如果您的域 IP 定期更改,请使用任务计划程序以这些间隔运行此脚本。希望这能有所帮助!

答案3

不,不是在网络层。您也许可以使用代理之类的东西来实现您的目标。您也可以使用脚本模拟行为,但这可能不准确。

要清楚,我的观点是,您无法根据主机名进行动态路由。我并不反对 splattne 的说法。

答案4

有没有办法对 DNS 地址而不是 IP 地址进行静态路由?如何做?

不,但是也许您想要的可以通过 /etc/hosts 中的本地覆盖来实现。

示例 1

从我的经验来看,这个方法很有用的一个例子是:

我有一个繁忙的反向代理(在“新”网络上),它面向多个源。要到达其中一个源,流量必须通过旧网络,这是最好避免的。但是,如果我们向该后端主机添加另一个接口(在新网络上),我们可以让流量通过新网络。因此,在这个特定情况下,我只是在指向后端服务器上的新 IP 的反向代理 /etc/hosts 上放置了一个覆盖。

(对于 Windows,只需更改 C:\Windows\System32\drivers\etc\hosts)

示例 2

另一个例子,这次是使用浏览器代理。

我最近正在对我们的网站进行一次重大升级,并希望让人们对它进行完全按照原样的测试(即与上线后使用的相同的 URL)。

因此,在这种情况下,我在一台新机器上设置了一个浏览器/转发代理 (squid),并修改了它的 /etc/hosts 以指向新世界 IP,同时让 DNS 保留旧世界 IP(直到上线)。结果是,如果他们将浏览器配置为使用此代理,它将转到新世界网站,否则他们将转到旧世界网站。我还设置了一个 PAC(代理自动配置)文件,其中包含一组规则来规定哪些 URL 应该使用代理,其他任何内容都应该直接访问。效果相当不错。

相关内容