Pull to refresh

Используем 2+ провайдера (первая часть)

Configuring Linux *
Здесь я хочу рассказать о настройке шлюза на Linux'e, для использования 2-х (и более) провайдеров интернета.
Для настройки мы будем использовать возможности iptables и утилиты ip из пакета, который как правило называется iproute2. А для решения поставленной задачи пакеты мы будем маршрутизировать на основе «policy routing» (т.е. маршрутизация на основе политик), а не «destination routing» (маршрутизация на основе адреса получателя).
Итак, приступим
Total votes 60: ↑50 and ↓10 +40
Views 49K
Comments 38

Объединение пропускной способности двух интернет каналов и простая отказоустойчивость

Configuring Linux *
Есть у меня своя домашняя сеть, с linux сервером, и подключена она к интернет с помощью беспроводного соединения — на крыше антена и роутер, к серверу подключено витой парой. Все вобщем то неплохо, канал с гарантированой полосой в обоих направлениях, постоянный IP адрес, довольно надежный — падает редко. Но вот есть у него один минус — цена кусается.
Ценовая политика провайдера построена так, что для того, чтоб увеличить скорость в два раза — платить тоже надо в два раза больше. А скорости хочется больше! И надежности тоже — как то во время сильных заморозков роутеру стало «холодно» и интернета вечером и ночью небыло.
Поэтому задумал я провести домой второй интернет-канал, выбар пал на одного известного на Украине провайдера, предоставляющего доступ по ADSL. У него и тарифы недорогие и модем ADSL стоит недорого. Так я и сделал, подключился, воткнул ADLS модем в свич — все работает. Но от старого доброго беспроводного канала отказываться мне нехотелось, поэтому задумал я сделать так, чтоб интернет трафик шел сразу по обеим каналам, так, чтоб я мог воспользоваться суммарной пропускной способностью. Да еще и чтоб при падении одного канала всю нагрузку на себя брал другой.

Читать дальше →
Total votes 105: ↑100 and ↓5 +95
Views 82K
Comments 106

Используем 2+ провайдера (вторая часть)

Configuring Linux *
Продолжим настройку нашего шлюза, про который я говорил в предыдущей статье. Напомню, там мы настроили правила маршрутизации, теперь нам надо заняться iptables. Сейчас мы настроим сеть состоящую из шлюза и сервера. На шлюзе будет работать SSH и DNS, а сервер у нас будет виндовый на нем у нас RDP и SMTP. Сеть будет настроена таким образом, что через любой из внешних айпишников мы сможем подключаться к любому из серверов, а SMTP сервер будет выходить наружу через основного провайдера.
Читать дальше...
Total votes 34: ↑29 and ↓5 +24
Views 25K
Comments 10

Причесываем трафик — динамический шейпер на Linux

Configuring Linux *
причесываем трафик
Предположим у вас есть домашняя сеть (или не домашняя, а сеть небольшого офиса) с выходом в интернет через не очень скоростной канал. А пользователей — много, и каждый хочет что-то скачивать, да с максимальной скоростью. Вот тут перед нами встатет задача, как максимально эффективно распределить наш интернет-канал между пользователями так, чтобы они не мешали друг другу. В этой статье я опишу, как можно решить такую задачу с помощью Linux-сервера.

Сформулируем, что же мы хотим получить в результате:
1. Чтобы канал поровну делился между пользователями.
2. Чтобы канал зря не простаивал.
3. Чтобы онлайн-игры, ssh и telnet не «лагали» даже при полной загрузке канала, например торрентами.
Читать дальше →
Total votes 100: ↑98 and ↓2 +96
Views 57K
Comments 98

Настройка роутинга для домашнего multihomed сервера

Configuring Linux *
Tutorial
Сейчас наличие нескольких подключений к интернет на одном, в том числе и домашнем сервере — не редкость. Городские локалки, ADSL, 3G модемы… Добавим к этому сети домашние локальные и внешние виртуальные (VPN), и получим ядрёную смесь интерфейсов, между которыми необходимо роутить трафик, балансировать трафик между разными каналами в интернет (когда они есть), и переключаться с нерабочих каналов на рабочие (когда они отваливаются).

