Route add постоянный маршрут linux: Как добавить маршрут в linux (static routes)
Как добавить маршрут в linux (static routes)
Как добавить маршрут в linux (static routes)
Добавить маршрут можно используя route или через ip ro. Он будет сохранен до следующей перезагрузки
синтаксис route
route add [-net|-host] <IP/Net> netmask gw <Gateway IP> dev <Int>X
Пример:
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.1
route add -net 192.168.2.0/24 gw 192.168.0.1
route add -host 192.168.3.158 gw 192.168.0.1
синтаксис ip ro
ip route add <IP/Net> via <Gateway IP>
Все параметры можно посмотреть ip route help
Пример:
ip ro add 192.168.2.0/24 via 192.168.0.1
ip ro add 192.168.3.159/32 via 192.168.0.1
примечание: в команде ip можно использовать сокращенный синтаксис ip ro … в место ip route …
Для удаления статического маршрута используйте del вместо add
Как сохранить статический маршрут
Все эти маршруты будут добавлены в память и сохранятся до перезагрузки. Если необходимо, загружать маршруты при загрузки системы, то необходимо добавить их в файл конфигурации интерфейсов (для ubuntu и debian). /etc/network/interfaces
Добавим в конец файла следующую сточку:
up ip ro add 192.168.2.0/24 via 192.168.0.1
пример файла конфигурации.
root@linux:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 172.16.0.69
netmask 255.255.255.0
network 172.16.0.0
broadcast 172.16.0.255
gateway 172.16.0.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 172.16.0.1 172.16.0.3
#static route
up ip ro add 192.168.0.0/16 via 172.16.0.2
Как посмотреть маршруты в системе
root@linux:~# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 172.16.0.2 255.255.0.0 UG 0 0 0 eth0
root@linux:~# ip ro sh
default via 172.16.0.1 dev eth0
172.16.0.0/24 dev eth0 proto kernel scope link src 172.16.0.69
192.168.0.0/16 via 172.16.0.2 dev eth0
Как добавить статические маршруты (routes) в Ubuntu
Добаление маршрута в linux (static routes)
В память можно добавить маршрут используя route или через ip ro
синтаксис route
route add [-net|-host] <IP/Net> netmask gw <Gateway IP> dev <Int>X
Пример:
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.1 route add -net 192.168.2.0/24 gw 192.168.0.1 route add -host 192.168.3.158 gw 192.168.0.1
синтаксис ip ro
ip route add <IP/Net> via <Gateway IP>
Все параметры можно посмотреть ip route help
Пример:
ip ro add 192.168.2.0/24 via 192.168.0.1 ip ro add 192.168.3.159/32 via 192.168.0.1
примечание: в команде ip можно использовать сокращенный синтаксис ip ro … в место ip route …
Для удаления статического маршрута используйте del вместо add
Как сохранить статический маршрут
Все эти маршруты будут добавлены в память и сохранятся до перезагрузки. Если необходимо, загружать маршруты при загрузки системы, то необходимо добавить их в файл конфигурации интерфейсов (для ubuntu и debian). /etc/network/interfaces
Добавим в конец файла следующую сточку:
up ip ro add 192.168.2.0/24 via 192.168.0.1
пример файла конфигурации.
root@linux:~# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 172.16.0.69 netmask 255.255.255.0 network 172.16.0.0 broadcast 172.16.0.255 gateway 172.16.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 172.16.0.1 172.16.0.3 #static route up ip ro add 192.168.0.0/16 via 172.16.0.2
Как посмотреть маршруты в системе
root@linux:~# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0 172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.0.0 172.16.0.2 255.255.0.0 UG 0 0 0 eth0
root@linux:~# ip ro sh default via 172.16.0.1 dev eth0 172.16.0.0/24 dev eth0 proto kernel scope link src 172.16.0.69 192.168.0.0/16 via 172.16.0.2 dev eth0
Сохранить статический маршрут в CentOS (Redhat)
- Необходимо отредактировать (если нет создать) файл
/etc/sysconfig/network-scripts/route-ethX — ethX заменить на номер интерфейса (eth0, eth2 …)
добавить следующие строки:GATEWAY0=X.X.X.X NETMASK0=X.X.X.X ADDRESS0=X.X.X.X GATEWAY1= NETMASK1= ADDRESS1=
X.X.X.X — заменить на нужные значения
- Другой вариант добавить маршруты в файл /etc/sysconfig/static-routes. Если нет этого файла — необходимо создать.
Пример содержания фала:
any net 192.168.10.0 netmask 255.255.255.0 gw 192.168.10.1 eth0 any net 10.0.0.0 netmask 255.0.0.0 gw 10.0.0.1 eth0
PS: Если маршрутов много или ими нужно управлять (добавлять или удалять) то лучше для этого использовать демон статической маршрутизации
Вам помогла эта статья, не забудьте сказать «спасибо» для благодарности используется вертикальная и горизонтальная реклама на сайте.
Маршрутизация в Linux | Losst
Эта статья одна из статей про работу сетей в Linux. Вы уже знаете, что все данные в сети передаются в виде пакетов, а чтобы компьютер знал куда нужно отправить тот или иной пакет используются IP адреса. Но пакету, перед тем, как он достигнет точки назначения нужно пройти множество компьютеров и маршрутизаторов.
Каждому из маршрутизаторов нужно знать на какой компьютер передавать пакет дальше. Именно это мы и обсудим в этой статье. Сегодня нас будет интересовать маршрутизация в Linux, как это работает, как настроить правила и заставить все работать как нужно.
Содержание статьи:
Сетевые маршруты в Linux
Как я уже сказал, сетевые маршруты необходимы чтобы компьютеры могли определить по какой цепочке должен пойти пакет, чтобы достигнуть цели. Маршруты можно настроить на уровне интерфейса или маршрутизатора.
Когда компьютеру нужно отправить пакет в сеть он смотрит таблицу маршрутизации, в ней указанны ip адреса пунктов назначения и адреса интерфейсов и роутеров в домашней сети, которые могут отправить пакет по нужному адресу. Если для цели маршрут не указан то используется так называемый шлюз по умолчанию или маршрут по умолчанию. Точно такая же картина наблюдается на роутере. Устройство смотрит на IP адрес назначения и сверяет его со своей таблицей маршрутизации, а потом отправляет дальше.
Ниже мы рассмотрим как проверить текущие маршруты в системе, а также как настроить новые.
Как посмотреть таблицу маршрутизации
Перед тем как что-либо менять, нужно понять какие правила уже используются. В Linux для этого существует несколько команд. Чтобы посмотреть таблицу маршрутизации можно использовать команду route:
route
Вот так выглядит таблица маршрутизации linux. Тут выводится достаточно простая информация, которой не всегда достаточно чтобы понять суть дела. Более подробно можно посмотреть с помощью команды routel:
routel
Тут вы уже можете видеть IP адрес цели (target), IP адрес шлюза (gateway), IP отправителя (source), протокол, и даже сетевой интерфейс. Но самый удобный способ посмотреть таблицу маршрутизации linux — это команда ip:
ip route
Вывод похож на результат предыдущей команды, но выглядит не совсем привычно, это потому, что вывод команды можно использовать в качестве аргумента для ip route add или ip route del. Это очень удобно. Как вы видите, в качестве шлюза по умолчанию везде используется 192.168.1.1. Рассмотрим подробнее что означает вывод этой команды:
- default — в данной строке означает вариант по умолчанию. Здесь должен быть ip адрес цели или маска подсети;
- via 192.168.1.1 — указывает через какой шлюз мы можем добраться до этой цели, у нас это 192.168.1.1;
- dev enp2s0 — сетевой интерфейс, с помощью которого будет доступен этот шлюз;
- proto static — означает, что маршрут был установлен администратором, значение kernel значит что он был установлен ядром;
- metric — это приоритет маршрута, чем меньше значение — тем выше приоритет.
А теперь рассмотрим выполняется настройка маршрутов Linux.
Настройка маршрутов в Linux
Вы можете настраивать таблицу маршрутизации с помощью команды ip. Например, чтобы изменить маршрут по умолчанию достаточно выполнить:
ip route add default via 192.168.1.1
Так вы можете добавить маршрут для любого IP адреса, например, для 243.143.5.25:
sudo ip route add 243.143.5.25 via 192.168.1.1
Все очень просто, сначала указывается IP адрес цели, а затем шлюз в локальной сети, через который можно достичь этого адреса. Но такие маршруты будут активны только до перезагрузки, после перезагрузки компьютера они будут автоматически удалены. Чтобы маршруты сохранились их нужно добавить в файл конфигурации.
В операционных системах семейства Red Hat используются конфигурационные файлы /etc/sysconfig/network-scripts/route-ethX. Каждый файл может описывать несколько маршрутов, например:
GATEWAY=10.10.0.1
NETMASK=255.0.0.0
IPADDR=10.10.0.22
Здесь gateway — шлюз по умолчанию для этого интерфейса, netmask — маска сети, а ipaddr — ip адрес интерфейса. В Debian и основанных на нем дистрибутивах можно настроить маршруты в файле /etc/network/interfaces. Здесь команда route добавляется в секцию iface. Например:
up route add -net 10.10.0.0 netmask 255.0.0.0 gw 10.10.0.1
С помощью опции -net мы указываем целевую сеть, netmask — это маска сети, а gw — шлюз. Все очень просто. Теперь добавленные маршруты останутся даже после перезагрузки.
Выводы
В этой небольшой статье мы кратко рассмотрели как работает маршрутизация в Linux, как выполняется настройка маршрутизации в linux, а также зачем это нужно. Надеюсь, эта информация была полезной для вас.
Настройка сетевой маршрутизации Linux – команда route
Для определения и задания маршрутов в сетях существуют динамическая и статическая маршрутизации. В первом случае маршруты задаются специальным демоном маршрутизации, который модифицирует соответствующим образом таблицу маршрутизации ядра. Во втором случае маршруты задаются администратором/пользователем при помощи команды route. Маршруты, заданные командой route не изменяются, даже если включена динамическая маршрутизация.
Как работает маршрутизация?
Прежде всего нужно понимать, что процессы маршрутизации осуществляются на сетевом уровне. Для каждого пакета проводится сравнение его целевого IP-адреса с записями в таблице маршрутизации. Когда обнаруживается хотя бы частичное соответствие с одним из шлюзов в таблице, пакет направляется к следующему узлу (шлюзу), соответствующему найденному маршруту. И здесь может возникать несколько ситуаций:
Первая — когда, например, пакет адресуется компьютеру, находящемуся в той же сети, что и источник пакета, а точнее сказать — его отправитель. В данной ситуации для такого пакета следующим шлюзом является один из локальных интерфейсов и он (пакет) отправляется сразу к адресату. Такие «явные» и «короткие» шлюзы обычно задаются во время конфигурирования сетевых интерфейсов — командой ifconfig.
Вторая — когда адрес назначения пакта не соответствует ни одному шлюзу в таблице маршрутизации. В таком случае, во избежание коллизий в сети и её чрезмерной нагрузки должен быть задействован шлюз по-умолчанию. Другими словами, это такой маршрут, который указывает системному ядру: все остальные пакеты (без соответствий в таблице маршрутов) направляй сюда. Если шлюз по-умолчанию не будет предусмотрен, то отправляющей стороне посылается сообщение о недостижимости сети или узла.
Как правило, локальные сети имеют единственный шлюз во внешнюю среду, например в Интернет. В свою очередь, в сети Интернет таких «стандартных маршрутов» не существует.
Синтаксис и основные опции
Основное назначение команды route – добавление и удаление сетевых маршрутов для системного ядра, а также просмотр содержимого таблицы маршрутизации. Эта команда, хотя и работает в разных UNIX-подобных системах одинаково, однако имеет резко отличающийся синтаксис в зависимости от используемой системы.
В общем случае прототипом команды route является следующая запись:
route add [-net|-host] <IP/Net> netmask gw <Gateway IP> dev <Int>X
Например:
$ route add -net 127.0.0.0 netmask 255.0.0.0 metric 1024 dev lo
Эта команда добавит шлюз с обратной связью через виртуальное устройство lo, которое используется для этой цели в Linux-системах. Опции -net и -host используются для указания адреса, характеризующего либо сеть, либо узел соответственно как пункты назначения. Для определения подсети служит опция netmask, для задания приоритета шлюза — опция metric. Сетевой интерфейс обозначается опцией dev. Кроме описанных выше для команды route также существуют и другие используемые ей опции, которые приведены в следующей таблице:
Опция | Назначение |
del | Удаление маршрута |
gw | Шлюз, через который должны достигаться сеть или узел. Задаётся в виде имени узла или точечной записи адреса. |
mss | Устанавливает значение MTU (максимальную величину пакета) в байтах. |
window | Устанавливает размер TCP-окна для задаваемого шлюза в байтах. Обычно используется в сетях AX.25. |
irtt | Устанавливает начальное время отклика для TCP-соединений по данному маршруту в миллисекундах. |
reject | Задаёт блокирующий маршрут, который должен приводить к остановке процедуры поиска маршрутов. Полезно при скрытии сетей для использования в них шлюз по-умолчанию. |
-F | Заставляет работать с таблицей маршрутизации ядра. Эта опция в большинстве систем используется по-умолчанию, поэтому часто опускается. |
-C | Заставляет работать с кэшем маршрутизации ядра. |
-v | Включает подробный режим работы команды route. |
-n | Использование числового формата адресов вместо попыток определения символьных наименований узлов. Можно использовать в случае определения проблем с соединениями к DNS. |
-e | Использовать формат вывода команды netstat для отображения содержимого таблицы маршрутов. Опция -ee сгенерирует самый подробный отчёт с полными наименованиями параметров таблицы маршрутов. |
Примеры использования
Определить маршрут к сети, которая должна быть достигнута через сетевой интерфейс eth0:
$ ifconfig eth0 nodeone netmask 255.255.255.0
$ route add -net 192.168.1.0
Здесь для команды route не указывается сам интерфейс, поскольку предполагается, что узлу nodeone соответствует адрес 192.168.1.2. Далее, route «узнаёт», что маршрут нужно проложить именно через eth0 благодаря тому, что системное ядро анализирует все доступные интерфейсы на предмет их конфигурации и сравнивает адрес пункта назначения с сетевой частью сетевых (сконфигурированных) интерфейсов. В данном случае ядро обнаруживает, что eth0 – тот интерфейс (с адресом 192.168.1.2), которому соответствует конечный адрес, т. е. 192.168.1.0.
Задание шлюза по-умолчанию:
$ route add default gw 192.168.1.1 eth0
Доступ в локальную сеть Ethernet через сетевой интерфейс eth0:
$ route add -net 192.168.10.0 netmask 255.255.255.0 eth0
Здесь 192.168.10.0 – сеть, к которой нужно установить доступ (маршрут).
Вывод содержимого таблицы маршрутов ядра осуществляется командой route без параметров, для подробных результатов используется опция -ee.
Также можно использовать сокращённую запись для задания маски подсети:
$ route add -net 192.168.10.0/24 eth0
Следует отметить, что шлюзы, установленные командой route будут существовать до перезагрузки системы. Для их использования на постоянной основе необходимо нужные команды прописать в файле. В Ubuntu это /etc/network/interfaces.
Например для настройки маршрутизации сети 192.168.10.0/24 через шлюз 192.168.10.1 интерфейс eth0, это команда
$ route add -net 192.168.10.0/24 gw 192.168.10.1 eth0
файл /etc/network/interfaces будет выглядеть следующим образом
auto lo
iface lo inet loopbackauto eth0
iface eth0 inet static
address 192.168.10.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.10.255
up route add -net 192.168.10.0/24 gw 192.168.10.1 eth0auto eth2
iface eth2 inet static
address 172.16.0.34
netmask 255.255.255.0
gateway 172.16.0.1
broadcast 172.16.0.255
В Centos/Redhat это файл /etc/sysconfig/network-scripts/route-eth0 для интерфейса eth0 если же название интерфейса другое, то название файла будет route-<название интерфейса>. Если этого файла нет, то его нужно создать. Для настройки выше указанного примера, добавьте в файл следующие строки
192.168.10.0/24 via 192.168.10.1
Также можно прописать и несколько дополнительных маршрутов, для этого просто указываем их в новой строке. После чего сохраняем файл и рестартуем сетевую службу
systemctl restart network
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Настройка сетевых маршрутов в Linux (CentOS)
В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).
Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту ip
, а не route
. Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.
Просмотр таблицы маршрутизации в Linux
Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:
# ip route
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 адресу используется команда:
# ip route get 192.168.2.45
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
Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.
Чтобы удалить созданный вручную маршрут, выполните:
# ip route del 192.168.0.0/24
Как видите, маршрут удален из таблицы маршрутизации.
Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).
Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:
# ip a
В моем случае, интерфейс enp0s3.
Далее открываем следующий файл:
# nano /etc/sysconfig/network-scripts/route-enp0s3
И добавляем туда строку с маршрутом:
192.168.0.0/24 via 192.168.1.1
После добавления маршрута в файл нужно перезапустить сервис network:
# service network restart
После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.
Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:
# nano /etc/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
Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
[root@localhost ~]# service network restart
Restarting network (via systemctl): [ OK ]
[root@localhost ~]# ip route
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
Настройка маршрутизации в Linux — Lanberry
Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д. Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация. Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего
rigon@ubuntu-comp:~$ netstat -rn
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth2
Если таблица пуста, то вы увидите только заголовки столбцов. Тогда надо использовать route. С помощью команды route можно добавить или удалить один (за один раз) статический маршрут. Вот ее формат:
route -f операция -тип адресат шлюз интерфейс
Здесь аргумент операция может принимать одно из двух значений: add (маршрут добавляется) или delete (маршрут удаляется). Аргумент адресат может быть IP-адресом машины, IP-адресом сети или ключевым словом default . Аргумент шлюз — это IP-адрес компьютера, на который следует пересылать пакет (этот компьютер должен иметь прямую связь с вашим компьютером). Команда
route -f
удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип принимает значения net или host. В первом случае в поле адресата указывается адрес сети, а во втором — адрес конкретного компьютера
(хоста).
Как правило, бывает необходимо настроить маршрутизацию по упоминавшимся выше трем интерфейсам:
* локальный интерфейс (lo),
* интерфейс для платы Ethetnet (eth0),
* интерфейс для последовательного порта (PPP или SLIP).
Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому для маршрутизации пакетов с адресом 127…. используется команда:
route add -net 127.0.0.1 lo
Если у вас для связи с локальной сетью используется одна плата Ethernet, и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки маршрутизации достаточно вызвать:
route add -net 192.168.36.0 netmask 255.255.255.0 eth0
Если же вы имеете насколько интерфейсов, то вам надо определиться с сетевой маской и вызвать команду route для каждого интерфейса. Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться не в одну единственную сеть, а в разные сети (например, при просмотре разных сайтов в Интернете), то в принципе надо было бы задать очень много маршрутов. Очевидно, что сделать это было бы очень сложно, точнее просто невозможно. Поэтому решение проблемы маршрутизации пакетов перекладывают на плечи специальных компьютеров — маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию, который используется для отправки всех пакетов, не указанных явно в таблице маршрутизации. С помощью маршрута по умолчанию вы говорите ядру «а все остальное отправляй туда». Маршрут по умолчанию настраивается следующей командой:
route add default gw 192.168.1.1 eth0
Опция gw указывает программе route, что следующий аргумент — это IP-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации. Вот немного теории с сайта linuxcenter.ru
А теперь пример из жизни Имеются следующие интерфейсы /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
auto eth2
iface eth2 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255
Интерфейс eth0 это связь с локальной сетью состоящей из 20 подсетей 192.168.1.х-192.168.20.х
Интерфейс eth2 это связь с ADSL модемом с выходом в интернет. Так большинство запросов идут в Инет на этом интерфейсе прописываем шлюз (gateway 192.168.254.1) данный параметр указывает в системе шлюз по-умолчанию, обращаю внимание, что шлюз надо прописывать только на одном интерфейсе, иначе в системе появятся 2 маршрута по умолчанию и естно будет затупление в работе. С интернетом разобрались.
Но требуется еще просматривать ресурсы локальной сети для этого надо выполнить вот эти команды
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
На этом примере маршрутизируются 3 подсети
Все эти команды и многие другие можно прописать в файлк
/etc/network/interfaces в итоге получится следующее:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
auto eth2
iface eth2 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255
Ну вот и все по аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов
Дополнение 1.
Обратите внимание
hwaddress ether 00:E0:4C:A2:C4:48
так легко можно изменить MAC, не забываем после редактирования файла делать рестарт
sudo /etc/init.d/networking restart
Дополнение 2.
Следует отметить, что:
1) Для того, чтобы просмотреть таблицу маршрутов достаточно запуска команды route без параметров или route -n, если в сети нет DNS.
2) Маска может быть записана проще, в виде /x, где x — число единичных битов, например:
route add -net 192.168.36.0/24 eth0
вместо
route add -net 192.168.36.0 netmask 255.255.255.0 eth0
Настройки сети размещаются в файле /etc/network/interfaces. При подключение к Inet через VPN (ppp0…), необходимо заменять маршрут по умолчанию на ppp0. А проще указать в файле /etc/ppp/options следующее:
defaultroute
replacedefaultroute
тогда маршрут заменяется сам и при отключении восстанавливается.
Дополнение 3.
Есть прога, серверная часть которой стоит во внутренней сети, например Radmin Server, чтобы к нему подключиться клиентская прога (Radmin Viewer) запрашивает соединение по порту 4799 (например). Все работает внутри локальной сети. Есть шлюз (с внешним IP), через который обеспечивает доступ в и-нет всех компов внутренней сети. Теперь вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше, например на 192.168.0.2 по томуже порту?
Для этого есть команда iptables:
iptables -t nat -D PREROUTING -i <интерфейс> -s <IP откуда будет коннект> -p tcp —dport 4899 -j DNAT —to-destination 192.168.0.2:4899
Если ограничивать входящие IP не требуется, то опцию -s можно опустить.
Пример:
iptables -t nat -D PREROUTING -i vlan1 -s 213.87.34.20/24 -p tcp —dport 4899 -j DNAT —to-destination 192.168.128.24:4899
iptables -t nat -A PREROUTING -i eth0 -p udp —dport 3658 -j DNAT —to-destination 192.168.0.2:3658
Маршрутизация в Linux — Asterisk IP-телефония
В статье рассматривается вывод и изменение маршрутизации
утилитой ip, изменение
конфигурационных файлов сетевого интерфейса.
ip – утилита для работы с маршрутизацией, и параметрами сетевого интерфейса.
Вывод на экран имеющихся маршрутов выполняется командой:
ip route
Просмотр имеющихся маршрутов
Команды, утилиты ip можно сокращать, например ip route add также можно набирать сокращенно: ip ro ad, ip rule – ip ru.
Несколько таблиц маршрутизации: main, local и default предопределены.
При отсутствии в параметрах команды ip route названия таблицы, используется главная — main.
В local заносятся правила для локальных ip, широковещательных пакетов.
default – таблица, вначале не содержащая правил.
ip route show table local — вывод определенной таблицы
Вывод определенной таблицы
- ip addr show – вывод всех сетевых настроек по всем интерфейсам у данного хоста
Просмотр сетевых настроек
- ip route flush cache – очистка кэша
- ip rule – вывод правил маршрутизации
Вывод правил
Вначале указывается идентификатор, from all – применяется для всех
пакетов, параметр lookup –таблица, в которую пакет должен быть отправлен.
Общий вид команд добавления сетевых маршрутов:
ip route add {адрес_сети/маска_сети} via {ip_шлюза}
ip route add {адрес_сети/маска_сети} dev {интерфейс}
ip route add default {адрес_сети/маска_сети} dev {интерфейс}
ip route add default {адрес_сети/маска_сети} via {ip_шлюза}
Добавление временных маршрутов.
Добавить маршрут в сеть 10.10.1.0/24 через шлюз 10.10.1.1:
ip route add 10.10.1.0/24 via 10.10.1.1
Добавить маршрут в сеть 10.10.1.0/24 использовать интерфейс:
ip route add 10.10.1.0/24 dev eth0
Добавить маршрут в сеть 10.10.1.0/24 использовать интерфейс, установив метрику 50:
ip route add 10.10.1.0/24 dev eth0 metric 50
Предположим, на шлюз приходят пакеты с IP 192.168.1.1. Их
необходимо отправлять на шлюз 10.10.1.2.
Создаем таблицу:
ip route add default via 10.1.0.1 table 16811
Правило, отправляющее пакеты в таблицу:
ip rule add from 192.168.1.1 table 16811
Удаление маршрутов.
ip route del 10.10.1.0/24 via 10.10.1.1 dev eth0
ip route del 10.10.1.0/24 dev eth0
Blackhole маршруты.
Пакеты, которые пойдут по blackhole маршруту будут удалены.
Удалить пакеты сети 1.2.3.0 с маской 255.255.255.0.
ip route add blackhole 1.2.3.0/255.255.255.0
Добавление постоянных статических маршрутов.
Для добавления постоянных маршрутов для интерфейса eth0 необходимо отредактировать файл /etc/sysconfig/network-scripts/route-eth0
nano /etc/sysconfig/network-scripts/route-eth0
Для применения изменений необходимо сделать рестарт сетевого
сервиса. В RHEL 6/CentOS 6
service network restart
или
/etc/init.d/network restart
В RHEL 7/CentOS 7
systemctl restart network.service
Также, можно остановить и поднять интерфейс eth0:
cd /etc/sysconfig/network-scripts/
ifdown eth0 – остановить eth0
ifup eth0 – поднять eth0
Для проверки запустить утилиту ping или ip
ping 10.10.1.1 или ip r
В случаях, когда необходимо повлиять на выбор интерфейса
выхода, который будет использоваться для доступа к шлюзу, необходимо
использовать команду DEFROUTE=no в файлах ifcfg для тех интерфейсов, которые не
ведут к шлюзу по умолчанию.
Глобальная конфигурация шлюза по умолчанию находится в /etc/sysconfig/network.
Редактирование конфигурационного файла /etc/sysconfig/network
Шлюз для интерфейса eth0 в /etc/sysconfig/network-scripts/ifcfg-eth0
nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE – имя интерфейса
BOOTPROTO – способ получения ip адреса: static, dhcp
ONBOOT – автоподнятие интерфейса при старте системы
HWADDR – контрольный параметр, используется для привязки интерфейса к mac-адресу
MACADDR — используется для изменения mac адреса
UUID – уникальный идентификатор интерфейса
GATEWAY – шлюз по умолчанию для этого интерфейса
При указании статического ip адреса указываются параметры:
IPADDR – ip адрес.
NETMASK – маска сети.
DNS – адрес DNS сервера.
Редактирование конфигурационного файла /etc/sysconfig/network-scripts/ifcfg-eth0
В случае, если необходимо добавить диапазон адресов для интерфейса eth0 необходимо отредактировать файл /etc/sysconfig/network-scripts/ifcfg-eth0-range0, добавив туда параметры:
IPADDR_START — начальный IP из диапазона
IPADDR_END — последний IP из диапазона
CLONENUM_START — стартовый номер в имени интерфейса, с которого начнется нумерация добавленных интерфейсов.
NETMASK — маска подсети для каждого IP адреса
Например:
IPADDR_START=192.168.32.82
IPADDR_END=192.168.32.85
CLONENUM_START=1
NETMASK=255.255.255.255
Для применения настроек необходимо перезапустить сетевой
сервис.
Как добавить постоянные статические маршруты в Ubuntu
В этом руководстве мы узнаем, как добавить постоянный статический маршрут в Ubuntu Linux.
В этом руководстве я использую Ubuntu Server 20.04, но вы можете использовать следующий метод для добавления постоянного маршрута в любую предыдущую версию Ubuntu, включая Ubuntu Desktop.
Что такое постоянный маршрут?
В Ubuntu постоянные статические маршруты, также называемые постоянными маршрутами, представляют собой записи статических маршрутов, которые не будут удалены при перезапуске сети или при перезапуске системы.
Обычно в системе Linux команды route add и ip route add используются для добавления статических маршрутов в таблицу маршрутизации. Но эти статические записи маршрута удаляются из таблицы маршрутизации при перезапуске сети или системы.
Итак, как мы можем сделать статические маршруты постоянными?
Обеспечение постоянства статических маршрутов в Ubuntu Linux
В Ubuntu Linux, чтобы сделать статические маршруты постоянными, нам нужно добавить записи маршрута в файл сетевого интерфейса (текстовые файлы YAML в папке / etc / netplan
) с помощью свойства routes.
Каталог / etc / netplan
— это место, где хранятся файлы конфигурации сети в Ubuntu Linux. В каталоге / etc / netplan
вы найдете как минимум один файл конфигурации сети с расширением .yaml
.
Ниже приведен пример файла конфигурации сетевого интерфейса Ubuntu с постоянными записями статических маршрутов.
# Это конфигурация сети, написанная 'subiquity'
сеть:
Ethernet:
enp0s3:
dhcp4: ложь
адреса: [192.168.1.100 / 24]
шлюз4: 192.168.1.1
серверы имен:
адреса: [8.8.8.8]
маршруты:
- в: 192.168.2.0/24
через: 192.168.1.100
метрика: 100
- в: 192.168.10.100
через: 192.168.1.100
метрика: 100
версия: 2
В соответствии с приведенным выше примером мы добавили две постоянные статические записи маршрута, используя аргумент routes
в сетевом интерфейсе enp0s3.
маршрутов:
- к: 192.168.2.0 / 24
через: 192.168.1.100
метрика: 100
- в: 192.168.10.100
через: 192.168.1.100
метрическая система: 100
Шлюз для сети 192.168.2.0/24 — 192.168.1.100. Мы также установили маршрут хоста к хосту 192.168.10.100
через IP-адрес 192.168.1.100.
Вам необходимо перезагрузить конфигурацию netplan с помощью команды netplan apply
, если вы добавляете новую запись маршрута в файл YAML.
Вы можете просмотреть таблицу маршрутизации с помощью команды ip route show
.
ip route показать
Если вы работаете над более старой версией Ubuntu (16.04 или более ранней), которая по-прежнему использует файл / etc / network / interfaces
, вам необходимо использовать строки -
, чтобы сделать статические маршруты постоянными, как показано в следующем примере:
авто enp0s3
iface enp0s3 inet static
адрес 192.168.1.10
маска сети 255.255.255.0
шлюз 192.168.1.1
up route add -net 192.168.2.0 маска сети 255.255.255.0 gw 192.168.1.100
Вот как мы добавляем постоянные маршруты в Ubuntu Linux.Этот метод используется для добавления постоянных маршрутов во все дистрибутивы Linux на основе Debian.
.
Как добавить маршруты удаления в linux
Есть две команды, которые полезны для добавления или удаления маршрута, это route и ip. Мы увидим, как изменить маршрут с помощью команды route .
Краткое описание маршрута
маршрут
[-v] [-A family] добавить [-net | -host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn ] [восстановить] [[разработчик] Если]
маршрут
[-v] [-A family] del [-net | -host] target [gw Gw] [netmask Nm] [metric N] [[dev] Если]
маршрут
[-V] [—version] [-h] [—help]
маршрут [-v] [-A family] добавить [-net | -host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [отклонить] [mod] [dyn] [восстановить] [[dev] If] route [-v] [-A family] del [-net | -host] target [gw Gw] [netmask Nm] [metric N] [[dev] If] route [-V] [—version] [-h] [—help] |
Добавление маршрута
sudo route add -net 192.168.3.0 gw 192.168.1.1 сетевая маска 255.255.255.0 dev eth0
sudo route add -net 192.168.3.0 gw 192.168.1.1 сетевая маска 255.255.255.0 dev eth0 |
Удаление маршрута
sudo route del -net 192.168.3.0 gw 192.168.1.1 netmask 255.255.255.0 dev eth0
sudo route del -net 192.168.3.0 gw 192.168.1.1 сетевая маска 255.255.255.0 dev eth0 |
Быстрый способ добавить маршрут по умолчанию
маршрут добавить по умолчанию gw 192.168.1.1
маршрут добавить по умолчанию gw 192.168.1.1 |
Быстрый способ удалить маршрут по умолчанию
маршрут по умолчанию gw 192.168.1.1
маршрут по умолчанию gw 192.168.1.1 |
Связанные
.