Как добавить статические маршруты (routes) в Ubuntu. Добавить маршрут ubuntu


Как добавить маршрут в 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|-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

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

up ip ro add 192.168.2.0/24 via 192.168.0.1

пример файла конфигурации.

root@linux:~# cat /etc/network/interfaces

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

# 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

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

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

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

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

itc-life.ru

Как добавить статические маршруты (routes) в Ubuntu

Добаление маршрута в linux (static routes)

В память можно добавить маршрут используя route или через ip ro

синтаксис routeroute 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 roip 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)

  1. Необходимо отредактировать (если нет создать) файл/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 — заменить на нужные значения

  2. Другой вариант добавить маршруты в файл /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: Если маршрутов много или ими нужно управлять (добавлять или удалять) то лучше для этого использовать демон статической маршрутизацииВам помогла эта статья, не забудьте сказать «спасибо» для благодарности используется вертикальная и горизонтальная реклама на сайте.

mx54.ru

Маршрутизация в Linux (route add постоянный маршрут в Linux)

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

Исходные данные:Есть компьютер с сетевой картой eth0 и статическим IP-адресом 10.10.103.10

Задача:Организовать постоянный доступ с этой машины на адрес 10.0.160.150 через шлюз 10.10.103.254. То есть, используя route add в Linux нужно создать статический маршрут, который бы оставался в системе после перезагрузки.

Маршрутизация в Linux построена таким образом, что для достижения этой цели с правами суперпользователя необходимо выполнить команду:

route add -host 10.0.160.150 gw 10.10.103.254

route add -host 10.0.160.150 gw 10.10.103.254

Но для того, чтобы создать route add постоянный маршрут в Линуксе придется немного видоизменить команду и редактировать файл /etc/network/interfaces

Последовательность шагов для добавления постоянного маршрута в Linux (Ubuntu)

Открываем терминал.

— после запроса вводим пароль.

nano /etc/network/interfaces

nano /etc/network/interfaces

Изменяем содержимое файла, чтобы оно выглядело следующим образом:

auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.10.103.10 netmask 255.255.255.0 post-up route add -host 10.0.160.150 gw 10.10.103.254

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 10.10.103.10

netmask 255.255.255.0

post-up route add -host 10.0.160.150 gw 10.10.103.254

Сохраняем файл.

Перезапускаем сеть

service networking restart

service networking restart

На этом манипуляции закончены. Постоянный маршрут (команда route add постоянный маршрут) должен работать.

Что касается отдельных ситуаций, для работы тех или иных программ иногда может понадобиться настроить проброс портов.

sysadmin-arh.ru

Статическая маршрутизация в Linux

Екатерина МарценюкОпубликовано 29.06.2010

Серия контента:

Этот контент является частью # из серии # статей:

https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**

Следите за выходом новых статей этой серии.

Этот контент является частью серии:

Следите за выходом новых статей этой серии.

Преимущества и недостатки статической маршрутизации. Проблема эффективности сетей со статической маршрутизацией

Статическая маршрутизация является одним из способов задания маршрута следования пакетов в сетях. При этом протоколы маршрутизации не используются, а необходимая информация заносится системным администратором вручную в соответствующие таблицы маршрутизации. Использование статической маршрутизации разумно в небольших локальных сетях, где поднятие сервера DHCP для раздачи динамических IP-адресов оказывается более трудоемкой и ресурсозатратной задачей. Статические маршруты обладают преимуществом при передаче данных в каналах с узкой полосой пропускания, например, в аналоговых коммутируемых соединениях (через модем) или соединениях типа «точка-точка», поэтому они могут использоваться для создания резервного канала в случае отказа основного. Степень надежности маршрута определяется значением так называемой административной дистанции. Для статического маршрута оно равно 1, что ставит его на второе место по надежности после прямого соединения источника и получателя. Для того чтобы обеспечить резервный канал, достаточно изменить значение административной дистанции для определенного статического маршрута. Тогда при «падении» основного канала весь трафик заданной сети пойдет через резервный до восстановления основного. Этот вид маршрутизации называется плавающей статической маршрутизацией.