Судя по постам в инете, большинство людей, столкнувшихся с этой ситуацией, очень плохо представляет себе, как это настраивается. Надо отметить, что в линухе действительно управление роутингом весьма сложное и запутанное — следствие эволюционного развития и поддержки (частичной) совместимости. Я хочу описать принципы настройки роутинга multihomed серверов на конкретном, достаточно сложном, примере: на сервере три физических сетевых интерфейса (один в домашнюю локалку и два к ADSL-модемам), два ADSL-подключения (ADSL-модемы в режиме bridge, так что pppd поднимает этот же сервер) к разным провайдерам (одно со статическим IP, второе с динамическим), плюс VPN на сервер компании — итого шесть интерфейсов.

Тема достаточно сложная, поэтому для понимания материала потребуется хотя бы минимальное понимание работы роутинга (что такое default route и gateway), файрвола (маркировка пакетов, отслеживание соединений, связь между разными таблицами и цепочками файрвола и роутингом), pppd (скрипты ip-up/ip-down) и протоколов IP и TCP.
Читать дальше →
Total votes 136: ↑129 and ↓7 +122
Views 29K
Comments 46

Multihome IPv4 в Linux

Configuring Linux *Network technologies *Server Administration *
Содержимое: как сделать так, чтобы компьютер отвечал в интернете на все свои IP-адреса по всем своим интерфейсам, каждый из которых имеет шлюз по умолчанию. Касается и серверов, и десктопов.

Ключевые слова: policy routing, source based routing

Лирика: Есть достаточно статей про policy routing в Linux. Но они чаще всего разбирают общие, более тонкие и сложные случаи. Я же разберу тривиальный сценарий следующего вида:



Нашему компьютеру (серверу) доступно три интерфейса. На каждом интерфейсе шлюз ему выдал IP (статикой или по dhcp, не важно) и сказал «весь трафик шли мне».

Если мы оставим эту конфигурацию как есть, то будет использоваться принцип «кто последний встал, того и дефолтный шлюз». На картинке выше, если последним поднимется нижний интерфейс (241), то в него будет отправляться весь трафик. Если к нашему серверу придёт запрос на первый интерфейс (188), то ответ на него всё равно пойдёт по нижнему. Если у маршрутизатора/провайдера есть хотя бы минимальная защита от подделки адресов, то ответ просто дропнут, как невалидный (с точки зрения 241.241.241.1 ему прислали из сети 241.241.241.0/24 пакет с src 188.188.188.188, чего, очевидно, быть не должно).

Другими словами, в обычном варианте будет работать только один интерфейс. Чтобы сделать ситуацию хуже, если адреса получены по dhcp, то обновление аренды на других интерфейсах может перезаписать шлюз по умолчанию, что означает, что тот интерфейс, который работал, работать перестанет, а начнёт работать другой интерфейс. Удачной стабильной работы вашему серверу, так сказать.

Решение

Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 26K
Comments 25

Роутинг и policy-routing в Linux при помощи iproute2

Configuring Linux *
Речь в статье пойдет о роутинге сетевых пакетов в Linux. А конкретно – о типе роутинга под названием policy-routing (роутинг на основании политик). Этот тип роутинга позволяет маршрутизировать пакеты на основании ряда достаточно гибких правил, в отличие от классического механизма маршрутизации destination-routing (роутинг на основании адреса назначения). Policy-routing применяется в случае наличия нескольких сетевых интерфейсов и необходимости отправлять определенные пакеты на определенный интерфейс, причем пакеты определяются не по адресу назначения или не только по адресу назначения. Например, policy-routing может использоваться для: балансировки трафика между несколькими внешними каналами (аплинками), обеспечения доступа к серверу в случае нескольких аплинков, при необходимости отправлять пакеты с разных внутренних адресов через разные внешние интерфейсы, даже для отправки пакетов на разные TCP-порты через разные интерфейсы и т.д.
Для управления сетевыми интерфейсами, маршрутизацией и шейпированием в Linux служит пакет утилит iproute2.
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Views 220K
Comments 10

Перенаправление траффика на удаленный сниффер средствами iptables+iproute2

System administration *
Sandbox
После покупки своего первого смартфона люди обычно замечают, что расходы на мобильную связь немного увеличиваются. Обычно это происходит за-за того, что «умный» телефон «ходит в Сеть» без ведома хозяина. Конечно, решить эту проблему просто — установить специальные утилиты для блокирования подключений к точкам доступа GPRS/HSDPA либо купить безлимитный тариф на доступ в Интернет и забыть. Столкнувшись с описанной ситуацией, я в первую очередь заинтересовался и тем, что телефон ищет в Сети и, самое главное, что передает в Сеть. Последнее особенно актуально в связи с недавними новостями.
Читать дальше →
Total votes 42: ↑39 and ↓3 +36
Views 41K
Comments 18

