Опубликован: 26.07.2011 | Уровень: для всех | Доступ: платный
Лекция 10:

Маршрутизация в Linux

< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Аннотация: Даны краткие сведения об использовании компьютера с Linux в качестве маршрутизатора и расширенных возможностях маршрутизации, в частности маршрутизация по IP-адресу источника; описаны особенности выбора локального исходящего IP-адреса. Приведены примеры маршрутизации виртуальных локальных сетей, объединения локальных сетей на основе маршрутизаторов, задания локального исходящего IP-адреса и добавление альтернативного маршрута для узла-источника на шлюзе

Содержание

  1. Включение функции пересылки проходящих пакетов.
  2. Выбор IP-адреса для исходящих соединений.
  3. Маршрутизация на основе правил и таблиц.

Включение функции пересылки проходящих пакетов

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

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

По умолчанию сетевая подсистема Linux обрабатывает пакеты, предназначенные данному узлу или созданные данным узлом; функция обработки пакетов, в которых не указан IP-адрес данной станции как источник или приемник (forwarding, пересылка пакетов ) отключена. Для включения функции пересылки проходящих пакетов необходимо установить в 1 значение, записанное в файле ip_forward псевдофайловой системы proc:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Данная настройка будет действовать до перезагрузки компьютера. Для восстановления конфигурации нужно после перезагрузки выполнять указанную команду (указать ее в файле /etc/rc.local ) или лучше установить в файле /etc/sysctl.conf следующий параметр:

net.ipv4.ip_forward=1

Пример 10.1.Объединение виртуальных локальных сетей с помощью маршрутизатора на основе Linux.

Для того, чтобы в примере 5.6. "Постоянные сетевые конфигурации (на примере Debian/GNU Linux)" "Постоянные сетевые конфигурации" подсети 192.168.1.0/24 и 192.168.2.0/24 могли взаимодействовать друг с другом через указанный в примере компьютер Linux (выступает в качестве шлюза для данных подсетей) необходимо:

  • на данном компьютере включить функцию пересылки пакетов одним из описанных выше способов;
  • на всех компьютерах первой подсети указать в качестве шлюза для второй подсети адрес 192.168.1.4 (разумеется, также можно указать данный адрес как шлюз по умолчанию), а для компьютеров второй подсети - шлюз для первой подсети 192.168.2.4.

Таблица маршрутизации шлюза:

# ip route show
192.168.2.0/24 dev vlan2  proto kernel  scope link  src 192.168.2.4 
192.168.1.0/24 dev vlan1  proto kernel  scope link  src 192.168.1.4

Эти записи добавляются в таблицу маршрутизации шлюза автоматически (например, если на интерфейсе vlan1 установлен IP-адрес 192.168.1.4/24, то система полагает, что сеть 192.168.1.0/24 непосредственно подключена к данному интерфейсу). Таким образом, если на интерфейс vlan1 шлюза приходят сетевые пакеты, в которых адрес назначения принадлежит второй подсети, то шлюз, согласно таблицы маршрутизации, передает эти пакеты в сеть с интерфейса vlan2.

Пример 10.2.Объединение двух сетей на основе маршрутизаторов

Пусть необходимо обеспечить взаимодействие сетей 192.168.1.0/24 и 192.168.2.0/24 (рис. 10.1.), соединенных интерфейсами маршрутизаторов, установленных в каждой из сетей (интерфейсы маршрутизаторов в сетях имеют адреса 192.168.1.1 и 192.168.2.1 соответственно).

Объединение двух сетей на основе маршрутизаторов

Рис. 10.1. Объединение двух сетей на основе маршрутизаторов

Для решения данной задачи ( рис. 10.1.) необходимо установить на интерфейсы, связывающие маршрутизаторы друг с другом адреса из одной произвольно выбранной подсети (192.168.3.0/24, на первый — 192.168.3.1, на второй — 192.168.3.2) и добавить статические маршруты в таблицы маршрутизаторов (для первого маршрутизатора - для сети 192.168.2.0/24 через узел 192.168.3.2, для второго — для сети 192.168.1.0/24 через узел 192.168.3.1).

К примеру таблица маршрутизации первого маршрутизатора (при использовании Linux) будет иметь вид:

# ip route show
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1 
192.168.3.0/24 dev eth1  proto kernel  scope link  src 192.168.3.1
192.168.2.0/24 via 192.168.3.2 dev eth1

Последний маршрут здесь является статическим, так как должен быть задан администратором системы вручную.

< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Елена Сапегова
Елена Сапегова

для получения диплома нужно ли кроме теоретической части еще и практическую делать? написание самого диплома требуется?


( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0259101978136watchdog( )../bootstrap.inc:0
24.0265101980592module_invoke( )../bootstrap.inc:967
34.0265101982448call_user_func_array ( )../module.inc:462
44.0265101982784devel_watchdog( )../module.inc:462
54.0268101983632decode_entities( )../devel.module:382
64.0268101985552drupal_error_handler( )../devel.module:340
74.0269101989168watchdog( )../common.inc:663
84.0269101991224module_invoke( )../bootstrap.inc:967
94.0269101993080call_user_func_array ( )../module.inc:462
104.0270101993416devel_watchdog( )../module.inc:462
114.0271101994112decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0259101978136watchdog( )../bootstrap.inc:0
24.0265101980592module_invoke( )../bootstrap.inc:967
34.0265101982448call_user_func_array ( )../module.inc:462
44.0265101982784devel_watchdog( )../module.inc:462
54.0268101983632decode_entities( )../devel.module:382
64.0268101985552drupal_error_handler( )../devel.module:340
74.0269101989168watchdog( )../common.inc:663
84.0269101991224module_invoke( )../bootstrap.inc:967
94.0269101993080call_user_func_array ( )../module.inc:462
104.0270101993416devel_watchdog( )../module.inc:462
114.0271101994112decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0259101978136watchdog( )../bootstrap.inc:0
24.0265101980592module_invoke( )../bootstrap.inc:967
34.0265101982448call_user_func_array ( )../module.inc:462
44.0265101982784devel_watchdog( )../module.inc:462
54.0268101983632decode_entities( )../devel.module:382
64.0283101985744drupal_error_handler( )../devel.module:340
74.0284101989432watchdog( )../common.inc:663
84.0284101991488module_invoke( )../bootstrap.inc:967
94.0284101993344call_user_func_array ( )../module.inc:462
104.0284101993680devel_watchdog( )../module.inc:462
114.0285101994456decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0259101978136watchdog( )../bootstrap.inc:0
24.0265101980592module_invoke( )../bootstrap.inc:967
34.0265101982448call_user_func_array ( )../module.inc:462
44.0265101982784devel_watchdog( )../module.inc:462
54.0268101983632decode_entities( )../devel.module:382
64.0283101985744drupal_error_handler( )../devel.module:340
74.0284101989432watchdog( )../common.inc:663
84.0284101991488module_invoke( )../bootstrap.inc:967
94.0284101993344call_user_func_array ( )../module.inc:462
104.0284101993680devel_watchdog( )../module.inc:462
114.0285101994456decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0299101978680watchdog( )../bootstrap.inc:0
24.0299101980736module_invoke( )../bootstrap.inc:967
34.0299101982592call_user_func_array ( )../module.inc:462
44.0299101982928devel_watchdog( )../module.inc:462
54.0300101983632decode_entities( )../devel.module:382
64.0301101985552drupal_error_handler( )../devel.module:340
74.0301101989176watchdog( )../common.inc:663
84.0301101991232module_invoke( )../bootstrap.inc:967
94.0302101993088call_user_func_array ( )../module.inc:462
104.0302101993424devel_watchdog( )../module.inc:462
114.0302101994120decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0299101978680watchdog( )../bootstrap.inc:0
24.0299101980736module_invoke( )../bootstrap.inc:967
34.0299101982592call_user_func_array ( )../module.inc:462
44.0299101982928devel_watchdog( )../module.inc:462
54.0300101983632decode_entities( )../devel.module:382
64.0301101985552drupal_error_handler( )../devel.module:340
74.0301101989176watchdog( )../common.inc:663
84.0301101991232module_invoke( )../bootstrap.inc:967
94.0302101993088call_user_func_array ( )../module.inc:462
104.0302101993424devel_watchdog( )../module.inc:462
114.0302101994120decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0299101978680watchdog( )../bootstrap.inc:0
24.0299101980736module_invoke( )../bootstrap.inc:967
34.0299101982592call_user_func_array ( )../module.inc:462
44.0299101982928devel_watchdog( )../module.inc:462
54.0300101983632decode_entities( )../devel.module:382
64.0312101985744drupal_error_handler( )../devel.module:340
74.0313101989432watchdog( )../common.inc:663
84.0313101991488module_invoke( )../bootstrap.inc:967
94.0313101993344call_user_func_array ( )../module.inc:462
104.0313101993680devel_watchdog( )../module.inc:462
114.0314101994456decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
14.0299101978680watchdog( )../bootstrap.inc:0
24.0299101980736module_invoke( )../bootstrap.inc:967
34.0299101982592call_user_func_array ( )../module.inc:462
44.0299101982928devel_watchdog( )../module.inc:462
54.0300101983632decode_entities( )../devel.module:382
64.0312101985744drupal_error_handler( )../devel.module:340
74.0313101989432watchdog( )../common.inc:663
84.0313101991488module_invoke( )../bootstrap.inc:967
94.0313101993344call_user_func_array ( )../module.inc:462
104.0313101993680devel_watchdog( )../module.inc:462
114.0314101994456decode_entities( )../devel.module:382