![指向 DNS 地址的静态路由可以吗?](https://linux22.com/image/514384/%E6%8C%87%E5%90%91%20DNS%20%E5%9C%B0%E5%9D%80%E7%9A%84%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E5%8F%AF%E4%BB%A5%E5%90%97%EF%BC%9F.png)
我需要在 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 应该使用代理,其他任何内容都应该直接访问。效果相当不错。