Нажмите CTRL-D чтобы добавить нас в закладки
Внимание! Вы находитесь в незащищенном режиме (HTTP). Для перехода в защищенный режим SSL, нажмите здесь
HackZone.RU - Туннели ядерного уровня.
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Поиск ТОП Добавить публикацию

Туннели ядерного уровня.

19.10.2008


В этой статье будет описана техника организации сетевых туннелей и нестандартное их использование.

Теория.
Определения:

Туннель - это сквозной коридор находящийся внутри какой-либо среды.
Сетевой туннель – это логическая сеть, созданная поверх другой сети.

Сетевые туннели позволяют организовать (защищённую) связь хост-хост, хост-сеть и сеть-сеть (даже если эти сети имеют разные транспортные технологии) одним соединением. Любой сетевой туннель выполняет туннелирование (tunneling) инкапсуляцию одной дейтаграммы (возможно зашифрованной) в другую.

Рассмотрим два типа туннелей: IPIP и GRE – это туннели ядерного уровня.

IPIP-туннель (IP-within-IP Encapsulation Protocol).
Тут все просто, в IP-пакет вместо TCP, UDP или любого другого пакета заворачивается еще один
IP-пакет, а в поле “протокол” ставится соответствующий номер IPIP - 94.
Через IPIP- тоннель нельзя передавать broadcast, multicast и пакеты IPv6.
Можно соединить только две сети IPv4, которые в обычной ситуации не могли бы работать друг с другом.

GRE-туннель (General Routing Encapsulation).
GRE - это протокол туннелирования (инкапсуляции), который был разработан фирмой Cisco.
По туннелям этого типа могут передаваться broadcast, multicast пакеты и IPv6.
Также GRE-туннели обладают опциональным атрибутом key в виде произвольного 4-байтового числа,
который позволяет сконфигурированный несколько GRE-туннелей между одной парой IP-адресов основной сети (в отличии от IPIP-туннелей, в которых это невозможно).
Номер протокола GRE – 47.

Данные по обоим типам туннелей передаются в не зашифрованном виде, рекомендуется в связке c IPIP или GRE использовать IPSec.

IPSec (IP Security) — это набор протоколов (основные AH и ESP) которые обеспечивают защиту передаваемых данных.

AH (Authentication Header)- гарантирует целостность содержимого пакета и аутентичность данных.
Hомер протокола - 51.
ESP (Encapsulating Security Protocol) - шифрует передаваемы данные.
Номер протокола - 50.
Номера протоколов указываются не для общего развития а, для того, чтоб в политиках брандмауэра они были учтены (разрешены).

Практика.

В нашем распоряжении есть две системы:

Первая: ОС GNU/Linux kernel-2.6.24 (обязательные модули ядра ipip, new_tunnel, ip_gre и sch_teql),
имя - vangog,
ppp0 — 92.112.207.30 и ppp1 — 92.112.236.124 (два канала по одному мегабиту).
Обязательно установленные пакеты iproute и ipsec-tools.

Вторая: ОС GNU/Linux kernel-2.6.24 (обязательные модули ядра ipip, new_tunnel, ip_gre sch_teql),
имя — adolf,
eth0 — 80.90.160.105 (канал > ppp0+ppp1 (относительно первой системы) ).
Обязательно установленные пакеты iproute и ipsec-tools.

Управление туннелями осуществляется посредством команды ip tunnel (она входит в пакет программ iproute) (не забываем читать man).

Организуем туннель между первой и второй системами.

На первой:

[root@vangog]ip tunnel add tunnel0 mode gre local 92.112.207.30 dev ppp0 remote 80.90.160.105 ttl 255
[root@vangog]ip link set tunnel0 up
[root@vangog]ip addr add 10.100.0.10 dev tunnel0
[root@vangog]ip route add 10.100.0.0/24 dev tunnel0

На второй:

[root@adolf] ip tunnel add tunnel0 mode gre local 80.90.160.105 remote 92.112.207.30 ttl 255
[root@adolf] ip link set tunnel0 up
[root@adolf] ip addr add 10.100.0.20 dev tunnel0
[root@adolf] ip route add 10.100.0.0/24 dev tunnel0

Описание касается и первой и второй систем.

