AF - Active Port Forwarder v0.5.4 - README
Copyright (C) 2003,2004 jeremian - &lt;jeremian [at] poczta.fm&gt;
===================

================================================================================

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 &lt;---Encrypted/Compressed channel---&gt; AF Server
             /                          ||                    |      \(tcp)
            /(tcp)                      ||               (tcp)|       User 2
           /                            ||                     \
    Http server                         ||                      User 3
                                        ||


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

1) Мы должны найти машину с внешним IP адресом и доступом к shell.
   
2) Использовать  "make"  чтобы  скомпилировать AF  на  ней.  (вы можете спокойно
   удалять файлы afclient и client.rsa)

3) Вы можете  отредактировать  конфигурационный файл  или передать программе все
   параметры из консоли (для использования файла наберите -f <cfgfile>) :
        $ ./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 &lt;---Encrypted/Compressed channel---&gt; 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 <hostname> -p <порт> -n <имя сервера>  \
         -m <порт сервера>

   Где  <hostname>  имя  машины  пользователя  (который  соединяется  с  игровым
   сервером),  <порт> -  локальный  порт,  <имя  сервера> -  имя сервера,  <порт
   сервера> - порт на котором сервер ждет пользователей.Теперь, чтобы попасть на
   игровой сервер, пользователь должен соединятся с <hostname>:<порт>.

================================================================================

============================
4. ИЗВЕСТНЫЕ ОШИБКИ/ПРОБЛЕМЫ
============================

На данный момент, нет никаких известных проблем.

================================================================================

=========
ЗАМЕЧАНИЯ
=========

Active port  forwarder  находится в разработке,  так что пожалуйста, присылайте
свои комментарии, замечания об ошибках и предложения на jeremian [at] poczta.fm

Если у вас  есть какие-либо проблемы  с использованием  программы или вы хотите
поделиться своим мнением о ней, пожалйста оставляйте свои сообщения на:
http://gray-world.net/board/

================================================================================

=============
БЛАГОДАРНОСТИ
=============

 Большое спасибо команде GW:

 Alex <alex [at] gray-world.net>
 и Simon <scastro [at] entreelibre.com> за тестирование AF и множество советов.

 Спасибо Ilia Perevezentsev <iliaper [at] mail.ru>  за корректировку английской
 версии этого файла.

 И спасибо за использование AF!

ЛИЦЕНЗИЯ
--------

  Active Port Forwarder is distributed	under  the  terms  of  the  GNU  General
  Public License v2.0 and is copyright (c)  2003,2004  jeremian  <jeremian  [at]
  poczta.fm>. See the file COPYING for details.
