Операционная система 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
Для того, чтобы в примере 5.6. "Постоянные сетевые конфигурации" подсети 192.168.1.0/24 и 192.168.2.0/24 могли взаимодействовать друг с другом через указанный в примере компьютер Linux (выступает в качестве шлюза для данных подсетей) необходимо:
# 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.
Пусть необходимо обеспечить взаимодействие сетей 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).
К примеру
# 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
Последний маршрут здесь является статическим, так как должен быть задан администратором системы вручную.
Выбор
Пусть система имеет два интерфейса eth0(192.168.1.1/24) и eth1(192.168.56.102/24):
# ip addr show
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000 link/ether 08:00:27:23:22:97 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
inet6 fe80::a00:27ff:fe23:2297/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000 link/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.56.102/24 brd 192.168.56.255 scope global eth1
inet6 fe80::a00:27ff:fefd:e5aa/64 scope link
valid_lft forever preferred_lft forever
Маршрут по умолчанию у данной системы - 192.168.56.1:
# ip route show 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102 default via 192.168.56.1 dev eth1
При такой конфигурации для исходящих соединений будет использоваться интерфейс eth1 и IP-адрес 192.168.56.102 (кроме
соединений с узлами сети 192.168.1.0/24 — eth0 и IP-адрес 192.168.1.1). Ниже показан ping -c 1 192.168.3.4:
# tcpdump -ne -i eth1 host 192.168.3.4 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes 10:18:18.924084 08:00:27:fd:e5:aa > 0a:00:27:00:00:00, ethertype IPv4 (0x0800), length 98: 192.168.56.102 > 192.168.3.4: ICMP echo request, id 960, seq 1, length 64
Однако, если добавить альтернативный маршрут для сети 192.168.3.0/24 через некоторый шлюз 192.168.1.254:
# ip route add 192.168.3.0/24 via 192.168.1.254
то, для пакетов, предназначенных узлу 192.168.3.4, будет использоваться интерфейс eth0 и исходящий адрес 192.168.1.1
(показан
# tcpdump -ne -i eth0 host 192.168.3.4 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 10:23:33.393706 08:00:27:23:22:97 > 00:00:00:00:00:aa, ethertype IPv4 (0x0800), length 98: 192.168.1.1 > 192.168.3.4: ICMP echo request, id 968, seq 1, length 64
Синтаксис команды ip route позволяет повлиять на выбор локального IP-адреса при соединении с удаленными системами. Для этого служит
параметр src с указанием предпочитаемого IP-адреса (должен быть установлен на сетевом интерфейсе компьютера) для отправки пакетов на
направление, определяемое в команде префиксом маршрутизации.
Так, для указанной ниже конфигурации будет использоваться исходящий адрес 192.168.56.102 (кроме взаимодействия с узлами сети 192.168.1.0/24):
# ip addr show eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.56.102/24 brd 192.168.56.255 scope global eth1
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1:1
inet6 fe80::a00:27ff:fefd:e5aa/64 scope link
valid_lft forever preferred_lft forever
# ip route show
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102
default via 192.168.56.1 dev eth1
Для того, чтобы использовать исходный адрес 192.168.1.10 для соединения с узлами сети 192.168.3.0/24 следует использовать команду:
# ip route add 192.168.3.0/24 via 192.168.56.1 src 192.168.1.10 dev eth1:1
# ip route show 192.168.3.0/24 via 192.168.56.1 dev eth1 src 192.168.1.10 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102 default via 192.168.56.1 dev eth1
Классические алгоритмы маршрутизации используют только адрес получателя в качестве аргумента при принятии решения какому шлюзу
передавать пакет ( маршрутизация по назначению, destination-routing ). Однако в некоторых случаях необходимо
использовать другие параметры сетевого пакета: адрес источника, вид и порт транспортного протокола и т. д. ( маршрутизация на основе политик,
policy-routing ) . Маршрутизация на основе политик может использоваться при необходимости отправлять пакеты с
разных IP-адресов, для отправки пакетов через разные интерфейсы для различных TCP-портов,
Управление
Для управления списком правил используется команда ip rule. Принцип работы ip rule схож с другими командами ip. Применимы операции просмотра существующих правил ( list ), добавления нового правила ( add ), удаления
правила ( del ). Далее в команде необходимо указать селектор выбора пакетов (на основе адреса\сети отправителя\получателя, ip ).
По умолчанию в системе Linux присутствуют следующие
# ip rule show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default
В данном случае любой пакет ( from all ) последовательно будет проходить все таблицы ( local, main, default ) до первого
совпадения какой-либо записи.
Таблица local содержит записи локального характера (маршрутизация "внутри" компьютера, широковещательные IP-адреса
сегментов, в состав которых входит компьютер и т. д.). Данная таблица формируется автоматически и обычно не требует "ручного"
редактирования. Пример таблицы local:
# ip route show table local
broadcast 192.168.1.0 dev eth1 proto kernel scope link src 192.168.1.10 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 192.168.56.102 dev eth1 proto kernel scope host src 192.168.56.102 broadcast 192.168.56.0 dev eth1 proto kernel scope link src 192.168.56.102 broadcast 192.168.1.255 dev eth1 proto kernel scope link src 192.168.1.10 local 192.168.1.10 dev eth1 proto kernel scope host src 192.168.1.10 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 broadcast 192.168.56.255 dev eth1 proto kernel scope link src 192.168.56.102 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
Таблица main включает основные записи о маршрутизации, с нею работают утилита route и команда ip route без указания таблицы ( ip route show выводит содержимое таблицы main ). Пример таблицы main:
# ip route show table main 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102 default via 192.168.56.1 dev eth1
Таблица default обычно пустая.
Описание существующих в системе
# cat /etc/iproute2/rt_tables 255 local 254 main 253 default 0 unspec
Для переопределения политики маршрутизации можно создавать дополнительные
Пусть шлюз локальной сети 192.168.1.0/24 имеет два сетевых интерфейса c IP-адресами 192.168.1.1/24 и 192.168.56.102/24 соответственно, маршрут по умолчанию — 192.168.56.1. Необходимо, чтобы шлюз отправлял трафик узла 192.168.1.10 по альтернативному маршруту 192.168.56.2.
Для решения данной задачи , во-первых, добавим в файл /etc/iproute2/rt_tables описание
дополнительной 200 и altroute ):
# echo 200 altroute >> /etc/iproute2/rt_tables
Во-вторых, добавим правило направления исходящих пакетов узла 192.168.1.10 в таблицу altroute:
# ip rule add from 192.168.1.10 lookup altroute
Список правил после выполнения данной команды:
# ip rule show 0: from all lookup local 32765: from 192.168.1.10 lookup altroute 32766: from all lookup main 32767: from all lookup default
В третьих, нужно в таблицу altroute добавить соответствующий маршрут:
# ip route add default via 192.168.56.2 dev eth1 table altroute # ip route flush cache
Содержимое таблицы altroute:
# ip route show table altroute default via 192.168.56.2 dev eth1
В результате на шлюзе исходящие пакеты узла 192.168.1.10 соответствующим правилом будут отправляться в таблицу altroute, в которой
как маршрут по умолчанию, указан узел 192.168.56.2. В тоже время исходящие пакеты других узлов сети 192.168.1.0/24 будут маршрутизироваться в
соответствии с маршрутами, указанными в таблице main.
Статическая маршрутизация — такой способ маршрутизации, при котором все необходимые маршруты устанавливаются администратором вручную (с помощью команд и конфигурационных файлов).
Маршрутизация по назначению (destination-routing) — классический подход к маршрутизации, при котором используется адрес назначения в качестве аргумента при принятии решения какому шлюзу передавать пакет.
Маршрутизация на основе политик (policy-routing) — маршрутизация на основе различных параметров: адреса источника, вид и порт транспортного протокола и т. д.
Маршрутизация по источнику (source-based routing) — вариант маршрутизации на основе политик, использующий адрес отправителя для принятия решения о маршрутизации.
ip route позволяет повлиять на выбор локального IP-адреса при соединении с удаленными системами.
Для этого служит параметр src с указанием предпочитаемого IP-адреса (должен быть установлен на сетевом интерфейсе компьютера) для
отправки пакетов на направление, определяемое в команде префиксом маршрутизации. Кроме того, сетевое программное обеспечение обычно имеет настройки,
позволяющие выбирать IP-адрес для исходящих подключений.ip rule.В среде VirtualBox реализовать стенд для изучения маршрутизации, состоящий из двух виртуальных машин: основной ВМ и дополнительной ВМ.
Основная ВМ предназначена для реализации функции маршрутизации пакетов удаленных сетей. Непосредственно к ней подключены сети: 192.168.0.0/24, 192.168.1.0/24 и 192.168.2.0/24 ("физические" интерфейсы: eth1 с IP-адресом 192.168.0.1, eth2 c IP-адресом 192.168.1.1, eth3 c IP-адресом 192.168.2.1). Последние два интерфейса используются для связи с удаленными сетями (шлюз по умолчанию — 192.168.1.2, альтернативный маршрут — 192.168.2.2).
Дополнительная ВМ предназначена для тестирования настроек маршрутизатора и межсетевого экрана путем отсылки тестовых IP-пакетов. Сеть 192.168.0.0/24 объединяет виртуальные машины (для дополнительной ВМ — IP-адрес 192.168.0.2 на интерфейсе eth1, в качестве шлюза по умолчанию - 192.168.0.1).
Все сетевые адаптеры включены во
tcpdump c указанием интерфейса мониторинга (-i) и не включая "беспорядочный" режим (-p):# tcpdump -nep -i eth2
1.Установить основной IP-адрес (192.168.0.2 /24) и шлюз по умолчанию (192.168.0.1) на дополнительной ВМ:
# ip addr add dev eth1 local 192.168.0.2 /24 broadcast 192.168.0.255 # ip link set eth1 up # ip route add default via 192.168.0.1
2.Установить в основной ВМ:
а)На интерфейс eth1 IP-адрес 192.168.0.1 /24
б)На интерфейс eth2 IP-адрес 192.168.1.1 /24
в)На интерфейс eth3 IP-адрес 192.168.2.1 /24
г)В качестве шлюза по умолчанию IP-адрес: 192.168.1.2
д)Внести статические записи в
# ip neighb add 192.168.1.2 lladdr 00:00:00:00:00:AA dev eth2 # ip neighb add 192.168.2.2 lladdr 00:00:00:00:00:BB dev eth3
е)Включить в ядре ОС функцию маршрутизации:
# echo 1 > /proc/sys/net/ipv4/ip_forward
3.Проверить прохождения пакетов от узла 192.168.0.2 по маршруту по умолчанию:
а)В основной ВМ настроить прослушивание трафика на интерфейсе eth2, идущего на
# tcpdump -nep -i eth2
б)В дополнительной ВМ осуществить отправку тестовых
# ping 192.168.90.10
в)Если все манипуляции проделаны правильно, то в дополнительной ВМ будет отображаться сообщение о недоступности узла 192.168.90.10, а в основной ВМ в TCPDump будут отображаться исходящие фреймы на узел 00:00:00:00:00:AA, содержащие пакеты с исходящим IP-адресом 192.168.90.10.
4.Установить статический маршрут до сети 192.168.100.0 /24 через альтернативный шлюз 192.168.2.2:
а) В основной ВМ:
# ip route add to 192.168.100.0/24 via 192.168.2.2
б)Запуская TCPDump на интерфейсах eth1 и eth2 основной ВМ и используя команду ping в дополнительной ВМ убедиться, что трафик на сеть 192.168.100.0 /24 идет на интерфейс 192.168.2.2, а весь остальной трафик - на 192.168.1.2.
5.В основной ВМ установить маршрут до узла 192.168.101.11 через альтернативный шлюз 192.168.2.2.
6.В основной ВМ установить для пакетов узла 192.168.0.5 маршрут по умолчанию через альтернативный шлюз 192.168.2.2 (пример 10.5). В дополнительной ВМ установить дополнительный адрес 192.168.0.5 и проверить работоспособность установленного маршрута.
Операционная система 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
Для того, чтобы в примере 5.6. "Постоянные сетевые конфигурации" подсети 192.168.1.0/24 и 192.168.2.0/24 могли взаимодействовать друг с другом через указанный в примере компьютер Linux (выступает в качестве шлюза для данных подсетей) необходимо:
# 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.
Пусть необходимо обеспечить взаимодействие сетей 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).
К примеру
# 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
Последний маршрут здесь является статическим, так как должен быть задан администратором системы вручную.
Выбор
Пусть система имеет два интерфейса eth0(192.168.1.1/24) и eth1(192.168.56.102/24):
# ip addr show
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000 link/ether 08:00:27:23:22:97 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
inet6 fe80::a00:27ff:fe23:2297/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000 link/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.56.102/24 brd 192.168.56.255 scope global eth1
inet6 fe80::a00:27ff:fefd:e5aa/64 scope link
valid_lft forever preferred_lft forever
Маршрут по умолчанию у данной системы - 192.168.56.1:
# ip route show 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102 default via 192.168.56.1 dev eth1
При такой конфигурации для исходящих соединений будет использоваться интерфейс eth1 и IP-адрес 192.168.56.102 (кроме
соединений с узлами сети 192.168.1.0/24 — eth0 и IP-адрес 192.168.1.1). Ниже показан ping -c 1 192.168.3.4:
# tcpdump -ne -i eth1 host 192.168.3.4 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes 10:18:18.924084 08:00:27:fd:e5:aa > 0a:00:27:00:00:00, ethertype IPv4 (0x0800), length 98: 192.168.56.102 > 192.168.3.4: ICMP echo request, id 960, seq 1, length 64
Однако, если добавить альтернативный маршрут для сети 192.168.3.0/24 через некоторый шлюз 192.168.1.254:
# ip route add 192.168.3.0/24 via 192.168.1.254
то, для пакетов, предназначенных узлу 192.168.3.4, будет использоваться интерфейс eth0 и исходящий адрес 192.168.1.1
(показан
# tcpdump -ne -i eth0 host 192.168.3.4 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 10:23:33.393706 08:00:27:23:22:97 > 00:00:00:00:00:aa, ethertype IPv4 (0x0800), length 98: 192.168.1.1 > 192.168.3.4: ICMP echo request, id 968, seq 1, length 64
Синтаксис команды ip route позволяет повлиять на выбор локального IP-адреса при соединении с удаленными системами. Для этого служит
параметр src с указанием предпочитаемого IP-адреса (должен быть установлен на сетевом интерфейсе компьютера) для отправки пакетов на
направление, определяемое в команде префиксом маршрутизации.
Так, для указанной ниже конфигурации будет использоваться исходящий адрес 192.168.56.102 (кроме взаимодействия с узлами сети 192.168.1.0/24):
# ip addr show eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.56.102/24 brd 192.168.56.255 scope global eth1
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1:1
inet6 fe80::a00:27ff:fefd:e5aa/64 scope link
valid_lft forever preferred_lft forever
# ip route show
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102
default via 192.168.56.1 dev eth1
Для того, чтобы использовать исходный адрес 192.168.1.10 для соединения с узлами сети 192.168.3.0/24 следует использовать команду:
# ip route add 192.168.3.0/24 via 192.168.56.1 src 192.168.1.10 dev eth1:1
# ip route show 192.168.3.0/24 via 192.168.56.1 dev eth1 src 192.168.1.10 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102 default via 192.168.56.1 dev eth1
Классические алгоритмы маршрутизации используют только адрес получателя в качестве аргумента при принятии решения какому шлюзу
передавать пакет ( маршрутизация по назначению, destination-routing ). Однако в некоторых случаях необходимо
использовать другие параметры сетевого пакета: адрес источника, вид и порт транспортного протокола и т. д. ( маршрутизация на основе политик,
policy-routing ) . Маршрутизация на основе политик может использоваться при необходимости отправлять пакеты с
разных IP-адресов, для отправки пакетов через разные интерфейсы для различных TCP-портов,
Управление
Для управления списком правил используется команда ip rule. Принцип работы ip rule схож с другими командами ip. Применимы операции просмотра существующих правил ( list ), добавления нового правила ( add ), удаления
правила ( del ). Далее в команде необходимо указать селектор выбора пакетов (на основе адреса\сети отправителя\получателя, ip ).
По умолчанию в системе Linux присутствуют следующие
# ip rule show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default
В данном случае любой пакет ( from all ) последовательно будет проходить все таблицы ( local, main, default ) до первого
совпадения какой-либо записи.
Таблица local содержит записи локального характера (маршрутизация "внутри" компьютера, широковещательные IP-адреса
сегментов, в состав которых входит компьютер и т. д.). Данная таблица формируется автоматически и обычно не требует "ручного"
редактирования. Пример таблицы local:
# ip route show table local
broadcast 192.168.1.0 dev eth1 proto kernel scope link src 192.168.1.10 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 192.168.56.102 dev eth1 proto kernel scope host src 192.168.56.102 broadcast 192.168.56.0 dev eth1 proto kernel scope link src 192.168.56.102 broadcast 192.168.1.255 dev eth1 proto kernel scope link src 192.168.1.10 local 192.168.1.10 dev eth1 proto kernel scope host src 192.168.1.10 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 broadcast 192.168.56.255 dev eth1 proto kernel scope link src 192.168.56.102 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
Таблица main включает основные записи о маршрутизации, с нею работают утилита route и команда ip route без указания таблицы ( ip route show выводит содержимое таблицы main ). Пример таблицы main:
# ip route show table main 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.102 default via 192.168.56.1 dev eth1
Таблица default обычно пустая.
Описание существующих в системе
# cat /etc/iproute2/rt_tables 255 local 254 main 253 default 0 unspec
Для переопределения политики маршрутизации можно создавать дополнительные
Пусть шлюз локальной сети 192.168.1.0/24 имеет два сетевых интерфейса c IP-адресами 192.168.1.1/24 и 192.168.56.102/24 соответственно, маршрут по умолчанию — 192.168.56.1. Необходимо, чтобы шлюз отправлял трафик узла 192.168.1.10 по альтернативному маршруту 192.168.56.2.
Для решения данной задачи , во-первых, добавим в файл /etc/iproute2/rt_tables описание
дополнительной 200 и altroute ):
# echo 200 altroute >> /etc/iproute2/rt_tables
Во-вторых, добавим правило направления исходящих пакетов узла 192.168.1.10 в таблицу altroute:
# ip rule add from 192.168.1.10 lookup altroute
Список правил после выполнения данной команды:
# ip rule show 0: from all lookup local 32765: from 192.168.1.10 lookup altroute 32766: from all lookup main 32767: from all lookup default
В третьих, нужно в таблицу altroute добавить соответствующий маршрут:
# ip route add default via 192.168.56.2 dev eth1 table altroute # ip route flush cache
Содержимое таблицы altroute:
# ip route show table altroute default via 192.168.56.2 dev eth1
В результате на шлюзе исходящие пакеты узла 192.168.1.10 соответствующим правилом будут отправляться в таблицу altroute, в которой
как маршрут по умолчанию, указан узел 192.168.56.2. В тоже время исходящие пакеты других узлов сети 192.168.1.0/24 будут маршрутизироваться в
соответствии с маршрутами, указанными в таблице main.
Статическая маршрутизация — такой способ маршрутизации, при котором все необходимые маршруты устанавливаются администратором вручную (с помощью команд и конфигурационных файлов).
Маршрутизация по назначению (destination-routing) — классический подход к маршрутизации, при котором используется адрес назначения в качестве аргумента при принятии решения какому шлюзу передавать пакет.
Маршрутизация на основе политик (policy-routing) — маршрутизация на основе различных параметров: адреса источника, вид и порт транспортного протокола и т. д.
Маршрутизация по источнику (source-based routing) — вариант маршрутизации на основе политик, использующий адрес отправителя для принятия решения о маршрутизации.
ip route позволяет повлиять на выбор локального IP-адреса при соединении с удаленными системами.
Для этого служит параметр src с указанием предпочитаемого IP-адреса (должен быть установлен на сетевом интерфейсе компьютера) для
отправки пакетов на направление, определяемое в команде префиксом маршрутизации. Кроме того, сетевое программное обеспечение обычно имеет настройки,
позволяющие выбирать IP-адрес для исходящих подключений.ip rule.В среде VirtualBox реализовать стенд для изучения маршрутизации, состоящий из двух виртуальных машин: основной ВМ и дополнительной ВМ.
Основная ВМ предназначена для реализации функции маршрутизации пакетов удаленных сетей. Непосредственно к ней подключены сети: 192.168.0.0/24, 192.168.1.0/24 и 192.168.2.0/24 ("физические" интерфейсы: eth1 с IP-адресом 192.168.0.1, eth2 c IP-адресом 192.168.1.1, eth3 c IP-адресом 192.168.2.1). Последние два интерфейса используются для связи с удаленными сетями (шлюз по умолчанию — 192.168.1.2, альтернативный маршрут — 192.168.2.2).
Дополнительная ВМ предназначена для тестирования настроек маршрутизатора и межсетевого экрана путем отсылки тестовых IP-пакетов. Сеть 192.168.0.0/24 объединяет виртуальные машины (для дополнительной ВМ — IP-адрес 192.168.0.2 на интерфейсе eth1, в качестве шлюза по умолчанию - 192.168.0.1).
Все сетевые адаптеры включены во
tcpdump c указанием интерфейса мониторинга (-i) и не включая "беспорядочный" режим (-p):# tcpdump -nep -i eth2
1.Установить основной IP-адрес (192.168.0.2 /24) и шлюз по умолчанию (192.168.0.1) на дополнительной ВМ:
# ip addr add dev eth1 local 192.168.0.2 /24 broadcast 192.168.0.255 # ip link set eth1 up # ip route add default via 192.168.0.1
2.Установить в основной ВМ:
а)На интерфейс eth1 IP-адрес 192.168.0.1 /24
б)На интерфейс eth2 IP-адрес 192.168.1.1 /24
в)На интерфейс eth3 IP-адрес 192.168.2.1 /24
г)В качестве шлюза по умолчанию IP-адрес: 192.168.1.2
д)Внести статические записи в
# ip neighb add 192.168.1.2 lladdr 00:00:00:00:00:AA dev eth2 # ip neighb add 192.168.2.2 lladdr 00:00:00:00:00:BB dev eth3
е)Включить в ядре ОС функцию маршрутизации:
# echo 1 > /proc/sys/net/ipv4/ip_forward
3.Проверить прохождения пакетов от узла 192.168.0.2 по маршруту по умолчанию:
а)В основной ВМ настроить прослушивание трафика на интерфейсе eth2, идущего на
# tcpdump -nep -i eth2
б)В дополнительной ВМ осуществить отправку тестовых
# ping 192.168.90.10
в)Если все манипуляции проделаны правильно, то в дополнительной ВМ будет отображаться сообщение о недоступности узла 192.168.90.10, а в основной ВМ в TCPDump будут отображаться исходящие фреймы на узел 00:00:00:00:00:AA, содержащие пакеты с исходящим IP-адресом 192.168.90.10.
4.Установить статический маршрут до сети 192.168.100.0 /24 через альтернативный шлюз 192.168.2.2:
а) В основной ВМ:
# ip route add to 192.168.100.0/24 via 192.168.2.2
б)Запуская TCPDump на интерфейсах eth1 и eth2 основной ВМ и используя команду ping в дополнительной ВМ убедиться, что трафик на сеть 192.168.100.0 /24 идет на интерфейс 192.168.2.2, а весь остальной трафик - на 192.168.1.2.
5.В основной ВМ установить маршрут до узла 192.168.101.11 через альтернативный шлюз 192.168.2.2.
6.В основной ВМ установить для пакетов узла 192.168.0.5 маршрут по умолчанию через альтернативный шлюз 192.168.2.2 (пример 10.5). В дополнительной ВМ установить дополнительный адрес 192.168.0.5 и проверить работоспособность установленного маршрута.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.