1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
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 <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 <---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 <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 LICENSE for details.
|