Так как документация от IBM содержит множество неточностей и просто ошибок
я решил написать свою заметку о конфигурировании встроенного в OS/2
socks клиента. Сразу скажу, что речь пойдёт о стеке TCPIP 4.3.
1. О клиенте.
В стек TCPIP 4.3 встроенна поддержка socks V4 и V5, которая позволяет
большинству програм использующих протоколы TCP и UDP работать без дополнительных
настроек. При этом реализация клиента позволяет использовать одновременно
несколько socks серверов или прямое соедиенение в зависимости от ip адреса
назначения.
2. Файлы конфигурации.
Вся конфигурация socks клиента находится в файлах socks.env и socks.cfg директории
%ETC% (например c:\mptn\etc).
Все настройки можно выполнять через конфигуратор TCPIP (tcpcfg2), но на мой
взгляд удобнее это делать руками. Изменения не требуют перезагрузки и вступают
в силу после перезапуска программы.
3. Файл конфигурации socks.env.
socks.env - это базовый файл конфигурации socks клиента. Он отвечает в том числе
за включение клиента. Ниже приведён формат файла и описание его директив.
<-- begin of socks.env --
SOCKS_FLAG flag
SOCKS_DOMAIN domain1[,domain2[,domain3]]
SOCKS_NS name_server[,name_server2[,...]]
SOCKS_SERVER
SOCKS_USER [user]
SOCKS_PASSWORD [password]
-- end of socks.env --
SOCKS_FLAG flag |
|
Эта директива отвечает за использование socks клиента. Flag может принимать
2 значения - ON (клиент используется) и OFF (клиент не используется).
Данная директива как и её значения - обязательны.
|
SOCKS_DOMAIN domain1[,domain2[domain,3]] |
|
Директива указывает ваш локальнный домен (или домены, до 3ёх).
Можете смело указать SOCKS_DOMAIN=mydomain.
|
SOCKS_NS name_server1[,nameserver2[,...]] |
|
SOCKS_NS указывает адрес DNS`а которым будет пользоваться TCPIP
стек OS/2 при включённом SOCKS клиенте. Вы можете указать несколько
серверов, разделив их запятыми (SOCKS_NS 193.193.193.100,10.10.10.2)
Данная директива как и её значение - обязательны. Стоит заметить, что она
используется только при socks 4 соединениях. Socks5 соедиения позволяют
использовать любой dns указанный в resolv/resolv2, даже если он находится
за сокс сервером.
|
SOCKS_SERVER |
|
Директива для внутреннего использования стеком. Параметров не имеет. |
SOCKS_USER [user] |
|
user указывает ID пользователя зарегистрированного на socks сервере.
Сама директива - обязательна, а значение её опционально.
|
SOCKS_PASSWORD [password] |
|
password указывает пароль пользователя зарегистрированного на socks
сервере. Сама директива - обязательна, а значение её опционально.
По большому счёту SOCKS_USER и SOCKS_PASSWORD в OS/2 более не нужны и
вы можете не заполнять их значения. Пароли и ID теперь прописываются в
socks.cfg, о чём речь пойдёт далее.
|
4. Файл конфигурации socks.cfg.
В файле socks.cfg хранится информация о том, какие socks сервера использовать
(и использовать ли) в зависимости от конечного IP адреса.
Ниже приведён формат файла и описание его директив.
<-- begin of socks.cfg --
direct d_host d_mask [op dst_port]
sockd @=socks_server s_host s_mask [op dst_port] [*=s_userid *=s_password]
-- end of socks.cfg --
direct d_host d_mask |
|
Директива direct указывает с какими хостами (или хостом) необходимо
соедиеняться минуя socks клиента. s_host - это ip адрес хоста назначения,
а s_mask - это маска адреса назначения. Наприемер, для прямого соедиения
с адресами 10.10.10.x пропишите строчку "direct 10.10.10.0 255.255.255.0"
Если вы хотите указать правило только для конкретного порта или диапазона
портов, то используйте параметры op dst_port.
Поле op может принимать значения eq (равен), neq (не равен),
lt (менее чем), gt (более чем), le (меньше или равно), or ge (больше или
равно). Так, чтобы заставить ходить на 80 порт только напрямую пропишите
строку "direct 0.0.0.0 0.0.0.0 eq 80"
Вы можете указывать более одной строчки direct.
|
sockd @=socks_server s_host s_mask [op dst_port] [*=s_userid *=s_password] |
|
Директива sockd указывает к каким хостам вы хотите подключаться используя
socks и какой логин и пароль вы будете использовать для авторизации.
socks_server - ip адрес используемого socksd.
s_host - это ip адрес хоста назначения, а s_mask - это маска адреса
назначения. s_userid и s_password - это логин (ID) и пароль которые
используется для авторизации на сокс сервере. Если эти параметры не указаны
то используется socks4 для tcp и socks 5 для tcp. При указании логина и
пароля для всех соединений используется socks5.
Если вы хотите указать правило только для конкретного порта или диапазона
портов, то используйте параметры op dst_port.
Поле op может принимать значения eq (равен), neq (не равен),
lt (менее чем), gt (более чем), le (меньше или равно), or ge (больше или
равно). Так, чтобы заставить ходить на sockd @=10.10.10.2 >1024 только
используя socks пропишите строку "sockd @=10.10.10.2 0.0.0.0 0.0.0.0 gt
1024". Строк sockd может быть несколько, для разных адресов назначения.
Пример:
"sockd @=10.10.10.2 0.0.0.0 0.0.0.0 *=root *=test"
|
Строки в файле socks.cfg обрабатываются в порядке расположения в файле.
Комментарии допустимы, и должны начинаться с символа "#".
5. Примечания.
Большинство программ после корректного конфигурирования клиента отлично работают
без дополнительных настроек. Для ftp клиента необходимо указать пассивный режим
(PASV), в противном случае ftp клиент может не работать.
Обсудить материал (число отзывов:5)
предыдущий материал |