Online Documentation Server
 ПОИСК
ods.com.ua Web
 КАТЕГОРИИ
Home
Programming
Net technology
Unixes
Security
RFC, HOWTO
Web technology
Data bases
Other docs

 


 ПОДПИСКА

 О КОПИРАЙТАХ
Вся предоставленная на этом сервере информация собрана нами из разных источников. Если Вам кажется, что публикация каких-то документов нарушает чьи-либо авторские права, сообщите нам об этом.




IP-тунелинг под ОС Linux. IP-in-IP vs. CIPE

Эта статья рассмотрит преимущества и недостатки ПО для организации туннелей между двумя компьютерами под управлением ОС Linux.

Что это такое и с чем это едят..

Что такое туннелинг? Многие из вас задавались этим вопросом кто-то находил ответ, кто-то нет. Я попробую разъяснить. Туннелинг это подобие выделенной линии, но только поверх уже существующей сети. Используется это для, например, для соединения нескольких IPX или NETBEUI сетей через Internet в единую. Вы спросите, а нельзя обойтись без туннелинга и просто соединить их в одну? Ответ нет. Особенность Internet такова, что в нем используется один единый протокол - IP (Internet Protocol).

Для чего это нужно?

Самым простым примером может служить данная схема:



С помощью IP-тунеля внутренняя IPX сеть может быть объединена в единую корпоративную сеть.

Как это работает?

Примерно так:



IPX пакеты из Сети А адресованные компьютеру в Сети Б запаковываются внутрь пакетов IP-тунеля Компьютером А и передаются Компьютеру Б, который в свою очередь их распаковывает и отправляет адресату в Сети Б.

Как это реализовать?

Реализуется это на уровне маршрутизаторов. Например, данная функция есть в маршрутизаторах Cisco и Bay Networks, но я не стану на этом задерживаться - эта статья посвящена реализации IP-тунелинга на ОС Linux.

Первым способом послужит встроенная в ядро системы функция IP-тунелинга. IP-in-IP

Естественно не достаточно ее просто включить, требуется специальная настройка. Вот пример настройки IP-тунеля:

Компьютер А: 111.112.101.37
Компьютер Б: 111.112.100.86
по какой-то причине между ними требуется поднять IP-тунель. (Компьютер А и Б в одной подсети)
Необходимые действия на Компьютере А:
# ifconfig tunl 111.112.100.87 pointopoint 111.112.100.86 # ifconfig tunl netmask 255.255.255.0 - устанавливаем нет-маску # route add 111.112.100.86 dev eth0 - делаем запись в таблицу статических роутов для Компьютера Б # route add -net 111.112.100.0 dev tunl - Настраиваем таблицу роутов для подсети Компьютера Б.
Необходимые действия на Компьютере Б:
# ifconfig tunl 111.112.100.86 pointopoint 111.112.101.37 # ifconfig tunl netmask 255.255.255.0 - устанавливаем нет-маску # route add 111.112.100.87 dev eth0 - делаем запись в таблицу статических роутов для Компьютера Б # arp -s 111.112.100.87 EE.EE.EE.EE.EE pub - Настраиваем ARP таблицу.

Команда "arp -s" необходима чтобы Компьютер Б знал ARP адрес Компьютера А, т.к. они в разных IP-подсетах,то Компьютер Б не будет знать ARP адрес Компьютера А, и ему надо помочь :-)

Недостаток данного варианта в том, что в данном случае надо произвести много манипуляций с ядром системы и производимые действия требуют довольно глубоких познаний в устройстве протокола TCP/IP и новичкам это порой неподсилу. Но есть и преимущества - установка IP-тунеля не требует специального ПО, все что может понадобиться идет в комплекте с ОС.

Вторым вариантом может послужить программа CIPE v0.5.

CIPE расшифровывается как Crypto IP Encapsulation, из этого явственно следует, что это не просто программа для образования туннеля, а ПО для организации туннеля с криптованием передаваемых данных. Настройка CIPE проще чем встроенного в ядро драйвера туннелинга. Может показаться, что этот вариант лучше во всех отношениях, но нет ничего идеального и у CIPE свои недостатки, на них я остановлюсь далее, а сейчас о настройке.

Предположим, что Серверу 1 надо организовать туннель с Сервером 2, условием является то что сервера находятся в разных странах. Конечно можно воспользоваться первым вариантом, но это потребует произвести гораздо больше действий, чем описано, поэтому предпочтительней данный. Для начала надо , скомпилировать и инсталлировать CIPE. После этого требуется сделать следующее на Сервере 1:


# insmod cip3b.o                            - загружаем модуль тунеля

Далее надо отредактировать файл /etc/cipe/options:
device cip3b0 - имя интерфейса туннеля. ptpaddr 10.0.0.2 - адрес Сервера 2 ipaddr 10.0.0.1 - адрес Сервера 1 me 194.67.110.8:6789 - настоящий адрес Сервера 1 peer 195.16.96.96:6543 - настоящий адрес Сервера 2 key 3238fd21adf9c10ccf9ecу2393bbb6e4 - секретный ключ для криптования Далее: # /ciped # /etc/cipe/ip-up cip3b0 10.0.0.1 194.67.110.8 195.16.96.96 На Сервере 2 проделываем тоже самое только изменяем /etc/cipe/options: device cip3b0 - имя интерфейса туннеля. ptpaddr 10.0.0.1 - адрес Сервера 1 ipaddr 10.0.0.2 - адрес Сервера 2 me 195.16.96.96:6543 - настоящий адрес Сервера 2 peer 194.67.110.8:6789 - настоящий адрес Сервера 1 key 3238fd21adf9c10ccf9ecу2393bbb6e4 - секретный ключ для криптования ВАЖНО: параметр key должен совпадать на Сервере 1 и на Сервере 2. # /ciped # /etc/cipe/ip-up cip3b0 10.0.0.2 195.16.96.96 194.67.110.8


Основные преимущества CIPE перед "родным" туннелем в Linux в том что он гораздо более прост в настройке, защищен он перехвата пакетов (ведь данные закриптованы), не требует больших познаний в TCP/IP и что не маловажно не требует специальной настройки ядра системы, CIPE использует собственный драйвер туннелинга. Но есть большой недостаток если CIPE неправильно настроить он вызывает сбой системы и в нее можно попасть только с локальной консоли. Согласитесь большой недостаток, особенно если ваш Сервер 2 находится в другом городе или стране, тут сказывается выигрышность "родного" драйвера туннелинга, как ни как он гораздо более отказоустойчив.

Итак, выбор за вами!

(c) Сергей Минаков 24.08.1998.



With any suggestions or questions please feel free to contact us