Как сбросить таблицу маршрутов в windows?

Я пытаюсь написать программу, которая меняет шлюз сети по умолчанию время от времени. Но кажется, что в таблице маршрутов в каждом процессе есть кеши, поэтому я не могу точно контролировать поведение сети. Могу ли я просто сбросить таблицу маршрутов для этого процесса?

Например, если я сначала выполнил Iexplore.exe, а затем изменил шлюз по умолчанию на корейский vpn, IE все равно перешел на шлюз по умолчанию amercia. Но если сначала изменить шлюз по умолчанию, а затем запустить Iexplore.exe, он перейдет в Корею.

Итак, как я могу очистить кеш таблицы маршрутов? Спасибо.


Из командной строки при запуске администратора:

  netsh interface ip delete destinationcache  

Работает на Win7.


4

route -f вызывает повреждение. Поэтому нам нужно либо отключить правильные части таблицы маршрутизации, либо выяснить, как ее перестроить.

Улучшите этот ответ
ответил 25 июля ’13 в 14:28
  • Если у нас есть DHCP, предоставляющий правильные маршруты, тогда все в порядке. Я использовал это и повторно подключил свои проводные и беспроводные сети, и все в порядке. — Пол Стелиан, 29 окт., В 10:11
  • route -f очень опасен, если ваша виртуальная машина находится в облаке, вы потеряете весь возможный доступ, если не восстановите резервную копию. — Anass Kartit 18 ноя, в 19:50
добавить комментарий |

route -f вызывает повреждение. Поэтому нам нужно либо отключить правильные части таблицы маршрутизации, либо выяснить, как ее восстановить.


3

Вы можете открыть командную строку и выполнить

  печать маршрута  

и посмотрите текущую таблицу маршрутизации.

Вы можете изменить его

  route add dddd mask mmmm gggg route delete dddd mask mmmm gggg route change dddd mask mmmm gggg   

Кажется, они работают

Я запускаю команду ping dddd -t, измените маршрут, и он изменится. (мой тест включал маршрутизацию на мертвый маршрут и пинг остановлен)

Улучшите этот ответ
отредактировано 7 декабря ’16 в 13:47
samis
5,65666 золотых знаков2828 серебряных знаков6363 бронзовых знака
ответил 25 июля ’13 в 16:09
добавить комментарий |

Вы можете открыть командную строку и выполнить

  печать маршрута  

и просмотрите вашу текущую таблицу маршрутизации.

Вы можете изменить ее

  route add dddd mask mmmm gggg route delete dddd mask  mmmm gggg route change dddd mask mmmm gggg  

похоже, они работают

Я запускаю команду ping dddd -t change the route, и он меняется. (мой тест включал маршрутизацию на мертвый маршрут и пинг остановлен)


0

В Microsoft Windows вы можете выполнить route -f , чтобы удалить текущий шлюз, отметьте route/? для дополнительных опций, таких как добавление/удаление и т. д., а также можете написать пакет для добавления маршрута в определенное время также, но если вам нужно удалить IP-кеш, вы можете использовать команду arp .

Улучшите этот ответ
отредактировано 18 ноября ’14 в 10:08
Flexo ♦
80.6k2222 золотых знака173173 серебряных знака253253 бронзовых значки
ответил 16 марта ’12 в 16:16
  • 7
    Команда route -f приводит к безвозвратной потере шлюза. Вы обязательно должны включить это в свой ответ. — mavrosxristoforos 26 мая ’14 в 8:32
добавить комментарий |

В Microsoft Windows вы можете выполнить команду route -f , чтобы удалить текущий шлюз, проверьте route/? для дополнительных опций, таких как добавление/удаление и т. д., а также можете написать пакет для добавления маршрута в определенное время, но если вам нужно удалить IP-кеш, тогда у вас есть возможность использовать команду arp .



Очистить все и только постоянные (статические) маршруты в Windows

Есть ли простой способ сделать это с помощью команды/пакета оболочки? VBScript также подойдет.


9

Чтобы очистить все маршруты, используйте:

 route -f 

Чтобы очистить только постоянные маршруты, вы можете использовать

 reg delete HKLM  SYSTEM  CurrentControlSet  Services  Tcpip   Parameters  PersistentRoutes/va/f 

, но это не удалит их из текущих активных маршрутов.

Улучшите этот ответ
отредактировано 9 октября 2009 г. в 12:53
ответил 09 окт. 2009 в 12:39
  • У меня есть множество постоянных маршрутов, но я не вижу их в этом regkey. Хранятся ли они где-нибудь в наши дни (Windows 10)? — NickG 28 марта ’18, 15:00
  • @NickG: Не уверен. Вы говорите о маршрутах IPv4 или IPv6? — user1686 28 марта ’18 в 15:07
  • @ user1686 route -f не должен запускаться удаленно. И после этого компьютер/сервер необходимо перезагрузить. — SebMa, 7 дек. ’20 в 16:16
  • @SebMa: Он очищает все маршруты, чего вы ожидали? — user1686 07 дек. ’20 в 16:19
добавить комментарий |

Чтобы очистить все маршруты, используйте:

 route -f 

Чтобы очистить только постоянные маршруты, вы можете использовать

 reg delete HKLM  SYSTEM  CurrentControlSet  Services  Tcpip  Parameters  PersistentRoutes/va/f 