Первой строчкой мы добавили туннельное устройство с названием tunnel0, указали тип туннеля GRE, указали локальную и удалённую точки туннеля (откуда и куда надо отправлять данные предназначенные для передачи по этому туннелю) и TTL-поле пакета должно равняться 255. Второй строчкой переводим туннельное устройство в активное состояние.
Третьей строчкой присваиваем туннельному устройству IP-адрес.
Четвёртой строчкой определяем маршрут к сети 10.100.0.0/24.

Проверяем

[root@vangog]ping 10.100.0.20
PING 10.100.0.20 (10.100.0.20) 56(84) bytes of data.
64 bytes from 10.100.0.20: icmp_seq=1 ttl=64 time=135 ms
64 bytes from 10.100.0.20: icmp_seq=2 ttl=64 time=135 ms
...
[root@adolf]tcpdump -i tunnel0
IP 10.100.0.10 > 10.100.0.20: ICMP echo request, seq 1, length 64
IP 10.100.0.20 > 10.100.0.10: ICMP echo reply, seq 1, length 64
IP 10.100.0.10 > 10.100.0.20: ICMP echo request, seq 2, length 64
IP 10.100.0.20 > 10.100.0.10: ICMP echo reply, seq 2, length 64

Схема туннеля показана на рис.1


Рис 1.


Для общего развития

Из примера видно: данные, передаваемые по этому каналу, не шифруются.
Воспользуемся IPSec для организации защищённого соединения.
Редактируем конфигурационный файл ipsec-tools.conf на обеих системах (файл исполняемый).

На первой:

flush;
spdflush;

# AH
add 10.100.0.10 10.100.0.20 ah 15700 -A hmac-md5 "1234567890123456";
add 10.100.0.20 10.100.0.10 ah 24500 -A hmac-md5 "1234567890123456";

#ESP
add 10.100.0.10 10.100.0.20 esp 15701 -E 3des-cbc "123456789012123456789012";
add 10.100.0.20 10.100.0.10 esp 24501 -E 3des-cbc "123456789012123456789012";

spdadd 10.100.0.10 10.100.0.20 any -P out ipsec
esp/transport//require;
spdadd 10.100.0.20 10.100.0.10 any -P in ipsec
esp/transport//require;
Запускаем его.

На второй:

flush;
spdflush;

# AH
add 10.100.0.10 10.100.0.20 ah 15700 -A hmac-md5 "1234567890123456";
add 10.100.0.20 10.100.0.10 ah 24500 -A hmac-md5 "1234567890123456";

#ESP
add 10.100.0.10 10.100.0.20 esp 15701 -E 3des-cbc "123456789012123456789012";
add 10.100.0.20 10.100.0.10 esp 24501 -E 3des-cbc "123456789012123456789012";

spdadd 10.100.0.20 10.100.0.10 any -P out ipsec
esp/transport//require;
spdadd 10.100.0.10 10.100.0.20 any -P in ipsec
esp/transport//require;
Запускаем его.

Проверяем

[root@vangog]ping 10.100.0.20
PING 10.100.0.20 (10.100.0.20) 56(84) bytes of data.
64 bytes from 10.100.0.20: icmp_seq=1 ttl=64 time=135 ms
64 bytes from 10.100.0.20: icmp_seq=2 ttl=64 time=135 ms
...
[root@adolf]tcpdump -i tunnel0
IP 10.100.0.10 > 10.100.0.20: ESP(spi=0x00003d55,seq=0x7), length 88
IP 10.100.0.20 > 10.100.0.10: ESP(spi=0x00005fb5,seq=0x7), length 88
IP 10.100.0.10 > 10.100.0.20: ESP(spi=0x00003d55,seq=0x8), length 88
P 10.100.0.20 > 10.100.0.10: ESP(spi=0x00005fb5,seq=0x8), length 88

Данные шифруются.
Описывать параметры конфигурационных файлов ipsec-tools.conf не буду, там все интуитивно ясно.


Двигаемся дальше.

Усложним нашу схему вторым туннелем.

На первой:

[root@vangog]ip tunnel add tunnel1 mode gre local 92.112.236.124 dev ppp1 remote 80.90.160.105 ttl 255
[root@vangog]ip link set tunnel1 up
[root@vangog]ip addr add 10.100.0.30 dev tunnel1

