Linux в жизни системного администратора. Добавить маршрут linux


Статические маршруты в Linux | Linux в жизни системного администратора

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

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

Здесь стоит ввести такое понятие, как шлюз по умолчанию (default gateway). Чаще всего, это маршрутизатор провайдера или устройство, которое расположено непосредственно между нашим узлом и внешним миром.

Шлюз по умолчанию (в Windows это «основной шлюз») — узел, на который будет посылаться пакет, если он принадлежит не «нашей» подсети, а так же для него нет специального маршрута. Так называемый «шлюз последней надежды». Как если бы компьютер просто скидывал все непонятные пакеты вышестоящему узлу, дабы голова (процессор) болела уже у него.

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

Сейчас мы поговорим именно о статических маршрутах, то есть прописанных на постоянной основе.

Посмотреть текущие маршруты можно командой:

# route

или

# netstat -r

Таблица статических маршрутов

Маршрут добавляется в таблицу так:

# route add -net 10.0.100.0 netmask 255.255.255.0 gateway 192.16.1.1 eth0

Такая запись будет обозначать, что все пакеты, адресом назначения которых будет являться сеть 10.0.100.0/24 должны будут отправиться на адрес 192.168.1.1 через интерфейс eth0. Подразумевается, что 192.168.1.1 знает, куда их переправить дальше.

Linux добавляем статический маршрут

Так же существует синтаксис для узла:

# route add -host 192.168.40.9 gw 192.168.1.1 dev eth0

Которая будет равнозначна:

# route add -net 192.168.40.9 netmask 255.255.255.255 gateway 192.168.1.1 dev eth0

Иными словами, маска /32 (255.255.255.255) используется для хоста, а маска /0 (0.0.0.0) используется для маршрута по умолчанию (все).

Кстати, добавить маршрут по умолчанию можно так:

Linux маршрут по умолчанию

# route add default gw <IP>

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

Удаляем статический маршрут Linux

# route del -net 10.0.100.0 netmask 255.255.255.0

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

# vim /etc/sysconfig/network-scripts/route-eth0

10.0.0.0/8 via 192.168.1.2

И перезапустим сетевую подсистему. Посмотрим, что получилось:

Добавляем постоянный статический маршрут в Linux

Лабораторная работа

linux-my.ru

Настройка маршрутизации в 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 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 операция -тип адресат шлюз интерфейс

Здесь аргумент операция может принимать одно из двух значений: 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 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 <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

 

www.lanberry.ru

[Routing] Шпаргалка про роутинг в Ubuntu

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

jtprog@server_test:~$ netstat -n -rDestination          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 операция -тип адресат шлюз интерфейс

Здесь аргумент операция может принимать одно из двух значений:

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 loopback

auto eth0iface eth0 inet staticaddress 192.168.17.8hwaddress ether 00:E0:4C:A2:C4:48netmask 255.255.255.0broadcast 192.168.17.255

auto 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 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 loiface lo inet loopback

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

auto eth2iface eth2 inet staticaddress 192.168.254.2netmask 255.255.255.0gateway 192.168.254.1broadcast 192.168.254.255

По аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов.Обратите внимание:

hwaddress ether 00:E0:4C:A2:C4:48

так легко можно изменить MAC, не забываем после редактирования файла делать рестарт

sudo /etc/init.d/networking restart

Так же отмечу, что:

  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

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

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

На этом все! Profit!

jtprog.ru

сети для гиков: Настройка маршрутов в Linux

Вернемся к примеру, в котором для узла данной сети (192.168.1.0/24) есть шлюз по умолчанию - 192.168.1.1 и шлюз для удаленной сети 192.168.24.0/24, который имеет адрес 192.168.1.2:

Используем команду ip route, чтобы реализовать эту схему для некоторого узла в рассматриваемой сети:

# ip route add default via 192.168.1.1 # ip route add 192.168.24.0/24 via 192.168.1.2 # ip route show 192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.100 192.168.24.0/24 via 192.168.1.2 dev eth2 default via 192.168.1.1 dev eth2

Первая команда добавляет маршрут по умолчанию (default) через узел 192.168.1.1 (параметр via). Вторая команда устанавливает маршрут на сеть 192.168.24.0/24 через узел 192.168.1.2.

Для вывода на экран содержимого таблицы маршрутизации используется команда ip route show. В данном случае в таблице маршрутизации три записи: первая о том, что сеть 192.168.1.0/24 доступна непосредственно на интерфейсе eth2 (запись добавляется автоматически), и две записи, добавленные пользователем: альтернативный маршрут и маршрут по умолчанию.

