Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Часть 1
Всеволод Стахов
Наверное, любой из вас хотя бы отдаленно знает, что такое маршрутизация. Итак, маршрутизация – это, как бы это банально не звучало, есть выбор маршрута. В данной статье под этим термином я буду понимать выбор маршрута следования сетевого IP-пакета. Дело в том, что современные программные маршрутизаторы (а рассказывать я буду как раз об одном из представителей данного класса устройств) умеют полноценно работать только с протоколом IP.
Почему же я решил описать построение маршрутизатора именно на основе ОС GNU/Linux(*)? Тут две основные причины:
n ядро GNU/Linux способно уместиться на дискете, что может позволить создать весьма функциональный маршрутизатор вне зависимости от конкретной машины, кроме этого, можно «оживить» старые машины и заставить их работать на пользу людям;
n ядро Linux(2.4, 2.2) поддерживает очень полезные функции маршрутизации, и может быть специально «заточено» под использование в качестве маршрутизатора, кроме этого, стандартный брандмауэр Linux 2.4 – iptables может «метить» (не подумайте ничего плохого) определённые пакеты, а ядро может выполнять выбор маршрута согласно этим меткам.
Это открывает широкие возможности при создании сетей со сложной структурой. Ещё очень важной особенностью является универсальность GNU/Linux, по-моему, эта ОС поддерживает в той или иной степени все распространённые сетевые протоколы. Ещё одной немаловажной особенностью является бесплатность всей системы маршрутизации. С точки зрения многих администраторов, маршрутизатор – это просто черный ящик, принимающий и передающий пакеты, однако грамотная настройка маршрутизации – залог эффективности и зачастую безопасности всей сети. Очень интересно использовать маршрутизацию для распределения нагрузки, передачи определённого трафика на определённый хост (для анализа) и уменьшения опасности DoS-атак. Маршрутизация способна ограничивать сетевые «штормы» и существенно увеличить пропускную способность сети. Я решил построить эту статью в виде конкретных примеров настройки маршрутизации (в дальнейшем я иногда буду употреблять слово роутинг).
Маршрутизация бывает статической и динамической. Отличие в том, что при статической маршрутизации все правила передачи пакетов прописываются статически и могут быть изменены только вручную, динамическая маршрутизация применяется, когда в сети существует несколько маршрутизаторов, и нахождение пути до удаленного хоста становится нетривиальной задачей. Динамическая маршрутизация больше подходит для часто меняющихся сетей со сложной структурой. Хотя GNU/Linux поддерживает оба типа маршрутизации, но в рамках данной статьи я буду рассказывать о статической маршрутизации при помощи пакета iproute2, написанного нашим программистом Алексеем Кузнецовым. Для начала работы необходимо настроить соответствующим образом ядро и установить пакет iproute. Остановлюсь на настройке ядра. В ядре необходимо включить ряд опций маршрутизации (думаю, нет нужды объяснять, как настраивать и компилировать ядро).Я предполагаю, что вы настраиваете ядро командой:
# make menuconfig
На странице Networking Options необходимо включить следующие элементы:
n IP: advanced router – включение расширенных возможностей маршрутизации;
n IP: policy routing – маршрутизация по некоторым внутренним полям пакетов (обычно применяется совместно с брандмауэром), а также для расширенных возможностей маршрутизации, например, маршрутизация согласно адресу-источнику пакета (source-based routing);