如何在Windows中清除路由表?

29

我正在尝试编写一个程序,以便随时更改网络的默认网关。但是似乎每个进程中都有路由表缓存,因此我无法精确控制网络行为。我能否只刷新该进程的路由表?

例如,如果我先执行了Iexplore.exe,然后将默认网关更改为韩国VPN,IE仍然会连接到美国默认网关。但是如果我先更改默认网关,然后再执行Iexplore.exe,则它会连接到韩国。

那么,我怎样才能清除路由表缓存呢?谢谢。

4个回答

54

以管理员身份从命令提示符中运行:

netsh interface ip delete destinationcache

可在Win7上运行。


1
在我的Win 10 Powershell上运行良好。 - Nathan Chappell

5

使用 route -f 命令会导致损坏。因此,我们需要断开正确的路由表部分,或者找出如何重新构建它。


如果我们有DHCP提供正确的路由,那就没问题了。我已经使用它重新连接了我的有线和无线网络,现在一切正常。 - Paul Stelian
1
如果你的虚拟机在云端,使用route -f命令非常危险,因为你会失去所有可能的访问权限,除非你恢复备份。 - Anass Kartit

4
你可以打开命令提示符并执行以下操作:
route print

您可以查看当前的路由表。

您可以通过以下方式进行修改:

route add    d.d.d.d mask m.m.m.m g.g.g.g 
route delete d.d.d.d mask m.m.m.m g.g.g.g 
route change d.d.d.d mask m.m.m.m g.g.g.g

这些看起来是有效的

我运行ping d.d.d.d -t,更改路由,它就会改变。(我的测试涉及到路由到一个无效的路由,ping就停止了)


0
在Microsoft Windows中,您可以通过route -f命令删除当前网关,使用route /?查看更高级选项,例如添加/删除等。还可以编写批处理程序以在特定时间添加路由,但如果您需要删除IP缓存,则可以使用arp命令。

12
route -f 命令会永久性地删除网关,你应该在回答中明确提及这一点。 - mavrosxristoforos
1
这完全破坏了我的VPN配置。我不得不卸载并重新安装VPN客户端来修复它。仅仅重新启动Windows没有帮助。 - Mat-KH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接