К статическим маршрутам также относится маршрут по умолчанию (default route). Он задается для тех пакетов сети, к которым не подходит ни одно из описанных правил в таблице маршрутизации, и позволяет осуществлять координацию трафика. Зачастую функцию шлюза по умолчанию выполняет центральный маршрутизатор, который связан со всеми остальными узлами и одной-двумя сетями.

Достоинства статической маршрутизации проявляются в полной мере в малых сетях. Она позволяет достаточно оперативно развернуть локальную сеть без затраты дополнительного времени на конфигурирование протоколов маршрутизации, а также снизить нагрузку на маршрутизатор за счет использования данных таблиц маршрутизации. Однако при масштабировании или изменении топологии такой сети могут возникнуть проблемы с ее администрированием, так как статические маршрутизаторы не обмениваются информацией друг с другом и с динамическими маршрутизаторами и не сообщают о наличии сбоя в каком-либо из маршрутизаторов или в канале связи. Внесение изменений в конфигурацию таблиц будет занимать больше времени, что в разы снижает эффективность сети со статической маршрутизацией. Тем не менее, в средних и крупных сетях грамотное использование преимуществ статической маршрутизации в сочетании с динамической в качестве основного способа распределения трафика позволяет обеспечить достаточно эффективную передачу данных.

Встроенные средства создания и настройки маршрутных таблиц в Linux

Для просмотра текущей таблицы маршрутизации на узле с установленной ОС Linux1 используется команда netstat -r или route:

$ netstat -r
Kernel IP routing table
DestinationGatewayGenmaskFlagsMSSWindowirttIface192.168.10.0default
*255.255.255.0U000eth0
192.168.10.2540.0.0.0UG000eth0

В этом примере в таблице маршрутизации присутствуют только две записи. Первая указывает на наличие доступа в подсеть 192.168.10.0. Так как узел принадлежит данной подсети, в использовании шлюза нет необходимости. Согласно второй записи, весь остальной трафик с этого узла перенаправляется на шлюз 192.168.10.254.

Все настройки сетевого интерфейса eth0 (в данном случае единственного) хранятся в конфигурационном файле /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0 HWADDR=00:1D:60:07:92:28 IPADDR=192.168.10.14 NETMASK=255.255.255.0 BROADCAST=192.168.10.255 ONBOOT=yes

При добавлении второго сетевого интерфейса eth2 с IP-адресом 192.168.11.4 потребуется изменение конфигурации таблицы маршрутизации при помощи утилиты route2:

# route add -net 192.168.11.0 netmask 255.255.255.0 dev eth2 # netstat -r
Kernel IP routing table
DestinationGatewayGenmaskFlagsMSSWindowirttIface192.168.10.0192.168.11.0default
*255.255.255.0U000eth0
*255.255.255.0U000eth2
192.168.10.2540.0.0.0UG000eth0

Настройки сетевого интерфейса eth2 заносятся в конфигурационный файл /etc/sysconfig/network-scripts/ifcfg-eth2:

DEVICE=eth2 HWADDR=00:0A:48:05:7B:DB IPADDR=192.168.11.4 NETMASK=255.255.255.0 BROADCAST=192.168.11.255 ONBOOT=yes

Маршрутизатор сети 192.168.11.0 может быть связан с другой подсетью 192.168.12.0. В этом случае при необходимости настраивается так называемый транзитный маршрут, по которому пакеты, приходящие на eth2 с назначением в подсеть 192.168.12.0, будут перенаправлены на шлюз 192.168.11.1:

# route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.11.1 # netstat -r
Kernel IP routing table
DestinationGatewayGenmaskFlagsMSSWindowirttIface192.168.10.0192.168.11.0192.168.12.0default
*255.255.255.0U000eth0
*255.255.255.0U000eth2
192.168.11.1255.255.255.0UG000eth2
192.168.10.2540.0.0.0UG000eth0

Для того чтобы внесенные изменения сохранились после перезагрузки узла, необходимо создать конфигурационный файл /etc/sysconfig/network-scripts/route-eth2, содержащий запись о транзитном маршруте:

192.168.12.0/24 via 192.168.11.1

Для корректной работы двух и более сетевых интерфейсов на одном узле также необходимо в файле /etc/sysctl.conf установить значение параметра net.ipv4.ip_forward равным 1. Последним шагом будет перезагрузка сервиса network:

# /etc/init.d/network restart

1 Здесь и далее под ОС Linux подразумевается дистрибутив CentOS 5.2.

2 Здесь описаны только некоторые команды. Для более подробного изучения см. man route(8).

Настройка таблицы маршрутизации при помощи пакета iproute. Организация множественных таблиц маршрутизации

Пакет iproute, или iproute2, представляет собой набор утилит для конфигурирования сети и управления трафиком в дистрибутивах GNU/Linux. По сравнению с пакетом net-tools, в состав которого входят утилиты route и ifconfig, iproute2 имеет расширенный набор функций. Одной из основных задач, решаемых с его помощью, является конфигурирование таблиц маршрутизации различной степени сложности.

Iproute входит в состав стандартного дистрибутива CentOS, поэтому пакет можно установить в любой момент. Стоит отметить, что для его корректной работы требуется поддержка дополнительных опций маршрутизации (ip_advanced_router) и netfilter_netlink – по умолчанию в ядре 2.6 они включены.

Для создания и редактирования таблиц маршрутизации используется утилита ip route. Она поддерживает все стандартные типы маршрутов – local, unicast, broadcast, anycast и multicast, а также специальные – nat и throw (последний используется вместе с правилами политики роутинга).

Вывод команды ip route show эквивалентен результату вызова команды netstat -r или route, представленному в несколько другой форме:

# ip route show 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.14 default via 192.168.10.254 dev eth0

Первая строка описывает маршрут для пакетов узла 192.168.10.14 в пределах локальной сети 192.168.10.0/24. Вторая указывает на шлюз 192.168.10.254, прописанный для интерфейса eth0, по которому перенаправляется весь остальной трафик.

Для добавления, редактирования и удаления маршрута применяются соответствующие команды ip route add, ip route change/replace, ip route delete.

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

Таблицы маршрутизации в iproute идентифицируются по номеру (от 1 до 255) или по названию, заданному в /etc/iproute2/rt_tables. Так, по умолчанию при просчитывании маршрутов ядро обращается к таблице main (ID 254), при этом данные о локальных и широковещательных адресах хранятся в отдельной таблице local (ID 255), которая имеет самый высокий приоритет и обновляется автоматически. Помимо организации стандартной маршрутизации есть возможность создавать собственные правила и таблицы для более сложного роутинга в связке с iptables, включающего, например, маршрутизацию маркированных пакетов, туннелирование, балансировку нагрузки и т.д.

Пример 1. Создание таблицы для маршрутизации пакетов с определенного IP-адреса

Локальная сеть 192.168.10.0/24 имеет выход в Интернет с двух разных провайдеров – по выделенной линии (быстрый канал) и модемному соединению (медленный канал). На маршрутизаторе М1 интерфейс eth0 (локальная сеть) имеет IP-адрес 192.168.10.1, интерфейс eth2 (выделенная линия) – IP-адрес 24.19.12.45 и шлюз 24.19.12.1, интерфейс ppp0 (модемное соединение) – IP-адрес 142.154.64.7 и шлюз 142.154.64.1. По умолчанию все пакеты сети 192.168.10.0/24 должны получать доступ в Интернет через выделенную линию, а узел 192.168.10.7 – через медленное модемное соединение.

Таблица main для М1, отправляющая все пакеты сети 192.168.10.0/24 на выделенную линию, будет выглядеть следующим образом:

# ip route list table main 24.19.12.1 dev eth2 proto kernel scope link src 24.19.12.45 142.154.64.1 dev ppp0 proto kernel scope link src 142.154.64.7 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.1 127.0.0.0/8 dev lo scope link default via 24.19.12.1 dev eth2

Для того чтобы задать перенаправление пакетов с IP-адреса 192.168.10.7 на медленное модемное соединение, необходимо создать новую таблицу modem_connection:

# echo 210 modem_connection >> /etc/iproute2/rt_tables

После этого задается новое правило: для всех пакетов, приходящих с IP-адреса 192.168.10.7, перенаправление будет осуществляться согласно таблице modem_connection:

# ip rule add from 192.168.10.7 table modem_connection # ip rule ls 0: from all lookup local 32765: from 192.168.10.7 lookup modem_connection 32766: from all lookup main 32767: from all lookup default

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

# ip route add default via 142.154.64.7 dev ppp0 table modem_connection # ip route flush cache

Пример 2. Добавление правила балансировки нагрузки для двух сетей

Принимая во внимание начальные параметры из предыдущего примера, изменим условие так, что по умолчанию все пакеты сети 192.168.10.0/24 получают доступ в Интернет через выделенную линию либо через ADSL-соединение (оба канала быстрые). Весь трафик, приходящий из этой сети, должен распределяться по двум каналам в пропорции 2:1.

Для того чтобы реализовать простую балансировку нагрузки, достаточно удалить из таблицы main старый маршрут по умолчанию и добавить новый со следующими параметрами:

# ip route del default # ip route add default scope global nexthop via 24.19.12.1 dev eth2 weight 2 nexthop via 142.154.64.1 dev ppp0 weight 1

Следует учитывать, что реализованная в данном примере балансировка не идеальна, так как маршруты имеют свойство кэшироваться. Для более эффективного распределения трафика следует использовать маркированные пакеты (опция fwmark) в сочетании с соответствующими настройками iptables.

Средства мониторинга и анализа сети со статической маршрутизацией

Вследствие того, что статические маршруты требуют ручной конфигурации, каждый раз при изменении топологии сети или других факторов важным моментом является наличие средств мониторинга сети для своевременного выявления неработающих узлов или шлюзов. Как правило, возможностей стандартных утилит ping (проверка соединения с узлом), ifconfig, traceroute (трассировка маршрутов следования до узла – по умолчанию в пределах 30 "прыжков"), route и netstat, входящих в состав любого дистрибутива GNU/Linux, оказывается достаточно для диагностики проблемы. Одной из полезных утилит, служащих для анализа сетевого трафика и отладки сетевой конфигурации, также является tcpdump.

Для графического отображения трассировки к хостам используется утилита tracemap3, написанная на Perl. С ее помощью можно строить графические карты для нескольких удаленных узлов, например, отдельной филиальной сети.

3http://xgu.ru/wiki/Tracemap

Заключение

Использование статической маршрутизации дает преимущества небольшим локальным сетям или отдельным сегментам сети с медленным каналом, в которых дополнительная нагрузка в виде служебного трафика влияет на скорость передачи данных. В средних и больших сетях статическая маршрутизация применима только в сочетании с динамической, что повышает эффективность сети и облегчает ее администрирование.

Ресурсы для скачивания

Подпишите меня на уведомления к комментариям

www.ibm.com

Маршрутизация в 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.1NETMASK=255.0.0.0IPADDR=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, а также зачем это нужно. Надеюсь, эта информация была полезной для вас.

losst.ru

Настройка маршрутизации в Ubuntu Linux для начинающих

Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д.

Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация.

Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего

Код:

rigon@ubuntu-comp:~$ netstat -n -rТаблица маршутизации ядра протокола IPDestination Gateway Genmask Flags MSS Window irtt Iface192.168.254.0   0.0.0.0         255.255.255.0   U         0 0          0 eth2192.168.254.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth20.0.0.0         192.168.254.1   0.0.0.0         UG        0 0          0 eth00.0.0.0         192.168.254.1   0.0.0.0         UG        0 0          0 eth2

Если таблица пуста, то вы увидите только заголовки столбцов. Тогда надо использовать route. С помощью команды route можно добавить или удалить один (за один раз) статический маршрут. Вот ее формат:

Код:

route -f операция -тип адресат шлюз dev интерфейс

Здесь аргумент операция может принимать одно из двух значений: 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-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации.

А теперь пример из жизниИмеются следующие интерфейсы /etc/network/interfaces

Код:

auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.17.8hwaddress ether 00:E0:4C:A2:C4:48netmask 255.255.255.0broadcast 192.168.17.255auto eth2iface eth2 inet staticaddress 192.168.254.2netmask 255.255.255.0gateway 192.168.254.1broadcast 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 eth0route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

На этом примере маршрутизируются 3 подсетиВсе эти команды и многие другие можно прописать в файлк /etc/network/interfaces в итоге получится следующее:

Код:

auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.17.8hwaddress ether 00:E0:4C:A2:C4:48netmask 255.255.255.0broadcast 192.168.17.255up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0auto eth2iface eth2 inet staticaddress 192.168.254.2netmask 255.255.255.0gateway 192.168.254.1broadcast 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 следующее:

defaultroutereplacedefaultroute

Тогда маршрут заменяется сам и при отключении восстанавливается.

Дополнение 3.

Есть прога, серверная часть которой стоит во внутренней сети, например Radmin Server, чтобы к нему подключиться клиентская прога (Radmin Viewer) запрашивает соединение по порту 4799 (например). Все работает внутри локальной сети. Есть шлюз (с внешним IP), через который обеспечивает доступ в и-нет всех компов внутренней сети. Теперь вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше, например на 192.168.0.2 по томуже порту?

Для этого есть команда iptables:

iptables -t nat -D PREROUTING -i <интерфейс> -s -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:4899iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3658 -j DNAT --to-destination 192.168.0.2:3658

Источники: http://forum.ubuntu.ru  и http://www.opennet.ru

sudouser.com

Linux routing маршрутизация, PBR (policy based routing)

192.168.12.0/24 dev eth0 proto kernel scope link src 192.168.12.101 

default via 192.168.12.1 dev eth0

proto kernel означает, что роутинг был задан ядром автоматически при задании IP интерфейса. 

scope link означает, что эта запись является действительной только для этого интерфейса (eth0). 

src 192.168.12.101 задает IP-адрес отправителя для пакетов, попадающих под это правило роутинга.

default via 192.168.12.1 dev eth0 Трафик на любые другие хосты, не попадающие в подсеть 192.168.12.0/24 будет уходить на шлюз 192.168.12.1 через интерфейс eth0. Пример:как увидеть с локальной сети 192.168.0.0 комп с адресом из другой сети 192.168.151.0 (подключены к одному свичу) На компе Ubuntu с адресом 192.168.0.10 выполнить:sudo ip route add 192.168.151.0/24 dev eth0

На компе Windows с адресом 192.168.151.10 выполнить:

route add 192.168.0.0 mask 255.255.255.0 192.168.151.10

Причем пинг будет проходить только между этими двумя компьютерами. Поэтому можно переписать правила еще как для только одного компа:sudo ip route add 192.168.151.10/32 dev eth0route add 192.168.0.10 mask 255.255.255.255 192.168.151.10

policy-routing, он же PBR (policy based routing). 

Пример: У нас есть некий шлюз, на него приходят пакеты с IP 192.168.1.20. Пакеты с этого IP нужно отправлять на шлюз 10.1.0.1. Чтобы это реализовать делаем следующее: Создаем таблицу с единственным правилом:# ip route add default via 10.1.0.1 table 120

Создаем правило, отправляющее нужные пакеты в нужную таблицу:# ip rule add from 192.168.1.20 table 120

ip rule

Как же ядро выбирает, в какую таблицу отправлять пакеты?

Все логично – для этого есть правила. В нашем случае:# ip rule 

0: from all lookup local 

32766: from all lookup main 

32767: from all lookup defaultЧисло в начале строки – идентификатор правила, from all – условие, означает пакеты с любых адресов, lookup указывает в какую таблицу направлять пакет. Если пакет подпадает под несколько правил, то он проходит их все по порядку возрастания идентификатора. Конечно, если пакет подпадет под какую-либо запись маршрутизации, то последующие записи маршрутизации и последующие правила он уже проходить не будет.

Возможные условия:from – мы уже рассматривали выше, это проверка отправителя пакета.to – получатель пакета.iif – имя интерфейса, на который пришел пакет.oif – имя интерфейса, с которого уходит пакет. Это условие действует только для пакетов, исходящих из локальных сокетов, привязанных к конкретному интерфейсу.tos – значение поля TOS IP-пакета.fwmark – проверка значения FWMARK пакета. Это условие дает потрясающую гибкость правил. При помощи правил iptables можно отфильтровать пакеты по огромному количеству признаков и установить определенные значения FWMARK. А затем эти значения учитывать при роутинге.Пример с применением ip rule.

ubuntuhowtoo.blogspot.com