AF - Active Port Forwarder v0.5.4 - README Copyright (C) 2003,2004 jeremian - <jeremian [at] poczta.fm> =================== ================================================================================ GRAY-WORLD.NET / Active Port Forwarder ========================== Программа Active Port Forwarder является частью проекта Gray-World.net. Наша команда Gray-World представляет на сайте http://gray-world.net проекты и публикации, над которыми мы работаем, относящиеся к области исследования NACS (Систем Контроля Сетевого Доступа), а также к теме компьютерной и сетевой безопасности. ================================================================================ ========== СОДЕРЖАНИЕ ========== ОПИСАНИЕ 1. УСТАНОВКА 1.1 Инструкции 1.2 Необходимые библиотеки 1.3 Тестовые платформы 2. ИСПОЛЬЗОВАНИЕ 2.1 afserver 2.2 afclient 3. ПРИМЕРЫ 3.1 tcp-режим 3.2 обратный udp-режим 4. ИЗВЕСТНЫЕ ОШИБКИ/ПРОБЛЕМЫ ЗАМЕЧАНИЯ БЛАГОДАРНОСТИ ================================================================================ ======== ОПИСАНИЕ ======== Active port forwarder это программный инструмент для безопасного тунелирования данных. Он использует SSL для защиты соединения между клиентом и сервером. Изначально, программа была разработана для простой пересылки данных от точки к точке. Однако необходимость обхода брандмауэра с целью сделать компьютеры локальной сети доступными извне, повлияла на дальнейшее развитие проекта. AF предназначен для людей, не имеющих внешнего IP адреса и которые хотят сделать некоторые локальные сервисы доступными в сети. В программе использована библиотека zlib для сжатия передаваемых данных. Использование единого канала для передачи данных и команд управления в сочетании с буферизацией пересылаемых пакетов обеспечивает хорошую производительность и малое время отклика системы. Для запуска afserver не требуется привилегий root, также он не использует thread-ы или другие процессы. ================================================================================ ============ 1. УСТАНОВКА ============ 1.1 Инструкции -------------- 1. Загрузите упакованный исходный код с http://www.gray-world.net/pr_af.shtml 2. Распакуйте - tar zxvf 3. Выполните команду "make". 4. Если что-то пошло не так - напишите письмо автору или оставьте сообщение на http://gray-world.net/board/ 1.2 Необходимые библиотеки -------------------------- 1. openssl - http://www.openssl.org/ 2. zlib - http://www.gzip.org/zlib/ 1.3 Тестовые платформы ---------------------- 1. Linux: Gentoo, Slackware, Mandrake - было собрано без каких-либо проблем 2. Freebsd: 4.4, 4.9 - Необходим patch с домашней страницы проекта 3. Windows: win32 - Версия с cygwin доступна на домашней странице проекта ================================================================================ ================ 2. ИСПОЛЬЗОВАНИЕ ================ 2.1 afserver ------------ Параметры: -h, --help - печатает эту справку -n, --hostname - используется при создании "слушающих" сокетов (по умолчанию: имя возвращаемое функцией hostname) -l, --listenport - порт сервера - пользователи соединяются с ним (по умолчанию: 50127) -m, --manageport - порт для управления - другая часть active port forwarder соединяется с ним (по умолчанию: 50126) -u, --users - количество пользователей, использующих сервер (по умолчанию: 5) -c, --cerfile - имя файла с сертификатом (по умолчанию: cacert.pem) -k, --keyfile - имя файла с ключом RSA (по умолчанию: server.rsa) -f, --cfgfile - имя файла с конфигурацией для active forwarder (сервер) -p, --proto - тип сервера (tcp|udp) - с каким протоколом он будет работать (по умолчанию: tcp) -O, --heavylog - писать все сообщения в logfile -o, --lightlog - писать некоторые сообщения в logfile -v, --verbose - вывод сообщений в консоль - програма не будет работать как daemon. --nossl - протокол ssl не будет использован для передачи данных (но будет использован для установки соединений) (по умолчанию: ssl используется всегда) --nozlib - zlib не будет использоваться для сжатия данных (по умолчанию: zlib используется) --pass - задать пароль для идентификации клиента (по умолчанию: нет пароля) -4, --ipv4 - использовать только ipv4 -6, --ipv6 - использовать только ipv6 2.2 afclient ------------ Options: -h, --help - печатает эту справку -n, --servername - где работает вторая часть active port forwarder (необходимо) -m, --manageport - порт для управления - сервер соединяется с ним (по умолчанию: 50126) -d, --hostname - имя локального/удаленного сервера - данные будут тунелированы на него (по умолчанию: имя возвращаемое фунцией hostname) -p, --portnum - порт на который будут тунелированы данные (необходимо) -k, --keyfile - имя файла с ключом RSA (по умолчанию: client.rsa) -u, --udpmode - udp-режим - клиент будет использовать udp протокол для коммуникации с hostname -U, --reverseudp - обратный udp-режим. Udp пакеты будут перенаправляться с hostname:portnum (-p) на сервер name:portnum (-m) -O, --heavylog - писать все сообщения в logfile -o, --lightlog - писать некоторые сообщения в logfile -v, --verbose - вывод сообщений в консоль - програма не будет работать как daemon. --pass - задать пароль для идентификации клиента (по умолчанию: нет пароля) -4, --ipv4 - использовать только ipv4 -6, --ipv6 - использовать только ipv6 -l, --load - загрузить модуль для фильтрации пакетов ================================================================================ ========== 3. ПРИМЕРЫ ========== 3.1 tcp-режим ------------- local network |FireWall| Internet || || User 1 || /(tcp) AF Client <---Encrypted/Compressed channel---> AF Server / || | \(tcp) /(tcp) || (tcp)| User 2 / || \ Http server || User 3 || Использование этого режима черезвычано простое. Давайте предположим, что мы хотим создат http сервер на нашем компьютере, находящемся в локальной сети за брандмауэром: 1) Мы должны найти машину с внешним IP адресом и доступом к shell. 2) Использовать "make" чтобы скомпилировать AF на ней. (вы можете спокойно удалять файлы afclient и client.rsa) 3) Вы можете отредактировать конфигурационный файл или передать программе все параметры из консоли (для использования файла наберите -f ) : $ ./afserver Это будет работать, если вы хотите использовать настройки по умолчанию: - hostname будет взят из функции hostname (это работает замечательно, если есть соответствующая запись в /etc/hosts) - сервер будет ждать пользователей на порту 50127 - сервер будет ждать клиента на порту 50126 - сервер будет обслуживать макимум 5 пользователей - сервер будет перенаправлять tcp соединения - отладочных сообщений не будет - идентификаций по паролю не будет - версия протокола ip не будет задана 4) Мы используем "make" на нашей машине (можно удалить все кроме afclient и client.rsa) 5) Набираем в консоли: $ ./afclient -n <имя сервера> -p 80 Где <имя сервера> строка типа: 'bastion.univ.gda.pl' или '153.19.7.200' 6) Теперь в браузере мы можем набрать: <имя сервера>:50127 и попадем на наш компьютер. 3.2 обратный udp-режим ---------------------- local network |FireWall| Internet || (udp) || User 1-------AF Client || /(tcp) AF Client <---Encrypted/Compressed channel---> AF Server / || | /(udp) || (tcp)| / || / Game server || AF Client-------User 2 || (udp) Давайте теперь посмотрим как мы можем использовать af для перенаправления udp пакетов. Предположим, что мы хотим создать игровой сервер на нашем компьютере (udp порт 27960): 1) - 4) тоже самое, что и в первом примере. (но добавляем параметр: -p udp) 5) Набираем в консоли: $ ./afclient -u -n <имя сервера> -p 27960 Где <имя сервера> это имя (или ip) компютера где работает наш сервер. 6) Процесс соединения с игровым сервером более сложный. Пользователь должен запустить fclient чтобы сделать это. Он должен указать сервер с которым он будет соединяться и порт, на котором его программа будет слушать: $ ./afclient -U -d -p <порт> -n <имя сервера> \ -m <порт сервера> Где имя машины пользователя (который соединяется с игровым сервером), <порт> - локальный порт, <имя сервера> - имя сервера, <порт сервера> - порт на котором сервер ждет пользователей.Теперь, чтобы попасть на игровой сервер, пользователь должен соединятся с :<порт>. ================================================================================ ============================ 4. ИЗВЕСТНЫЕ ОШИБКИ/ПРОБЛЕМЫ ============================ На данный момент, нет никаких известных проблем. ================================================================================ ========= ЗАМЕЧАНИЯ ========= Active port forwarder находится в разработке, так что пожалуйста, присылайте свои комментарии, замечания об ошибках и предложения на jeremian [at] poczta.fm Если у вас есть какие-либо проблемы с использованием программы или вы хотите поделиться своим мнением о ней, пожалйста оставляйте свои сообщения на: http://gray-world.net/board/ ================================================================================ ============= БЛАГОДАРНОСТИ ============= Большое спасибо команде GW: Alex и Simon за тестирование AF и множество советов. Спасибо Ilia Perevezentsev за корректировку английской версии этого файла. И спасибо за использование AF! ЛИЦЕНЗИЯ -------- Active Port Forwarder is distributed under the terms of the GNU General Public License v2.0 and is copyright (c) 2003,2004 jeremian . See the file LICENSE for details.