Кошерная организация туннелей в OpenWRT

*nix *
Итак нам требуется организовать туннель между двумя linux-хостами, одним из которых является наш soho-роутер с этой замечательной прошивкой на борту. Сразу оговоримся, что для нас самое важное — скорость соединения и уменьшение накладных расходов. Посему, о установке пакетов которые реализуют аутентификацию, шифровку трафика, но занимают большое количество заветных килобайт в памяти роутера, мы забудем.
Читать дальше →
Total votes 16: ↑11 and ↓5 +6
Views 34K
Comments 6

Новичкам про управление шириной канала в Linux

Configuring Linux *
Sandbox
Некоторое время назад меня попросили настроить в удаленном филиале простейшую балансировку трафика. Работают они, бедолаги, через ADSL, и отправка электронных писем большого объема (сканы документов) забивает им весь обратный канал, что приводит к проблемам в работе с офисными онлайн-программами через VPN.
В качестве шлюза у них используется Linux (Fedora). До этого я пару раз видел, как подобная балансировка настраивается через ipfw на FreeBSD, а так как знаю механизм iptables достаточно хорошо, не ожидал особых проблем. Но поискав в Интернете, я был неприятно удивлен тем, что iptables мне тут совсем не помощник. И знания о порядке прохождения пакетов через его таблицы и правила мне почти не пригодятся. Нужно изучать tc из пакета iproute2.

Неожиданно для себя, я потратил два дня, для того чтобы более-менее разобраться в балансировке трафика средствами iproute2. Сначала попалась не самая лучшая для новичка статья про HTB(здесь). Различные примеры из Интернет тоже порой вводили в ступор, так как в них часто не было описания конкретных опций или смысла их применения. Поэтому я и попытался собрать полученные мною знания в одну статью, а главное описать все на доступном для новичков уровне.
Читать дальше →
Total votes 115: ↑109 and ↓6 +103
Views 67K
Comments 21

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

Configuring Linux *System administration *Network technologies *
Обычно VRF (Virtual Routing and Forwarding, VPN Routing and Forwarding) используется совместно с MPLS, но без оной в терминологии Cisco называется VRF-Lite. Суть этой технологии в том, что маршрутная информация, принадлежащая различным классам (например, маршруты одного клиента) изолируется друг от друга. Считается, что такие возможности есть только у «взрослых» железных решений, но это не совсем так. Благодаря наличию множественных таблиц маршрутизации, гибких политик маршрутизации всё это можно сделать и в Linux. Кому интересно, добро пожаловать под кат.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Views 52K
Comments 14

Фильтрация черного списка сайтов по URL

Configuring Linux *Network technologies *
Sandbox
Tutorial
В данной статье рассмотрена связка Squid+TPROXY стоящий на отдельной машине. Как оказалось это тема почти не освещена на просторах интернета.

По роду занятия возникла задача фильтрации черного списка сайтов от РОСКОМНАДЗОРА. В ходе проверки нам пригрозили что если мы это не сделаем то введут санкции. Сказано сделано (всего на несколько минут) тупая и не очень дружественная к нашим клиентам реализация, которая просто не давала доступа ко всем сайтам внесенным в черный список. При этом фильтрация была просто по IP. И естественно перекрывала доступ ко всем сайтам на IP.

Нужно было переделывать, да еще и грамотно переделывать. Во первых это не красиво/коряво, во вторых задача сама по себе очень интересная.
Читать дальше →
Total votes 24: ↑8 and ↓16 -8
Views 18K
Comments 13

Настройка работы сервера на CentOS с 2 шлюзами и балансировки между ними

Configuring Linux **nix *Network technologies *
Recovery mode
Sandbox

Вместо вступления


За основу взята более ранняя прочитанная мной статья на Хабре, которой лично мне оказалось достаточно для понимания механизма policy routing в целом — и катастрофически мало для реализации этого типа маршрутизации на сервере компании. Было 2 серьезных подводных камня, над которыми пришлось работать самостоятельно, и которые нельзя оставить без внимания:

  • Сохранение настроек в целом
  • Перебивание настроек утилитой Network Manager


Свою статью я напишу в виде той инструкции, которую написал для будущих поколений айтишников в своей фирме — так что некоторые пункты из основной статьи буду приводить либо в неизменном, либо в пересказанном для себя виде. Их буду выделять курсивом. Для полного понимания того, что здесь написано, рекомендую ознакомиться с ней полностью.
Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 37K
Comments 21