, но это не удалит их из текущие активные маршруты.


1

Вот cmd-скрипт, который извлекает статические маршруты из реестра и выдает команды route delete для каждого из них.

Этот метод удаляет их как из сохраненного списка постоянных маршрутов, так и из активных в данный момент маршруты.

Он также удаляет маршрут по умолчанию, если он найден в реестре:

  @echo offset key = HKLM  SYSTEM  CurrentControlSet  Services   Tcpip  Parameters  PersistentRoutesfor/f "tokens = 1,2,3, * delims =," %% i in ('reg query% key% ^ | find "REG_SZ"') do (route delete %% i mask%  % j %% k)  

Чтобы предотвратить удаление маршрута по умолчанию, вы можете ввести следующее:

  @echo offset key =  HKLM  SYSTEM  CurrentControlSet  Services  Tcpip  Parameters  PersistentRoutesfor/f "tokens = 1,2,3, * delims =," %% i in ('reg query% key% ^ | find/v "0.0.0.0,  0,0.0. 0 "^ | find" REG_SZ "') do (route delete %% i mask %% j %% k)  

Улучшите этот ответ
отредактировано 9 декабря ’20 в 10:56
SebMa
21311 серебряных знаков88 бронзовых знаков
ответил 03 февраля ’16 в 10:48
добавить комментарий |

Вот cmd-скрипт, который извлекает статические маршруты из реестра и выдает команды route delete для каждого из них.

Этот метод удаляет их как из сохраненного списка постоянных маршрутов, так и из текущих активных маршрутов.

Он также удаляет маршрут по умолчанию, если он найден в реестре:

  @ ключ смещения эха = HKLM  SYSTEM  CurrentControlSet  Se  rvices  Tcpip  Parameters  PersistentRoutesfor/f "tokens = 1,2,3, * delims =," %% i in ('reg query% key% ^ |  find "REG_SZ" ') do (route delete %% i mask %% j %% k)  

Чтобы предотвратить удаление маршрута по умолчанию, вы можете ввести следующее:

  @echo offset key = HKLM  SYSTEM  CurrentControlSet  Services  Tcpip  Parameters  PersistentRoutesfor/f "tokens = 1,2,3, * delims =," %% i in ('  reg query% key% ^ | find/v "0.0.0.0,0.0.0.0" ^ | find "REG_SZ" ') do (route delete %% i mask %% j %% k)  

0

Это можно сделать как базовый цикл for, позволяющий вы, чтобы правильно очистить маршруты для существующих и будущих маршрутов.

(И без участия в просмотре или редактировании каких-либо элементов реестра) с помощью простой печати маршрута, переданного в поиск и зацикленного в удалении маршрута .

  FOR/F "TOKENS = 1-5"% a IN ('ROUTE PRINT ^ | FIND/I/V "On-Link" ^ | FINDSTR/E/ R/C: "* . [0-9] * [0-9] * [0-9] [0-9] *" ') DO @ (IF/I "% ~ e" EQU "" (МАРШРУТ  УДАЛИТЬ% a МАСКУ% b% c))  

Улучшить этот ответ
ответил 15 июня ’18 в 22: 162018-06-15 22:16
добавить комментарий |

Это можно сделать как базовый цикл for, позволяющий правильно очищать маршруты для существующих и будущих маршрутов.

(И без участия в просмотре или редактировании каких-либо элементов реестра) с помощью простой печати маршрута, переданного в поиск и зацикленного в маршруте удаления.

  FOR/F "TOKENS = 1-5"% a IN ('ROUTE PRINT ^ | FIND/I/V "On-Link" ^ | FINDSTR/E/R /C: "* . [0-9] * [0-9] * [0-9] [0-9] *" ') DO @ (IF/I "% ~ e" EQU "" (УДАЛЕНИЕ МАРШРУТА  % a МАСКА% b% c))  

0

Чтобы удалить все постоянные маршруты IPv4, кроме маршрута по умолчанию:

  for/f "skip = 3 tokens = 4,6"% e in ('netsh  int ipv4 sh route store ^ = persistent ^ | findstr -v 0.0.0.0/0 ') do route delete -4 -p% e% f  

Для удаления всех постоянных маршрутов IPv6 кроме маршрута по умолчанию:

  for/f "skip = 3 tokens = 4,6"% e in ('netsh int ipv6 sh route store ^ = persistent ^ | findstr -  v ::/0 ') удалить маршрут -6 -p% e% f  

Улучшите этот ответ
отредактировано 13 января в 12:49
ответил 13 января в 12:38
добавить комментарий |

Чтобы удалить все постоянные маршруты IPv4, кроме маршрута по умолчанию:

  для/f  "skip = 3 tokens = 4,6"% e in ('netsh int ipv4 sh route store ^ = persistent ^ | findstr -v 0.0.0.0/0') do route delete -4 -p% e% f  

Чтобы удалить все постоянные маршруты IPv6, кроме маршрута по умолчанию:

  for/f "skip = 3 tokens = 4,6"% e  in ('netsh int ipv6 sh route store ^ = persistent ^ | findstr -v ::/0') do route delete -6 -p% e% f  

Оцените статью
logicle.ru
Добавить комментарий