<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://vlgd61.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vinichenko</id>
		<title>Корпоративная wiki Администрации города Волгодонска - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://vlgd61.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vinichenko"/>
		<link rel="alternate" type="text/html" href="http://vlgd61.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Vinichenko"/>
		<updated>2026-10-09T09:21:27Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>http://vlgd61.ru/index.php?title=%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Linux&amp;diff=348</id>
		<title>Маршрутизация Linux</title>
		<link rel="alternate" type="text/html" href="http://vlgd61.ru/index.php?title=%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Linux&amp;diff=348"/>
				<updated>2017-12-06T10:18:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vinichenko: /* РЕШЕНИЕ: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ЛинУкс, как много в этом слове&lt;br /&gt;
&lt;br /&gt;
Для сердца Сисадминского слилось!&lt;br /&gt;
&lt;br /&gt;
(простите за потерю ритма) :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Учительница в школе спрашивает учеников, кем работают их родители. Обнаруживаются врачи, менеджеры по продажам, бухгалтеры… И тут встает Вовочка и заявляет: «А мой папа – тапер в борделе!». Учительница, естественно, не может закрыть на это глаза, отправляется к Вовочке домой и гневно спрашивает папу: «Какой пример вы подаете ребенку?». «Вообще-то я программист, — отвечает папа, — специализируюсь на TCP/IP в Unix. Но как объяснить это семилетнему пацану?».&lt;br /&gt;
&lt;br /&gt;
(бородатый анекдот)&lt;br /&gt;
&lt;br /&gt;
18+&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Многие сталкивались с ситуацией, когда им надо организовать маршрутизацию по нескольким выходным каналам.&lt;br /&gt;
У кого-то есть два канала в интернет, у кого-то есть специализированный канал для специализированной связи...&lt;br /&gt;
&lt;br /&gt;
Предлагаю рассмотреть вариант, когда есть два канала интернет, один спецканал, и две локальных сети. Достаточно сложная картинка, но она позволит показать все основные возможности маршрутизации в Linux.&lt;br /&gt;
&lt;br /&gt;
== ДАНО: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Провайдер0:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.0.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - DHCP/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth0&lt;br /&gt;
&lt;br /&gt;
''Ширина'' - 10Мбит/с&lt;br /&gt;
&lt;br /&gt;
'''Провайдер1:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.1.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.1.100/24 (&amp;quot;белый&amp;quot; IP)&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth1&lt;br /&gt;
&lt;br /&gt;
''Ширина'' - 3Мбит/с&lt;br /&gt;
&lt;br /&gt;
'''Спецканал:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.2.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.2.100/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth2&lt;br /&gt;
&lt;br /&gt;
'''ЛВС0:'''&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.10.1/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth3&lt;br /&gt;
&lt;br /&gt;
'''ЛВС1:'''&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.11.1/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth4&lt;br /&gt;
&lt;br /&gt;
'''Дополнительно ДАНО:'''&lt;br /&gt;
&lt;br /&gt;
''Спецсеть'' - 10.10.10.0/24&lt;br /&gt;
&lt;br /&gt;
''Особые сайты'': 123.145.167.189, 109.187.165.143&lt;br /&gt;
&lt;br /&gt;
== ЗАДАЧА: ==&lt;br /&gt;
&lt;br /&gt;
Распределить основной интернет-трафик согласно ширине канала по провайдерам.&lt;br /&gt;
&lt;br /&gt;
Обеспечить доступ в спецсеть из ЛВСх.&lt;br /&gt;
&lt;br /&gt;
Обеспечить доступ к особым сайтам через &amp;quot;белый&amp;quot; IP.&lt;br /&gt;
&lt;br /&gt;
Открыть некоторые порты...&lt;br /&gt;
&lt;br /&gt;
== РЕШЕНИЕ: ==&lt;br /&gt;
&lt;br /&gt;
'''НЕОБХОДИМЫЙ ИНСТРУМЕНТ:'''&lt;br /&gt;
&lt;br /&gt;
Windows отпал сразу, т.к. без дозакупки дополнительного ПО она мало что умеет, но, при желании, кое-что тоже сделать можно. Но не будем о чепухе!&lt;br /&gt;
&lt;br /&gt;
Linux - любой современный дистр уже имеет в своем комплекте iptables и iproute2. НО! Не все функции работают в различных сборках, о чем будет сказано позже. Мною использовались Ubuntu 16.04.3 server и OpenSUSE Leap 42.3.&lt;br /&gt;
&lt;br /&gt;
Теперь перейдем к теоретическому обоснованию решения.&lt;br /&gt;
&lt;br /&gt;
Когда мы говорим о маршрутизации, то нужно помнить, что маршрутизацию проходят пакеты, а не соединения. Т.е. когда наш шлюз получает очередной пакет, то он проходит по всем нашим правилам (ну или не по всем... :) ). Но при этом мы можем говорить о маршрутизации на уровне маршрутов (да, тавтология), на уровне соединений и на уровне пакетов, в зависимости от того, как мы напишем правила.&lt;br /&gt;
&lt;br /&gt;
Мы не можем маршрутизировать входящий трафик по нашим каналам! Мы можем только пытаться исходящим корректировать входящий.&lt;br /&gt;
&lt;br /&gt;
Далее обратимся к следующему термину - правила маршрутизации.&lt;br /&gt;
&lt;br /&gt;
Список правил можно получить командой:&lt;br /&gt;
&lt;br /&gt;
''ip rule show''&lt;br /&gt;
&lt;br /&gt;
Первым делом проверяется таблица local, а последними main и default.&lt;br /&gt;
&lt;br /&gt;
Проход по правилам идет в порядке увеличения числа priority. Также в правиле может быть прописаны условия выполнения (исходящий/входящий адрес/интерфейс и т.д.). Более подробно всегда можно прочитать в man.&lt;br /&gt;
&lt;br /&gt;
Таблицы маршрутизации.&lt;br /&gt;
&lt;br /&gt;
Каждая таблица маршрутизации состоит из направления (адреса получателя с маской), шлюза, интерфейса и метрики.&lt;br /&gt;
&lt;br /&gt;
Посмотреть таблицу main можно командой:&lt;br /&gt;
&lt;br /&gt;
''ip route show''&lt;br /&gt;
&lt;br /&gt;
другие таблицы:&lt;br /&gt;
&lt;br /&gt;
''ip route show table '''ИМЯ_ТАБЛИЦЫ''' ''&lt;br /&gt;
&lt;br /&gt;
В таблице local прописаны маршруты для нашего хоста и широковещательные.&lt;br /&gt;
&lt;br /&gt;
main - основная рабочая таблица для всех &amp;quot;нелокальных&amp;quot; маршрутов.&lt;br /&gt;
&lt;br /&gt;
default - процитирую: &amp;quot;reserved for post-processing&amp;quot; - зарезервирована для особых случаев, но ни разу еще не видел ее использования.&lt;br /&gt;
&lt;br /&gt;
Выбор маршрута из таблицы основан на направлении, потом на метрике. Выбирается маршрут с подходящим адресом и самой длинной маской.&lt;br /&gt;
&lt;br /&gt;
Например у нас прописаны два маршрута:&lt;br /&gt;
&lt;br /&gt;
''1. на 10.0.0.0/8 через 192.168.0.1''&lt;br /&gt;
&lt;br /&gt;
''2. на 10.10.10.0/24 через 192.168.0.2''&lt;br /&gt;
&lt;br /&gt;
В этом случае для хоста 10.10.10.1 будет выбран второй маршрут, а для хоста 10.10.20.1 - первый.&lt;br /&gt;
&lt;br /&gt;
Также может быть маршрут default (НЕ ТАБЛИЦА), который подразумевает направление 0.0.0.0/0&lt;br /&gt;
&lt;br /&gt;
Можно создавать дополнительные таблицы маршрутизации и обращаться к ним по номерам от 1 до 252 (0 - unspec, 253 - default, 254 - main, 255 - local) или по именам, но тогда надо прописать эти имена в файл /etc/iproute2/rt_tables.&lt;br /&gt;
&lt;br /&gt;
Основы сказал, остальную информацию можно получить по man.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Сначала балансировка:&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 1:&lt;br /&gt;
&lt;br /&gt;
Можно отправлять каждый 4-ый (см. ДАНО) пакет через второй канал и надеяться, что что-то из этого выйдет (маршрутизация на уровне пакетов). Но в этом варианте внешний хост будет получать от нас пакеты в одном соединении с разных IP-адресов, что снесет ему крышу и он нас пошлет.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 2:&lt;br /&gt;
&lt;br /&gt;
Можно отправлять каждое 4-ое соединение через второй канал (точнее пакеты каждого 4-го соединения). Этот вариант вполне рабочий, но мы можем упереться в особенности некоторых дистров Linux.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 3:&lt;br /&gt;
&lt;br /&gt;
Можно прописать каждый 4-ый маршрут через второй канал. Этот вариант также рабочий, но у него есть один существенный минус - может получиться так, что более востребованные маршруты пропишутся через один канал и вся нагрузка упадет на него.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 4:&lt;br /&gt;
&lt;br /&gt;
Учитывать объем переданной информации по каждому каналу. Данный вариант пока не рассматриваю, т.к. сам еще не разобрался.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Начну с третьего варианта, т.к. работать будет на любом дистре Linux.&lt;br /&gt;
&lt;br /&gt;
Основная часть задачи выполняется одной командой:&lt;br /&gt;
&lt;br /&gt;
''ip route add default nexthop via 192.168.0.1 dev eth0 weight 10 nexthop via 192.168.1.1 dev eth1 weight 3''&lt;br /&gt;
&lt;br /&gt;
После выполнения данной команды Linux будет случайным образом пропорционально указанным весам распределять маршруты. После чего они будут записываться в кэш маршрутизации. Это означает, что если первый раз на yandex.ru был выбран маршрут через первый шлюз, то дальше все запросы будут отправляться также на первый шлюз.&lt;br /&gt;
&lt;br /&gt;
''ip'' - собственно команда пакета iproute2&lt;br /&gt;
&lt;br /&gt;
''route'' - работаем с маршрутами&lt;br /&gt;
&lt;br /&gt;
''add'' - добавить&lt;br /&gt;
&lt;br /&gt;
''default'' - направление (0.0.0.0/0)&lt;br /&gt;
&lt;br /&gt;
''nexthop'' - следующий прыжок, т.е. какому шлюзу отправляем пакеты&lt;br /&gt;
&lt;br /&gt;
''via a.b.c.d'' - IP шлюза&lt;br /&gt;
&lt;br /&gt;
''dev ethX'' - через какой интерфейс&lt;br /&gt;
&lt;br /&gt;
''weight Y'' - &amp;quot;вес&amp;quot; данного шлюза, т.е. грубо - какая часть маршрутов будет проложена через него (в нашем случае будет 10/13 и 3/13)&lt;/div&gt;</summary>
		<author><name>Vinichenko</name></author>	</entry>

	<entry>
		<id>http://vlgd61.ru/index.php?title=%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Linux&amp;diff=347</id>
		<title>Маршрутизация Linux</title>
		<link rel="alternate" type="text/html" href="http://vlgd61.ru/index.php?title=%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Linux&amp;diff=347"/>
				<updated>2017-12-06T10:04:12Z</updated>
		
		<summary type="html">&lt;p&gt;Vinichenko: /* РЕШЕНИЕ: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ЛинУкс, как много в этом слове&lt;br /&gt;
&lt;br /&gt;
Для сердца Сисадминского слилось!&lt;br /&gt;
&lt;br /&gt;
(простите за потерю ритма) :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Учительница в школе спрашивает учеников, кем работают их родители. Обнаруживаются врачи, менеджеры по продажам, бухгалтеры… И тут встает Вовочка и заявляет: «А мой папа – тапер в борделе!». Учительница, естественно, не может закрыть на это глаза, отправляется к Вовочке домой и гневно спрашивает папу: «Какой пример вы подаете ребенку?». «Вообще-то я программист, — отвечает папа, — специализируюсь на TCP/IP в Unix. Но как объяснить это семилетнему пацану?».&lt;br /&gt;
&lt;br /&gt;
(бородатый анекдот)&lt;br /&gt;
&lt;br /&gt;
18+&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Многие сталкивались с ситуацией, когда им надо организовать маршрутизацию по нескольким выходным каналам.&lt;br /&gt;
У кого-то есть два канала в интернет, у кого-то есть специализированный канал для специализированной связи...&lt;br /&gt;
&lt;br /&gt;
Предлагаю рассмотреть вариант, когда есть два канала интернет, один спецканал, и две локальных сети. Достаточно сложная картинка, но она позволит показать все основные возможности маршрутизации в Linux.&lt;br /&gt;
&lt;br /&gt;
== ДАНО: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Провайдер0:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.0.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - DHCP/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth0&lt;br /&gt;
&lt;br /&gt;
''Ширина'' - 10Мбит/с&lt;br /&gt;
&lt;br /&gt;
'''Провайдер1:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.1.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.1.100/24 (&amp;quot;белый&amp;quot; IP)&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth1&lt;br /&gt;
&lt;br /&gt;
''Ширина'' - 3Мбит/с&lt;br /&gt;
&lt;br /&gt;
'''Спецканал:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.2.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.2.100/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth2&lt;br /&gt;
&lt;br /&gt;
'''ЛВС0:'''&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.10.1/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth3&lt;br /&gt;
&lt;br /&gt;
'''ЛВС1:'''&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.11.1/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth4&lt;br /&gt;
&lt;br /&gt;
'''Дополнительно ДАНО:'''&lt;br /&gt;
&lt;br /&gt;
''Спецсеть'' - 10.10.10.0/24&lt;br /&gt;
&lt;br /&gt;
''Особые сайты'': 123.145.167.189, 109.187.165.143&lt;br /&gt;
&lt;br /&gt;
== ЗАДАЧА: ==&lt;br /&gt;
&lt;br /&gt;
Распределить основной интернет-трафик согласно ширине канала по провайдерам.&lt;br /&gt;
&lt;br /&gt;
Обеспечить доступ в спецсеть из ЛВСх.&lt;br /&gt;
&lt;br /&gt;
Обеспечить доступ к особым сайтам через &amp;quot;белый&amp;quot; IP.&lt;br /&gt;
&lt;br /&gt;
Открыть некоторые порты...&lt;br /&gt;
&lt;br /&gt;
== РЕШЕНИЕ: ==&lt;br /&gt;
&lt;br /&gt;
'''НЕОБХОДИМЫЙ ИНСТРУМЕНТ:'''&lt;br /&gt;
&lt;br /&gt;
Windows отпал сразу, т.к. без дозакупки дополнительного ПО она мало что умеет, но, при желании, кое-что тоже сделать можно. Но не будем о чепухе!&lt;br /&gt;
&lt;br /&gt;
Linux - любой современный дистр уже имеет в своем комплекте iptables и iproute2. НО! Не все функции работают в различных сборках, о чем будет сказано позже. Мною использовались Ubuntu 16.04.3 server и OpenSUSE Leap 42.3.&lt;br /&gt;
&lt;br /&gt;
Теперь перейдем к теоретическому обоснованию решения.&lt;br /&gt;
&lt;br /&gt;
Когда мы говорим о маршрутизации, то нужно помнить, что маршрутизацию проходят пакеты, а не соединения. Т.е. когда наш шлюз получает очередной пакет, то он проходит по всем нашим правилам (ну или не по всем... :) ). Но при этом мы можем говорить о маршрутизации на уровне маршрутов (да, тавтология), на уровне соединений и на уровне пакетов, в зависимости от того, как мы напишем правила.&lt;br /&gt;
&lt;br /&gt;
Мы не можем маршрутизировать входящий трафик по нашим каналам! Мы можем только пытаться исходящим корректировать входящий.&lt;br /&gt;
&lt;br /&gt;
Далее обратимся к следующему термину - правила маршрутизации.&lt;br /&gt;
&lt;br /&gt;
Список правил можно получить командой:&lt;br /&gt;
&lt;br /&gt;
''ip rule show''&lt;br /&gt;
&lt;br /&gt;
Первым делом проверяется таблица local, а последними main и default.&lt;br /&gt;
&lt;br /&gt;
Проход по правилам идет в порядке увеличения числа priority. Также в правиле может быть прописаны условия выполнения (исходящий/входящий адрес/интерфейс и т.д.). Более подробно всегда можно прочитать в man.&lt;br /&gt;
&lt;br /&gt;
Таблицы маршрутизации.&lt;br /&gt;
&lt;br /&gt;
Каждая таблица маршрутизации состоит из направления (адреса получателя с маской), шлюза, интерфейса и метрики.&lt;br /&gt;
&lt;br /&gt;
Посмотреть таблицу main можно командой:&lt;br /&gt;
&lt;br /&gt;
''ip route show''&lt;br /&gt;
&lt;br /&gt;
другие таблицы:&lt;br /&gt;
&lt;br /&gt;
''ip route show table '''ИМЯ_ТАБЛИЦЫ''' ''&lt;br /&gt;
&lt;br /&gt;
В таблице local прописаны маршруты для нашего хоста и широковещательные.&lt;br /&gt;
&lt;br /&gt;
main - основная рабочая таблица для всех &amp;quot;нелокальных&amp;quot; маршрутов.&lt;br /&gt;
&lt;br /&gt;
default - процитирую: &amp;quot;reserved for post-processing&amp;quot; - зарезервирована для особых случаев, но ни разу еще не видел ее использования.&lt;br /&gt;
&lt;br /&gt;
Выбор маршрута из таблицы основан на направлении, потом на метрике. Выбирается маршрут с подходящим адресом и самой длинной маской.&lt;br /&gt;
&lt;br /&gt;
Например у нас прописаны два маршрута:&lt;br /&gt;
&lt;br /&gt;
''1. на 10.0.0.0/8 через 192.168.0.1''&lt;br /&gt;
&lt;br /&gt;
''2. на 10.10.10.0/24 через 192.168.0.2''&lt;br /&gt;
&lt;br /&gt;
В этом случае для хоста 10.10.10.1 будет выбран второй маршрут, а для хоста 10.10.20.1 - первый.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Сначала балансировка:&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 1:&lt;br /&gt;
&lt;br /&gt;
Можно отправлять каждый 4-ый (см. ДАНО) пакет через второй канал и надеяться, что что-то из этого выйдет (маршрутизация на уровне пакетов). Но в этом варианте внешний хост будет получать от нас пакеты в одном соединении с разных IP-адресов, что снесет ему крышу и он нас пошлет.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 2:&lt;br /&gt;
&lt;br /&gt;
Можно отправлять каждое 4-ое соединение через второй канал (точнее пакеты каждого 4-го соединения). Этот вариант вполне рабочий, но мы можем упереться в особенности некоторых дистров Linux.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 3:&lt;br /&gt;
&lt;br /&gt;
Можно прописать каждый 4-ый маршрут через второй канал. Этот вариант также рабочий, но у него есть один существенный минус - может получиться так, что более востребованные маршруты пропишутся через один канал и вся нагрузка упадет на него.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 4:&lt;br /&gt;
&lt;br /&gt;
Учитывать объем переданной информации по каждому каналу. Данный вариант пока не рассматриваю, т.к. сам еще не разобрался.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Начну с третьего варианта, т.к. работать будет на любом дистре Linux.&lt;br /&gt;
&lt;br /&gt;
Основная часть задачи выполняется одной командой:&lt;br /&gt;
&lt;br /&gt;
ip route add default nexthop via 192.168.0.1 dev eth0 weight 10 nexthop via 192.168.1.1 dev eth1 weight 3&lt;br /&gt;
&lt;br /&gt;
После выполнения данной команды Linux будет случайным образом пропорционально указанным весам распределять маршруты. После чего они будут записываться в кэш маршрутизации. Это означает, что если первый раз на yandex.ru был выбран маршрут через первый шлюз, то дальше все запросы будут отправляться также на первый шлюз.&lt;/div&gt;</summary>
		<author><name>Vinichenko</name></author>	</entry>

	<entry>
		<id>http://vlgd61.ru/index.php?title=%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Linux&amp;diff=346</id>
		<title>Маршрутизация Linux</title>
		<link rel="alternate" type="text/html" href="http://vlgd61.ru/index.php?title=%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Linux&amp;diff=346"/>
				<updated>2017-12-06T08:57:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vinichenko: Новая страница: «ЛинУкс, как много в этом слове  Для сердца Сисадминского слилось!  (простите за потерю рит…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ЛинУкс, как много в этом слове&lt;br /&gt;
&lt;br /&gt;
Для сердца Сисадминского слилось!&lt;br /&gt;
&lt;br /&gt;
(простите за потерю ритма) :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Учительница в школе спрашивает учеников, кем работают их родители. Обнаруживаются врачи, менеджеры по продажам, бухгалтеры… И тут встает Вовочка и заявляет: «А мой папа – тапер в борделе!». Учительница, естественно, не может закрыть на это глаза, отправляется к Вовочке домой и гневно спрашивает папу: «Какой пример вы подаете ребенку?». «Вообще-то я программист, — отвечает папа, — специализируюсь на TCP/IP в Unix. Но как объяснить это семилетнему пацану?».&lt;br /&gt;
&lt;br /&gt;
(бородатый анекдот)&lt;br /&gt;
&lt;br /&gt;
18+&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Многие сталкивались с ситуацией, когда им надо организовать маршрутизацию по нескольким выходным каналам.&lt;br /&gt;
У кого-то есть два канала в интернет, у кого-то есть специализированный канал для специализированной связи...&lt;br /&gt;
&lt;br /&gt;
Предлагаю рассмотреть вариант, когда есть два канала интернет, один спецканал, и две локальных сети. Достаточно сложная картинка, но она позволит показать все основные возможности маршрутизации в Linux.&lt;br /&gt;
&lt;br /&gt;
== ДАНО: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Провайдер0:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.0.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - DHCP/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth0&lt;br /&gt;
&lt;br /&gt;
''Ширина'' - 10Мбит/с&lt;br /&gt;
&lt;br /&gt;
'''Провайдер1:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.1.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.1.100/24 (&amp;quot;белый&amp;quot; IP)&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth1&lt;br /&gt;
&lt;br /&gt;
''Ширина'' - 3Мбит/с&lt;br /&gt;
&lt;br /&gt;
'''Спецканал:'''&lt;br /&gt;
&lt;br /&gt;
''Шлюз IP'' - 192.168.2.1/24&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.2.100/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth2&lt;br /&gt;
&lt;br /&gt;
'''ЛВС0:'''&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.10.1/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth3&lt;br /&gt;
&lt;br /&gt;
'''ЛВС1:'''&lt;br /&gt;
&lt;br /&gt;
''Наш IP'' - 192.168.11.1/24&lt;br /&gt;
&lt;br /&gt;
''Интерфейс'' - eth4&lt;br /&gt;
&lt;br /&gt;
'''Дополнительно ДАНО:'''&lt;br /&gt;
&lt;br /&gt;
''Спецсеть'' - 10.10.10.0/24&lt;br /&gt;
&lt;br /&gt;
''Особые сайты'': 123.145.167.189, 109.187.165.143&lt;br /&gt;
&lt;br /&gt;
== ЗАДАЧА: ==&lt;br /&gt;
&lt;br /&gt;
Распределить основной интернет-трафик согласно ширине канала по провайдерам.&lt;br /&gt;
&lt;br /&gt;
Обеспечить доступ в спецсеть из ЛВСх.&lt;br /&gt;
&lt;br /&gt;
Обеспечить доступ к особым сайтам через &amp;quot;белый&amp;quot; IP.&lt;br /&gt;
&lt;br /&gt;
Открыть некоторые порты...&lt;br /&gt;
&lt;br /&gt;
== РЕШЕНИЕ: ==&lt;br /&gt;
&lt;br /&gt;
'''НЕОБХОДИМЫЙ ИНСТРУМЕНТ:'''&lt;br /&gt;
&lt;br /&gt;
Windows отпал сразу, т.к. без дозакупки дополнительного ПО она мало что умеет, но, при желании, кое-что тоже сделать можно. Но не будем о чепухе!&lt;br /&gt;
&lt;br /&gt;
Linux - любой современный дистр уже имеет в своем комплекте iptables и iproute2. НО! Не все функции работают в различных сборках, о чем будет сказано позже. Мною использовались Ubuntu 16.04.3 server и OpenSUSE Leap 42.3.&lt;br /&gt;
&lt;br /&gt;
Теперь перейдем к теоретическому обоснованию решения.&lt;br /&gt;
&lt;br /&gt;
Когда мы говорим о маршрутизации, то нужно помнить, что маршрутизацию проходят пакеты, а не соединения. Т.е. когда наш шлюз получает очередной пакет, то он проходит по всем нашим правилам (ну или не по всем... :) ). Но при этом мы можем говорить о маршрутизации на уровне маршрутов (да, тавтология), на уровне соединений и на уровне пакетов, в зависимости от того, как мы напишем правила.&lt;br /&gt;
&lt;br /&gt;
Мы не можем маршрутизировать входящий трафик по нашим каналам! Мы можем только пытаться исходящим корректировать входящий.&lt;br /&gt;
&lt;br /&gt;
Начнем с балансировки:&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 1:&lt;br /&gt;
&lt;br /&gt;
Можно отправлять каждый 4-ый (см. ДАНО) пакет через второй канал и надеяться, что что-то из этого выйдет (маршрутизация на уровне пакетов). Но в этом варианте внешний хост будет получать от нас пакеты в одном соединении с разных IP-адресов, что снесет ему крышу и он нас пошлет.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 2:&lt;br /&gt;
&lt;br /&gt;
Можно отправлять каждое 4-ое соединение через второй канал (точнее пакеты каждого 4-го соединения). Этот вариант вполне рабочий, но мы можем упереться в особенности некоторых дистров Linux.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 3:&lt;br /&gt;
&lt;br /&gt;
Можно прописать каждый 4-ый маршрут через второй канал. Этот вариант также рабочий, но у него есть один существенный минус - может получиться так, что более востребованные маршруты пропишутся через один канал и вся нагрузка упадет на него.&lt;br /&gt;
&lt;br /&gt;
ВАРИАНТ 4:&lt;br /&gt;
&lt;br /&gt;
Учитывать объем переданной информации по каждому каналу. Данный вариант пока не рассматриваю, т.к. сам еще не разобрался.&lt;/div&gt;</summary>
		<author><name>Vinichenko</name></author>	</entry>

	</feed>