На второй:

[root@adolf]ip tunnel add tunnel1 mode gre local 80.90.160.105 remote 92.112.236.124 ttl 255
[root@adolf]ip link set tunnel1 up
[root@adolf]ip addr add 10.100.0.40 dev tunnel1


Схема с двумя туннелями показана на рис. 2


Рис.2

Мы соединили удалённые системы двумя одномегабитными виртуальными каналами.
Следующий шаг это объединение этих двух в один двухмегабитный.

На обеих системах выполняем следующую команду:

[root@vangog]modprobe sch_teql
---
[root@adolf]modprobe sch_teql

После чего появится новый интерфейс с названием teql0.
Далее для каждого виртуального интерфейса (tunnel0 и tunnel1) на каждой системе указываем в качестве корневого qdisc-a teql0
(что такое qdisc будет рассказано в другой статье, т.к это совсем другая тема разговора).

[root@vangog]tc qdisc add dev tunnel0 root teql0
[root@vangog]tc qdisc add dev tunnel1 root teql0
---
[root@adolf]tc qdisc add dev tunnel0 root teql0
[root@adolf]tc qdisc add dev tunnel1 root teql0

Присваиваем новому интерфейсу teql0 IP-адрес (на каждой системе).

[root@vangog]ifconfig teql0 10.100.0.2 netmask 255.255.255.0 up
---
[root@adolf]ifconfig teql0 10.100.0.1 netmask 255.255.255.0 up

Выключаем rt_filter на каждом виртуальном интерфейсе, подключённом к teql0 на обеих системах, так как на каждый интерфейс будут приходить пакеты dst ip не равным ip этого интерфейса, а равным ip интерфейса teql0.

[root@vangog]echo “0” > /proc/sys/net/ipv4/conf/tunnel0/rp_filter
[root@vangog]echo “0” > /proc/sys/net/ipv4/conf/tunnel1/rp_filter
---
[root@adolf]echo “0” > /proc/sys/net/ipv4/conf/tunnel0/rp_filter
[root@adolf]echo “0” > /proc/sys/net/ipv4/conf/tunnel1/rp_filter

Меняем маршрут к сети 10.100.0.0/24 (на каждой системе).

[root@vangog]ip route add 10.100.0.0/24 dev teql0
---
[root@adolf]ip route add 10.100.0.0/24 dev teql0

Схема с тремя туннелями показана на рисунке 3.


Рис 3.

Проверяем

[root@vangog]ping -с 10 10.100.0.1
PING 10.100.0.1 (10.100.0.1) 56(84) bytes of data.
64 bytes from 10.100.0.1: icmp_seq=1 ttl=64 time=125 ms
64 bytes from 10.100.0.1: icmp_seq=2 ttl=64 time=135 ms
64 bytes from 10.100.0.1: icmp_seq=3 ttl=64 time=130 ms
64 bytes from 10.100.0.1: icmp_seq=4 ttl=64 time=135 ms
64 bytes from 10.100.0.1: icmp_seq=5 ttl=64 time=135 ms
64 bytes from 10.100.0.1: icmp_seq=6 ttl=64 time=135 ms
64 bytes from 10.100.0.1: icmp_seq=7 ttl=64 time=135 ms
64 bytes from 10.100.0.1: icmp_seq=8 ttl=64 time=145 ms
64 bytes from 10.100.0.1: icmp_seq=9 ttl=64 time=135 ms
64 bytes from 10.100.0.1: icmp_seq=10 ttl=64 time=150 ms
---
[root@vangog]tcpdump -i tunnel0
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 1, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 3, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 5, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 7, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 9, length 64
---
[root@vangog]tcpdump -i tunnel1
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 2, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 4, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 6, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 8, length 64
IP 10.100.0.2 > 10.100.0.1: ICMP echo request, seq 10, length 64

Видно, что teql равномерно разбросал по 5 пакетов в каждый интерфейс.
Ответы приходят тоже, через разные интерфейсы.
Во время тестов, когда каналы подверглись действительной нагрузке на выходе была скорость ровно два мегабита!

Вот и все что я хотел рассказать и показать по этому поводу.
Если у кого-то появятся новые идеи или дополнения к этой теме, с удовольствием выслушаю.