Те же действия можно выполнить, используя команду route:

# route add default gw 192.168.1.1 # route add -net 192.168.24.0 netmask 255.255.255.0 gw 192.168.1.2 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 192.168.24.0 192.168.1.2 255.255.255.0 UG 0 0 0 eth2 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth2

При нескольких альтернативных маршрутах, возможных для данного узла выбирается тот, у которого маска подсети «более заполнена»:

# ip route show 192.168.10.3 via 192.168.56.2 dev eth0 192.168.10.0/25 via 192.168.56.3 dev eth0 192.168.10.0/24 via 192.168.56.2 dev eth0 192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.101 default via 192.168.56.1 dev eth0

В последнем листинге есть несколько перекрывающихся маршрутов (1-3 записи). В соответствии с «заполненностью» маски, пакеты для узла 192.168.10.3 будут отправляться шлюзу 192.168.56.2, т. к. у этой записи самая «большая» маска (/32). Пакеты остальных узлов сети 192.168.10.0/25 будут отправляться шлюзу 192.168.56.3, так у второй записи в таблице маршрутизации маска (/25) больше, чем у третьей (/24). Пакеты, предназначенные узлам 128-255 сети 192.168.10.0/24 будут отправляться шлюзу 192.168.56.2.

nets4geeks.blogspot.com

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

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

rigon@ubuntu-comp:~$ netstat -n -r

Destination 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 операция -тип адресат шлюз интерфейс

Здесь аргумент операция может принимать одно из двух значений: 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 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

Оригинал: www.forum.ubuntu.ru

ubuntu-repository.blogspot.com

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

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

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

rigon@ubuntu-comp:~$ netstat -n -r

Destination 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 операция -тип адресат шлюз интерфейс

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

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3658 -j DNAT--to-destination 192.168.0.2:3658

ubuntu-repository.blogspot.com

Как установить статические маршруты на сервере Ubuntu? Ubuntu Linux

Статические маршруты можно ставить в /etc/network/interfaces :

auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1

Я часто обнаружил, что правильное место для определения статического маршрута находится в / etc / network / interfaces, это нормально, если вы собираетесь глобально перезапустить сеть с перезагрузкой /etc/init.d/networking, например. Но если вы собираетесь использовать ifdown и ifup для индивидуального отключения интерфейса, ifup закончит с ошибкой:

ifup eth2 RTNETLINK answers: File exists Failed to bring up eth2.

Из-за этого пытается определить маршрут, но он уже определен. Интерфейс все равно будет вставлен, но ifup не будет обновлять / запускать / network / ifstate, так что в следующий раз, когда вы будете использовать это приложение, вы не сможете это сделать, если не используете флаг -force.

Чтобы продолжить, если продолжить настройку, даже если маршруты уже определены, вы можете использовать этот формат при определении маршрутов в / etc / network / interfaces

up ip route add 172.16.0.0/24 via 192.168.10.1 || true up ip route add 192.168.0.0/16 via 192.168.10.1 || true

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

ifup eth2 RTNETLINK answers: File exists RTNETLINK answers: File exists ssh stop/waiting ssh start/running, process 18553

Вы можете попробовать это (добавить его в /etc/network/interfaces ), это почти полный способ настройки маршрутов:

auto eth0 iface eth0 inet static post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/

В Ubuntu есть пакет ifupdown-extra . Он предоставляет автоматические сценарии (установленные в /etc/network/*/ ), один из которых используется для добавления статических маршрутов.

Файл конфигурации для этого – /etc/network/routes

В верхней части этого конфигурационного файла есть хорошее описание:

Этот файл конфигурации считывается сценарием if-updown static-routes и скриптом /etc/init.d/networking-routes для настройки списка маршрутов, связанных либо с заданным интерфейсом, либо с глобальными маршрутами.

Пример использования маршрута:

192.168.240.0 255.255.255.0 192.168.130.3 em3

то, что сработало для нас, было

sudo route add -net 192.168.0.2/32 gw 192.168.1.1 netmask 255.255.0.0

я использовал для работы на Mac:

sudo route -n add -net 192.168.0.2/32 192.168.1.1

но на ubuntu отсутствует «gw» между IP-адресами и последней частью «netmask» (также – не требуется на ubuntu)

ubuntu.fliplinux.com