Авторизация

Вы можете войти через одну из учетных записей:

ИЛИ



Напомнить пароль
Регистрация

UbuntuНастройка маршрутизации в 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 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 можно добавить или
удалить один (за один раз) статический маршрут. Вот ее формат:
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 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


Ну вот и все по аналогии настраиваются любое кол-во маршрутов и
сетевых интерфейсов

Дополнение 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


forum.ubuntu.ru/index.php?topic=12454.
  • 0
  • Diesel
  • 31 мая 2010, 14:59
  • add twitter 

Комментарии (0) Вконтакте (0) facebook (0)

Комментарии (0)

rss свернуть / развернуть

Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.