- Как очистить таблицу маршрутизации от кеша в Linux
- Обновите таблицу маршрутизации с помощью команды ip
- Промыть определенный маршрут
- Сбросить все маршруты
- Очистить кеш маршрутов
- Отображать статистику в кэше маршрутов
- Также читайте:
- Настройка сетевых маршрутов в Linux (CentOS)
- Просмотр таблицы маршрутизации в Linux
- Как добавить или удалить статический маршрут?
- Изменить маршрут в Linux
- Изменить маршрут по умолчанию
Как очистить таблицу маршрутизации от кеша в Linux
В этой статье я покажу, как обновить таблицу маршрутизации в Linux с помощью команд терминала. Таблица маршрутизации в компьютерной сети — это таблица данных, хранящаяся на маршрутизаторе или сетевом сервере, в которой перечислены маршруты к определенным сетевым адресатам. Как правило, с каждым статическим маршрутом связана метрика. Сетевые устройства используют эту метрику, чтобы определить, какой маршрут выбрать для пакетов, предназначенных для конкретной сети. Говоря в контексте системы Linux, они также поддерживают таблицу маршрутизации, в основном, если сервер имеет несколько активных сетевых интерфейсов.
В какой-то момент вам может понадобиться обновить или обновить таблицу маршрутизации, чтобы вы могли получить доступ к определенным сетям. Сеть может быть локальной в вашей организации или проходить через общедоступный Интернет. Большинство дистрибутивов Linux предоставляют два основных инструмента для этой задачи, а именно ip,И инструменты командной строки маршрутизации.
Обновите таблицу маршрутизации с помощью команды 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. Это означает, что все пакеты, предназначенные для сетей, отличных от моей локальной подсети 92.168.0.0/24, будут пересылаться через 192.168.0.1. Этот IP 192.168.0.1 используется для моего маршрутизатора.
В демонстрационных целях я запущу службу докера на своем ноутбуке. Докер имеет свою подсеть. Мы будем использовать его для демонстрации использования команды 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 -s route show cache
Другая информация, такая как«использовал»Дано поле, указывающее количество посещений этого маршрута в кэше маршрутов.
Для постоянного статического маршрута вы можете поместить маршрут в любой из следующих файлов:
/etc/sysconfig/static-routes or /etc/sysconfig/network-scripts/route-# 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
Пожалуйста, дайте нам знать ваши комментарии к этой статье.
Также читайте:
- Как использовать IP-команды в Linux на примере
- Как использовать команду Linux Route Add
Настройка сетевых маршрутов в Linux (CentOS)
13.04.2020
VyacheslavK
CentOS, Linux
Один комментарий
В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).
Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту ip , а не route . Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.
Просмотр таблицы маршрутизации в Linux
Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:
- default via 192.168.1.1 dev enp0s3 – шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию)
- 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 — статический маршрут для сети 192.168.1.0/24 через адрес 192.168.1.201, который прописан на интерфейсе
- proto kernel – маршрут создан ядром ( proto static – маршрут добавлен администратором)
- metric – приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.
Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:
192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201
Вы можете использовать ваш Linux сервер с двумя и более интерфейсами как маршрутизатор или интернет-шлюз. Чтобы разрешить маршрутизацию пакетов между несколькими интерфейсами, нужно включить параметр ядра net.ipv4.ip_forward = 1.
Как добавить или удалить статический маршрут?
Чтобы добавить новый маршрут к определенной IP подсети в таблицу маршрутизации Linux, нужно выполнить следующую команду:
# ip route add 192.168.0.0/24 via 192.168.1.1
Таким образом, мы добавим маршрут для IP сети 192.168.0.0/24 через шлюз 192.168.1.1.
Формат команды ip route очень похоже на синтаксис в Cisco IOS. Здесь также можно исопльзовать сокращений, например вместо ip route add можно написать ip pro ad .
Также можно добавить отдельный маршрут для одного IP адреса (хоста):
# ip route add 192.168.1.0 via 192.168.1.1
Можно сделать аналог null route маршрута в Cisco (ip route null0), пакеты в такую сеть удаляются по причине No route to host:
# ip route add blackhole 10.1.20.0/24
Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.
Чтобы удалить созданный вручную маршрут, выполните:
Как видите, маршрут удален из таблицы маршрутизации.
Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).
Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:
В моем случае, интерфейс enp0s3.
Далее открываем следующий файл:
И добавляем туда строку с маршрутом:
После добавления маршрута в файл нужно перезапустить сервис network:
После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.
Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:
И укажите команду добавления маршрута:
# ip route add 192.168.0.0/24 via 192.168.1.1
Теперь, если ваш сервер будет перезагружен, маршрут пропишется автоматически при загрузке системы.
Изменить маршрут в Linux
Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1
Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
Restarting network (via systemctl): [ OK ]
default via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100
Изменить маршрут по умолчанию
Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:
# ip route del default via 192.168.1.1 dev enp0s3
Чтобы указать новый маршрут по-умолчанию в CentOS используется команда:
# ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза)
# ip route add default via enp0s3 (маршрут через имя устройства)
Чтобы изменить параметры маршрута по умолчанию, используется команда:
# ip route replace default via 192.168.1.2
Предыдущая статья Следующая статья