Изменить таблицу маршрутизации linux

Маршрутизация в Linux

Linux предоставляет большой набор функций для маршрутизации и инструменты для ее настройки. Ядро 2.6.x поддерживает:

  • Простую статическую маршрутизацию.
  • Equal Cost Multi Path маршруты (маршруты до одной сети с одинаковым весом, которые выбираются с равной вероятностью).
  • Blackhole-маршруты.
  • Множественные таблицы маршрутизации.
  • Policy Based Routing

[править] Команды

Для управления маршрутизацией применяются следующие команды: route, netstat, ip (последняя из пакета iproute2, возможно его придется установить).

Просмотреть таблицу можно следующими способами:

route -n (устаревшее) netstat -rn ip route show cat /proc/net/route

При этом следует учитывать, что доступ ко всем возможностям дает только ip. Используя route вы не только не сможете настроить «продвинутые» функции вроде политик маршрутизации, но и не увидите их существование в выводе команды просмотра, если они уже настроены в системе. Поэтому следует по возможности использовать ip.

Модификация таблицы маршрутизации:

[править] Использование route

Добавление маршрута через шлюз: route add -net 192.168.0.0/16 gw 10.0.0.1 Добавление маршрута через интерфейс: route add -net 192.168.0.0/16 dev eth1 Маршрут до отдельного хоста: route add -host 192.168.0.1 gw 172.16.0.1 Удаление маршрута: route del . 

[править] Использование ip

Синтаксис ip по структуре напоминает синтаксис Cisco IOS. Любые опции могут быть сокращены до потери двусмысленности, например «ip ro ad» вместо «ip route add».

Добавление маршрута через шлюз: ip route add 172.16.10.0/24 via 192.168.1.1 Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0 Маршрут с метрикой: ip route add 172.16.10.0/24 dev eth0 metric 100 

Командой вида ip route add blackhole 10.56.50.0/27 можно добавить «зануленный» маршрут (аналог «ip route . null0» в Cisco). Пакеты в сеть с таким маршрутом будут удалены с причиной «No route to host». Может быть полезно для подавление DoS-атаки с хоста или иных подобных случаев.

Читайте также:  Kali linux поверх windows 10

[править] Действия с маршрутами

Кроме add также поддерживаются и другие действия:

  • del — удалить маршрут.
  • replace — заменить маршрут другим.
  • change — изменить параметры маршрута.

[править] Equal Cost Multi Path

Если добавить два маршрута до одной и той же сети с одинаковой метрикой, ядро начнет распределять нагрузку между ними путем выбора того или другого с равной вероятностью. Работает и для более чем двух маршрутов. Предупреждение: это может вызвать проблемы со входящими соединениями, потому что иногда ответ может пойти по другому маршруту, чем пришел запрос. Будьте осторожны.

ip route add default dev eth0 ip route add default dev eth1

[править] IPv6

Настройка маршрутизации IPv6 почти идентична настройке для IPv4.

ip route add ::/0 via 2001:db8:dead:beef::1/64

В некоторых дистрибутивах еще есть нерешенная проблема с маршрутом по умолчанию (например, старые версии RHEL), используйте

[править] Просмотр маршрутов до определенной сети

На маршрутизаторах с длинной таблицей может быть неудобно просматривать вывод «ip route show» в поисках нужного маршрута. В этом случае можно использовать команду вида:

которая выведет маршруты только до указанной сети.

[править] Пересылка пакетов между интерфейсами

Linux позволяет разрешить или запретить пересылку пакетов между интерфейсами (forwarding). На рабочих станциях и серверах приложений ее можно запретить, на маршрутизаторах или межсетевых экранах она, очевидно, должна быть разрешена.

За этот параметр для IPv4 отвечает переменная net.ipv4.ip_forward (1 = «разрешить», 0 = «запретить»).

cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward

Для IPv6 используйте net.ipv6.conf.all.forwarding

cat /proc/sys/net/ipv6/conf/all/forwarding echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Чтобы настройки сохранились после перезагрузки, пропишите значения net.ipv4.ip_forward и net.ipv6.conf.all.forwarding в /etc/sysctl.conf.

[править] Конфигурационные файлы

Настройки статической маршрутизации находятся в различных файлах, в зависимости от дистрибутива.

  • Debian GNU/Linux: /etc/network/interfaces
  • RHEL/CentOS/Scientifix: etc/sysconfig/network-scripts/route-
  • Gentoo: /etc/conf.d/net

(добавьте свои дистрибутивы, пожалуйста)

[править] Policy routing

ip route add default via 10.0.1.2 ip rule add from 192.168.1.1 lookup 3 ip route add default via 10.0.3.4 table 3

Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3), не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.

Все будут ходить через шлюз 10.0.1.2, а 192.168.1.1 — через 10.0.3.4.

[править] Демоны динамической маршрутизации

[править] Дополнительная информация

[править] Примечания

Основные понятия
Сетевой интерфейс | IP | IP-адрес | Маска подсети | Широковещательный адрес | Маршрут | IPv6
Маршрутизация | Форвардинг | Таблица маршрутизации | Шлюз по умолчанию
Маршрутизация в Linux | Маршрутизация в FreeBSD | Маршрутизация в Cisco

Источник

Настройка сетевых маршрутов в Linux (CentOS)

date

13.04.2020

user

VyacheslavK

directory

CentOS, Linux

comments

Один комментарий

В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).

Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту ip , а не route . Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.

Просмотр таблицы маршрутизации в Linux

Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:

вывести таблицу маршрутизации в linux centos ip router

  • 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 .

добавление маршрута в centos

Также можно добавить отдельный маршрут для одного 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

Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.

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

удалить маршрут из таблицы маршрутизации в linux centos

Как видите, маршрут удален из таблицы маршрутизации.

Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).

Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:

В моем случае, интерфейс enp0s3.

сетевые интерфейсы в centos

Далее открываем следующий файл:

И добавляем туда строку с маршрутом:

После добавления маршрута в файл нужно перезапустить сервис network:

добавить постоянный (persistent) маршрут в centos linux

После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.

Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:

И укажите команду добавления маршрута:

# ip route add 192.168.0.0/24 via 192.168.1.1

добавление persistent маршрута через rc.local

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

Изменить маршрут в Linux

Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:

# ip route replace 192.168.0.0/24 via 192.168.1.1

изменитть маршрут ip route replace

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

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

ip route replace default

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Источник

Оцените статью
Adblock
detector