В этой статье я расскажу, как очистить таблицу маршрутизации в Linux с помощью команд терминала.
Таблица маршрутизации в компьютерных сетях – это таблица данных, которая хранится на маршрутизаторе или сетевом сервере, который перечисляет маршруты к конкретным сетевым адресам.
Обычно каждый статический маршрут имеет связанную с ним метрику.
Эта метрика используется сетевыми устройствами для определения маршрута, который должен быть выбран для пакетов, предназначенных для конкретной сети.
Говоря в контексте Linux, они также поддерживают таблицу маршрутизации, в основном, когда сервер имеет более одного активного сетевого интерфейса.
В какой-то момент вам может понадобиться очистить таблицу маршрутизации или обновить ее, чтобы вы могли получить доступ к некоторым сетям.
Сеть (сети) может быть локальной в вашей организации или где используется обход общего интернета.
Большинство дистрибутивов Linux предоставляют два основных инструмента, используемых для этой задачи: инструменты ip и route.
Очистить таблицу маршрутизации с помощью команды ip
ip – это инструмент командной строки Unix / Linux, используемый для отображения и управления маршрутизацией, сетевыми устройствами, интерфейсами и туннелями.
Это замена обычно используемого инструмента ifconfig.
Этот инструмент может выполнять практически все виды сетевых конфигураций Linux для интерфейса.
Прежде чем очищать любые маршруты, сначала вам нужно проверить текущую таблицу маршрутизации, используя команду :
$ ip route default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600 192.168.0.0/24 dev wlp1s0 proto kernel scope link src 192.168.0.16 metric 600
Как вы можете видеть из моего вывода, мой маршрут по умолчанию установлен в 192.168.0.1.
Это означает, что все пакеты, предназначенные для сетей, отличных от моей локальной подсети 192.168.0.0/24, будут перенаправлены через 192.168.0.1.
Этот IP 192.168.0.1 предназначен для моего маршрутизатора.
Для демонстрационных целей я собираюсь запустить службу Docker на своем ноутбуке.
Docker имеет свою собственную подсеть. мы будем использовать это, чтобы продемонстрировать использование команды ip.
$ sudo systemctl start docker $ ip route default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 192.168.0.0/24 dev wlp1s0 proto kernel scope link src 192.168.0.16 metric 600
Очистить определенный маршрут
Теперь у меня есть другой маршрут для подсети 172.17.0.0/16 через 172.17.0.1.
Если я хочу очистить этот маршрут, я буду использовать такую команду:
$ sudo ip route flush 172.17.0.0/16 $ ip route default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600 192.168.0.0/24 dev wlp1s0 proto kernel scope link src 192.168.0.16 metric 600 $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp1s0 192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp1s0
Вы можете подтвердить, что маршрут удален из таблицы маршрутизации.
Очистить все маршруты
Чтобы очистить все маршруты в таблицах маршрутизации, используются параметры ip-команды route flush table main.
Полные команды:
$ sudo ip route flush table main $ ip route show
Повторная проверка таблицы маршрутизации должна быть пустой.
Эту команду следует использовать с осторожностью, так как она может выбить вас из сервера, если вы не находитесь на прямом подключении или не имеете других методов доступа, таких как консоль, модем и т.д.
Очистить кеш маршрутизации
Ядро Linux обычно ссылается на кеш маршрутизации перед извлечением нового маршрута из таблиц маршрутизации.
Этот кеш можно очистить с помощью команды:
$ sudo ip route flush cache
Подтвердите все доступные кешированные маршруты:
$ sudo ip route show cache
Отображение статистики из кеша маршрутизации
Если вы хотите получить дополнительную информацию о кешированных маршрутах. используйте команды:
$ sudo ip -s route show cache
Дается дополнительная информация, такая как поле «used», которое указывает количество обращений к этому маршруту в кеше маршрутизации.
Для постоянного статического маршрута вы можете размещать маршруты в любом из следующих файлов:
/etc/sysconfig/static-routes or /etc/sysconfig/network-scripts/route-<interface> # Red Hat and its derivatives - CentOS, Fedora e.t.c /etc/network/interfaces # Debian and its derivatives
Примером постоянных маршрутов для CentOS 7 является:
# cat /etc/sysconfig/network-scripts/route-eth0 GATEWAY0=192.168.1.254 NETMASK0=255.255.255.0 ADDRESS0=192.168.5.0 GATEWAY1=10.10.10.1 NETMASK1= 255.255.255.240 ADDRESS1=10.164.234.132
Строка на Ubuntu / Debian будет выглядеть следующим образом:
up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.1.254 down route del -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.1.254