Еще один способ перехвата трафика через ARP Spoofing

Information Security *
На Хабре было уже много статей на тему классического ARP спуфинга, однако все они были похожи тем, что для полноценного перехвата трафика надо было подменять ARP записи у двух машин. Как правило, это жертва и ее шлюз по умолчанию. Однако, идея спуфить шлюз не всегда хороша. Он вполне может иметь на борту детектор атак, который в два счета доложит админу что сеть ломают и халява кончится, не начавшись. В данной статье будет рассмотрен метод перехвата трафика, при котором атака производится только на хост-жертву. Как обычно в таких случаях, статья чисто для ознакомления, использование во вред карается по закону и т.д.
Под катом много букв.

Читать дальше →
Total votes 44: ↑42 and ↓2 +40
Views 84K
Comments 30

Мультипрокси на базе Debian и SQUID с прозрачной доменной аутентификацией

System administration **nix *
Sandbox
Поднимаем прокси сервер Squid, слушающий несколько портов. На каждый порт свой канал связи или внешний IP. Мануалов и статеек в интернетах полно, но общей сконсолидированной увы нет, решил поделиться.

Начнем.

Используется Debian 7.8, Samba 4, Squid 3, Kerberos 5.
Читать дальше →
Total votes 15: ↑11 and ↓4 +7
Views 26K
Comments 9

Iproute2 policy-routing и балансировка трафика между аплинками — проблема сброса соединений

Configuring Linux *System administration **nix *
Sandbox
Наткнулся на неприятный подводный камень. Имеем систему с несколькими аплинками, и policy-routing, реализующий балансировку соединений между аплинками с помощью:

ip route replace default scope global
nexthop via 11.22.33.1 dev eth0 weight 1
nexthop via 55.66.77.1 dev eth1 weight 1


(Примерная инструкция здесь)

Проблема заключается в следующем — соединения периодически падают, причём никакой системы нет. Может простоять несколько часов, может упасть через 5-10 минут. Всяким http и torrent'ам это не мешает. В первом случае сессии обычно достаточно короткие, во втором реконнект проходит незаметно и без последствий. Но если мы работаем с ssh?
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Views 12K
Comments 21

«Щадящая» балансировка между несколькими провайдерами на офисном шлюзе

Configuring Linux *System administration *Network technologies *
Tutorial
Эта статья описывает конфигурацию шлюза под управлением Linux для балансировки трафика между каналами разных провайдеров.


Результат, достигаемый в этом руководстве, отличается от результата подобных руководств: для каждого клиента используется один и тот же внешний IP-адрес, что избавляет от проблем с интернет-сервисами, которые не готовы к смене IP-адреса клиента в рамках одной сессии.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 20K
Comments 19

OSPF (Quagga), Shorewall и Policy Routing: проблема inactive route

Configuring Linux *System administration **nix *Network technologies *
Если кто-то использует quagga (OSPF) и планирует сделать балансировку каналов, через которые работает OSPF, используя Shorewall, прошу под кат.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 4.1K
Comments 2

Как распутать уроборос роутинга в Linux

Timeweb Cloud corporate blog System administration **nix *Network technologies *
image

Описание проблемы


Ситуация: у нас имеется один интерфейс eth0, «смотрящий» в интернет, с IP-адресом 192.168.11.11/24 и шлюзом 192.168.11.1. Нам нужно организовать интерфейс vpn0, который будет через VPN соединяться с неким сервером, и весь исходящий с этой машины трафик должен идти через этот интерфейс vpn0.

Примечание: я оставляю за скобками детали работы с IPv6, поскольку там хватает своих особенностей. Рассматривается только ситуация с IPv4.

Итак, мы берём в руки программу для подключения в VPN-у — она соединяется с неким VPN-сервером по адресу 10.10.10.10 и поднимает нам интерфейс vpn0 например с таким адресом: 192.168.120.10/24, шлюз 192.168.120.1. Казалось бы, всё хорошо, пинги через vpn0 ходят, коннект есть, он стабильный, осталось только прописать нечто вроде

ip route add default dev vpn0 metric 1000

чтобы перенаправить все соединения через новый интерфейс и…

И всё благополучно падает. Пропадает интернет, отваливается VPN, отключается ssh (если вы по нему подключены к хосту). Если приложение VPN-а не выключит интерфейс при потере соединения, то извне вы до этого хоста до ребута больше не подсоединитесь.

Что случилось?
Total votes 22: ↑22 and ↓0 +22
Views 10K
Comments 15