Особенно хотелось услышать ваши мысли по усовершенствованию этой схемы:

1) Если один виртуальный линк "упал", а в связке их не два, а пять. Как оперативно найти нерабочий (автоматически конечно) и изъять его из "обоймы", а при восстановлении линии вернуть на прежнее место?

2) Как к одной системе к примеру с одним сетевым интерфейсом подключить через PPPoE соединение сколько угодно много ADSL модемов ? Естественно чтоб они работали!
Или любой другой способ подключения модемов, главное чтоб одной системе (с одним сетевым интерфейсом) одновременно были присвоены IP-адреса модемов, которые им выдал провайдер!

P.S
Сам не знаю почему в статье ни разу не упоминалась аббревиатура VPN. Катаклизма.





by palladium

При копировании материалов ссылка на HackZone.RU обязательна

Добавить страницу в закладки

 Детали
Категория: Сети и коммуникации
Опубликовал: RenGO
Просмотров: 15236
Проголосовало через SMS: 0
Ключевые слова: туннели, ipip, gre, vpn, (найти похожие документы)
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

 Комментарии (оставить свой комментарий можно здесь)
1) Если один виртуальный линк "упал", а в связке их не два, а пять. Как оперативно найти нерабочий (автоматически конечно) и изъять его из "обоймы", а при восстановлении линии вернуть на прежнее место?

В Gentoo есть такая фишка, называется bonding! :) Всё что ты тут написал можно сократить раза в 2 только с использованием bond`а. Юзай генту, чел! :)
 
2) Как к одной системе к примеру с одним сетевым интерфейсом подключить через PPPoE соединение сколько угодно много ADSL модемов ? Естественно чтоб они работали!
Или любой другой способ подключения модемов, главное чтоб одной системе (с одним сетевым интерфейсом) одновременно были присвоены IP-адреса модемов, которые им выдал провайдер!

Чувак, юзай генту... :))
 
Лучше подумай как сделать так, чтоб объединить несколько каналов в 1 мбит/с, в один выходящий соответствующий X мбит/с, где Х - число сетей.
Вот если найдёшь решение, то ты реально крут! :)
12.06.2010 / onegreyonewhite
Только зарегистрированные пользователи могут оставлять комментарии

Зарегистрироваться *** Авторизоваться


 Последние новости и статьи  Последние сообщения с форумов
  • Google Pixel взломали за 60 секунд
  • В CMS Joomla обнаружена критическая 0-day уязвимость
  • ФБР не смогло взломать протокол шифрования переписки террористов ...
  • Полиция обыскала дом предполагаемого создателя платежной системы ...
  • Google: квантовый ПК будет в 100 млн раз быстрее стандартных чипо...
  • "Лаборатория Касперского" констатирует усиление атак кибергруппир...
  • Microsoft Edge откроет исходные коды ChakraCore
  • Anonymous объявили 11 декабря «днём троллинга» ИГИЛ
  • Миллионы телевизоров, смартфонов и маршрутизаторов оказались уязв...
  • Adobe прощается с Flash

    Все новости... Все статьи... Прислать новость RSS
  • Разное / Предложения работы » Ищу опытного хакера для постоянных заказов
  • Разное / Куплю, приму в дар » Куплю БИТКОИНЫ!
  • Разное / Куплю, приму в дар » Куплю БИТКОИНЫ!
  • Взлом и безопасность / Разное » Взлом Почты
  • Взлом и безопасность / Новичкам » Взлом страницы в вк!
  • Взлом и безопасность / Online games » Re: Взлом игры
  • Разное / Ищу работу » Re: -=Мощный DDoS service/ДДоС сервис=-
  • Разное / Предложения работы » Найти дыру в шаблоне битрикса и скачать сайт
  • Разное / Предложения работы » Взлом почты и соц.сети (Mail,Yandex,Rambler,Gmail,vk.com,OK.
  • Взлом и безопасность / ICQ,AIM,YAHOO,QIP » Re: как взломать ICQ пароль, если ICQ пользуются всегда на т...

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 2007-2012. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    Ya-Cyt службы мониторинга серверов

    #{title}

    #{text}

    x

    #{title}

    #{text}