Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Маршрутизация. Что и как(mini-HOWTO).  (Прочитано 336491 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RigoN

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Маршрутизация. Что и как(mini-HOWTO).
« : 04 Сентября 2007, 11:12:22 »
Ну достали уже с этой маршрутизацией.
Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д.

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

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

rigon@ubuntu-comp:~$ netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.254.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1
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 eth1
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 eth1

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

[b]route[/b] [[b]-f[/b]] операция [[b]-тип[/b]] адресат шлюз [[b]dev[/b]] интерфейс
Здесь аргумент операция может принимать одно из двух значений: 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 eth1
iface eth1 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.х
Интерфейс eth1 это связь с 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 eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255
Ну вот и все по аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов
« Последнее редактирование: 23 Января 2008, 12:36:32 от RigoN »

Оффлайн Kyle

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Маршритизация
« Ответ #1 : 04 Сентября 2007, 11:31:32 »
Отличная статья, думаю надо ее перевести в раздел how-to

Оффлайн RigoN

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Re: Маршрутизация
« Ответ #2 : 04 Сентября 2007, 12:33:20 »
Обратите внимание
Цитировать
hwaddress ether 00:E0:4C:A2:C4:48
как легко можно изменить MAC, не забываем после редактирования файла делать рестарт
sudo /etc/init.d/networking restart
« Последнее редактирование: 04 Сентября 2007, 12:39:06 от RigoN »

Оффлайн RigoN

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Re: Маршрутизация
« Ответ #3 : 06 Сентября 2007, 12:03:25 »
Модераторы приколите тему
А то вновь пошли топики"Как прописать маршрут?".

Оффлайн Envel

  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #4 : 08 Сентября 2007, 11:13:26 »
Следует отметить, что:
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


Оффлайн Geo

  • Активист
  • *
  • Сообщений: 265
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #5 : 08 Сентября 2007, 12:41:10 »
Дополнение к RigoN
Настройки сети размещаются в файле /etc/network/interfaces
При подключение к Inet через VPN (ppp0...), необходимо заменять маршрут по умолчанию на ppp0.
« Последнее редактирование: 08 Сентября 2007, 12:44:30 от Geo »
Lenovo S10, UNR 10.04, gnome, COMPAQ Presario, Mint13, mate
Desktop AthlonXP, 1Gb, Mint11, gnome
Desktop Core2Duo, 6Gb, Mint12(PAE), gnome

Оффлайн Envel

  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #6 : 15 Сентября 2007, 12:12:03 »
Дополнение к RigoN
Настройки сети размещаются в файле /etc/network/interfaces
При подключение к Inet через VPN (ppp0...), необходимо заменять маршрут по умолчанию на ppp0.
А проще указать в файле /etc/ppp/options следующее:
defaultroute
replacedefaultroute

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

Оффлайн settom

  • Новичок
  • *
  • Сообщений: 9
  • Самоделкин
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #7 : 15 Сентября 2007, 17:50:12 »
Вопрос немного в сторону темы. А что делать в случае мэпинга, когда необходимо переслать входящий пакет из интернета внутрь сети, причем пакет приходит по конкретному порту и к конкретной машине во внутренней сети?
Шишки, набитые на своей голове, работают лучше и дольше, чем на чужой.

Оффлайн RigoN

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #8 : 16 Сентября 2007, 05:33:23 »
to settom
в сети адреса для локалки или "белые" с которыми можно работать в интернет?
А проще указать в файле /etc/ppp/options следующее:
defaultroute
replacedefaultroute
тогда маршрут заменяется сам и при отключении восстанавливается.
хорошее дополнение, thanks
« Последнее редактирование: 16 Сентября 2007, 05:35:03 от RigoN »

Оффлайн settom

  • Новичок
  • *
  • Сообщений: 9
  • Самоделкин
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #9 : 16 Сентября 2007, 16:40:16 »
в сети адреса для локалки или "белые" с которыми можно работать в интернет?
Разумеется внутри IP только для локалки, типа 192.168.0.*.
Наверное лучше поставить вопрос на примере:
Есть прога, серверная часть которой стоит во внутренней сети, например Radmin Server, чтобы к нему подключиться клиентская прога (Radmin Viewer) запрашивает соединение по порту 4799 (например). Все работает внутри локальной сети. Есть шлюз (с внешним IP), через который обеспечивает доступ в и-нет всех компов внутренней сети. Теперь вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше, например на 192.168.0.2 по томуже порту?
Шишки, набитые на своей голове, работают лучше и дольше, чем на чужой.

Оффлайн Maximus43

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #10 : 17 Сентября 2007, 00:16:23 »
Есть прога, серверная часть которой стоит во внутренней сети, например 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

Оффлайн settom

  • Новичок
  • *
  • Сообщений: 9
  • Самоделкин
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #11 : 17 Сентября 2007, 20:37:21 »
ФИльтровать входящий ip не нужно, поскольку могу войти из любого места в и-нете, по такой логике код должен быть такой (eth0 смотрит в и-нет, eth1 во внутреннюю сеть), убрал -s и протокол udp:
sudo iptables -t nat -D PREROUTING -i eth0 -p udp --dport 3658 -j DNAT --to-destination 192.168.0.2:3658
Ответ:
iptables: No chain/target/match by that name
Что упущено?
Шишки, набитые на своей голове, работают лучше и дольше, чем на чужой.

Оффлайн Maximus43

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #12 : 18 Сентября 2007, 00:49:58 »
А-а-а... Сорри, я дурак.
Я написал пример на УДАЛЕНИЕ маршрута. Опцию -D(elele) надо заменить на -A(dd).

Простите, заработался, по памяти писал.
Правильно будет:
sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3658 -j DNAT --to-destination 192.168.0.2:3658

Оффлайн settom

  • Новичок
  • *
  • Сообщений: 9
  • Самоделкин
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #13 : 18 Сентября 2007, 20:53:02 »
спасибо, будем тестить
Шишки, набитые на своей голове, работают лучше и дольше, чем на чужой.

Оффлайн russko

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Маршрутизация. Что и как(mini-HOWTO).
« Ответ #14 : 01 Октября 2007, 13:26:50 »
Статья отличная, но в силу ограниченности своих...ммм...мозгов не могу нарисовать маршрутизацию с следующем случае:
eth1 - интерфейс подключения к WI-FI точке доступа, которая в свою очередь подключена к локалке.
ppp0 - интернет, подключенный по протоколу pppoe моего провайдера.
т.е. как я понимаю пакеты идут lo>>eth1>>ppp0>>>наружу в инет.
Дальше появляется ещё одно соединение ppp1 - VPN туннель.
И тут мне нужно чтобы пакеты шли lo>>eth1>>ppp0>>>ppp1>>>наружу в интернет.
Сейчас у меня получилось, что соединение ppp1 есть, а все равно идет lo>>eth1>>ppp0>>>наружу в инет.
Помогите пожалуйста расписать таблицу маршрутизации.
Локальный адрес eth1 - 164.14.0.5
Внешний адрес ppp0 - 217.108.106.5
Адрес VPN сервера - 217.14.100.45. На VPN сервере стоит firewall, который принимает подключение только с адреса  217.108.106.5.

 

Страница сгенерирована за 0.063 секунд. Запросов: 25.