В статье об SNMP было упомянуто понятие маскарадинга. После данной статьи
в мой ящик приходили письма и вопросы о том, что
предcтавляет собой маскарадинг. Здесь я попытаюсь объяснить данное понятие на простых примерах.

Хотя я еще не объяснил, что такое маскарадинг, я начну с того, что вам
надо, чтобы использовать маскарадинг. Итак, вам нужно:

  • несколько (более 2) компьютеров
  • сеть, соединяющая эти компьютеры
  • разные IP адреса на этих хостах
  • один компьютер с модемом и доступом к Интернет
  • операционная система Линукс с ядром 2.2.х и старше на этом компьютере
  • что-нибудь перекусить :))

Теперь, когда мы определились с необходимым оборудованием, можно
приступить к объяснению понятия маскарадинга. 

Маскарадинг — это подмена некоторых параметров в заголовках IP пакетов,
позволяющая машинам, не имеющим реальных IP адресов полноценно работать
в Интернет. Рассмотрим этот факт на реальном примере. Мальчик А любит девочку В, но
она не учится с ним и он не знает ее номер телефона. Есть еще их общий друг С,
который учится с В и живет рядом с А. А просит С поговорить с В, не
упоминая при этом А. Теперь представьте, что В — Интернет, А — клиент, С —
сервер на котором установлена функция маскарадинга.
Здесь необходимо упомянуть о протоколе TCP/IP. Принцип действия TCP/IP
мы уже на Хакере рассматривали, ну да
повторимся еще раз:

=>   Я 1.2.3.4 я хочу установить соединение с 1.2.3.3
->   Я 1.2.3.3 вы ко мне обращались?
=>   Я 1.2.3.4 я к вам обращался.
->   Я 1.2.3.3 готов
=>   Я 1.2.3.4 и мне нужен этот файл
->   Я 1.2.3.3 посылаю первую часть к 1.2.3.4
=>   Я 1.2.3.4 получил ее
->   Я 1.2.3.3 посылаю вторую часть к 1.2.3.4
=>   Я 1.2.3.4 не получил ничего
->   Я 1.2.3.3 посылаю еще раз
=>   Я 1.2.3.4 получил ее
->   Я 1.2.3.3 ожидаю
=>   Я 1.2.3.4 готов, до свидания
->   Я 1.2.3.3 до свидания

Хоть это и примитивно, но процесс передачи данных работает примерно так.
Ниже дана схема взаимодействия компьютеров локальной сети при маскарадинге.

1.2.3.3 
|
Internet 
|
10.0.0.1 (11.1.1.4)|
|
10.0.0.2 

У нас есть компьютер, с локальным адресом 10.0.0.1, подключенный к
Интернет через телефонное соединение, который получил у своего провайдера
адрес 11.1.1.4. Если кто-то пытается достичь 11.1.1.4, то они получат
ответ, но при попытке установить соединение с 10.0.0.1, они не получат
ответ, хотя это один и тот же компьютер, но 10.0.0.1 не узнаваем в сети
Интернет. Еще есть 10.0.0.2, подключенный к 10.0.0.1. В этом случае
10.0.0.1 является гейтвеем (gateway), своего рода выход в другую сеть. 

=> Я 10.0.0.2 хочу установить соединение с 1.2.3.3
-> Я 1.2.3.3 но у меня нет представления как тебя найти (конечно, это
сообщение не передается, т.к. нет логического пути между этими двумя
компьютерами, в данном случае остается лишь запись в логах). 

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

=>   Я 10.0.0.2 хочу установить соединение с 1.2.3.3
->   Я 10.0.0.1 продолжу процесс запроса к 1.2.3.3
->   Я 11.1.1.4 хочу установить соединение с 1.2.3.3
_>   Я 1.2.3.3 ожидаю ваших дальнейших команд 

Теперь, надеюсь, все встало на свои места. Сервер, на котором установлена
функция маскарадинга, предоставляет свой IP, чтобы остальные компьютеры
сети могли взаимодействовать с Интернет. 

Подготовка компьютера

Я думаю у вас стоит компьютер с установленной ОС Линукс и существует
учетная запись для подключения к Интернет. Для использования маскарадинга
предпочтительно использовать ядро 2.2.х, т.к. более старые версии ядра
могут содержать ошибки, не поддерживать ваше оборудование и быть
подвержены уязвимостям. Последние версии ядер можно скачать с
ftp://ftp.kernel.org/. Существуют более полные документы по компиляции ядра, здесь же я укажу
лишь основные шаги. Допустим, вы скачали новую версию ядра
newkernel.tar.gz 

$ mv newkernel.tar.gz /usr/src
$ cd /usr/src
$ rm linux (удаляем символьную ссылку на старые исходники)
$ tar zxvf newkernel.tar.gz (ядро извлекается в папку linux)
$ cd linux
# make menuconfig 

Можно выбрать: mak config для текстового режима, make manuconfig для
графического режима, make xconfig под Х режимом. Для включения функции маскарадинга нужно ответить YES в следующих опциях:

> Prompt for development and or incomplete code / drivers
>Enable loadable module support
>Networking support
>Network firewalls
>TCP/IP Networking
>IP:forwarding/gatewaying
>IP:firewalling
>IP:masquerading
>IP:ipportfw masq support
>IP:ipautofw masq support
>IP:ICMP masquerading
>IP:always defragment
>Dummy net driver support
>IP:ip fwmark masq-forwarding support

Далее следует процесс компиляции, зависящий от скорости компьютера.

# make dep
# make clean
# make bzImage
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/kernel
# make modules
# make modules_install

После этого следует отредактировать файл /etc/lilo.conf. Нужно добавить
что-то типа этого:

image=/boot/kernel
label=masqkernel
root=/dev/hdaX (заменить на вашу root файловую систему, раздел)
read-only

Эти изменения в файле позволят менеджеру загрузки найти новое ядро при
загрузке. В следующий раз при lilo-приглашении напечатайте masqkernel.

/sbin/lilo 
added linux-2.2.5-15 *
added dos
added masqkernel

Теперь необходимо отредактировать /etc/rc.d/rc.local, чтобы необходимые
модули загружались при старте. 

.
.
/sbin/depmode -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_irc
.
.

Эти модули необходимы для ftp, real audio и irc. Остался последний шаг
перед перезагрузкой, это активация форвардинга (forwarding).

# echo «1» /proc/sys/net/ip_forward (на некоторых новых системах каталог будет /proc/sys/net/ipv4/ip_forward)

Теперь осталось перезагрузить систему с новым ядром. Если свежее ядро
загрузилось правильно — мои поздравления, осталось недолго. Осталось лишь
установить новые правила ipchains для правильного
функционирования маскрадинга. 

# /sbin/ipchains -P forward DENY
# /sbin/ipchains -A forward -s 10.0.0.0/4 -j MASQ

Для того чтобы все работало правильно, вам нужно подправить параметр -s на
свой адрес сети. Ваш сервер теперь должен работать. Осталось только
упомянуть, что у ваших клиентских машин должен быть прописан адрес гейтвея
(адрес сервера с функцией маскардинга). Вот, в принципе, и все что касается функции маскарадинга. Надеюсь, что
здесь я насколько мог объяснил что это такое и дальнейших вопросов
возникнуть не должно. Те, кто заинтересовался функционированием сетей,
могут найти огромное количество информации в Сети. Главное —
любознательность. Удачи.

Оставить мнение

Check Also

Алмазный фонд «Хакера». Самые крутые материалы по реверсингу и malware за три года

Иногда мы, редакторы и авторы «Хакера», сами читаем «Хакер». Нет, ну то есть мы постоянно …