/etc/socks.conf

Конфигурационный файл клиентов SOCKS

Имя

/etc/socks.conf


Описание:

Этот файл используется всеми клиентскими программами SOCKS в следующих целях:
Максимальная длина каждой строки файла– 1024 символа. Строки, начинающиеся с символа решетки (#), являются строками комментария. Для строк, не являющихся комментарием, должен использоваться один из трех форматов:

deny [*=список_пользователей] адрес_назначения маска_назначения [оператор порт_назначения] [: команда_командного_интерпретатора]


direct [*=список_пользователей] адрес_назначения маска_назначения [оператор порт_назначения] [: команда_командного_интерпретатора]


sockd [@=список_серверов] [*=список_пользователей] адрес_назначения маска_назначения [оператор порт_назначения] [: команда_командного_интерпретатора]


Согласно строке deny клиенты SOCKS определяют, когда следует отклонить запрос.

Согласно строке direct определяется, когда следует использовать прямое соединение.

Согласно строке sockd определяется, когда следует использовать соединение через прокси-сервер, и, дополнительно, определяется используемый прокси-сервер (или серверы) SOCKS.

Поля разделяются символами пробела и табуляции. Необязательные поля заключены в квадратные скобки. Поля:

список_пользователей

Один или несколько идентификаторов пользователей или имен файлов, разделенных запятыми. В этом списке запрещено использовать символы пробела и табуляции. Идентификаторы пользователей должны принадлежать пользователям на локальном хосте, но не пользователям на хосте-получателе или хосте сервера SOCKS.

Имена файлов должны быть полными путевыми именами, начинающимися с символа /. В каждой строке списка в указанных файлах может содержаться один или несколько идентификаторов пользователей; в качестве разделителя может использоваться любая комбинация пробелов, табуляций и запятых.

Символ решетки # в начале строки означает, что остальная часть строки является комментарием. Максимальная длина строки в этих файлах – 1023 символа. Если поле *= список_пользователей пропущено, строка применяется ко всем идентификаторам пользователей.

адрес_назначения маска_назначения

Эти поля совместно определяют IP-адрес назначения или диапазон IP-адресов назначения. Значения в обоих полях вводятся в обычном формате с точками-разделителями (например: 129.1.2.3).

Установленные в 0 (ноль) биты в поле маска_назначения указывают, что соответствующие позиции битов должны маскироваться (то есть игнорироваться) при сравнении адреса_назначения с фактическим IP-адресом назначения.

Например, маска 255.255.255.255 в поле маска_назначения требует точного совпадения с адресом_назначения. Если же используется маска 0.0.0.0, совпадение адресов фиксируется в любом случае (независимо от значения в поле адрес_назначения). (Следует отметить, что аналогично интерпретируются и сетевые маски; однако маски адресов, используемые в списках доступа маршрутизаторов Cisco, интерпретируются противоположно.)

оператор

Возможные значения:

eq

равно

neq

не равно

lt

меньше

gt

больше

le

меньше или равно

ge

больше или равно

порт_назначения

Номер порта (например, 23), либо эквивалентное имя службы, определенное в файле /etc/services (например, telnet для номера порта 23). Если эта пара пропущена, строка применяется ко всем службам.

список_серверов

Используется только в строке sockd. Здесь задается один или несколько прокси-серверов SOCKS, к которым должна обращаться клиентская программа (в указанном порядке) для установления соединения через прокси-сервер.

В качестве разделителей в этом списке могут использоваться только запятые (использование символов пробела и табуляции запрещено). В списке можно указывать доменные имена серверов; тем не менее, рекомендуется указывать IP-адреса.

Если поле список_серверов пропущено, клиентской программой используется прокси-сервер SOCKS по умолчанию, который определяется переменной среды SOCKS_SERVER или именем, вкомпилированным в клиентскую программу SOCKS.

Рассмотрим пример строки sockd:

sockd @=1.2.3.4 *=boss,root 11.12.13.14 255.255.255.255 eq telnet

В этой строке определены следующие обязательные условия для успешной обработки запроса: запрос поступил от локального пользователя с эффективным идентификатором пользователя boss или root; точным значением IP-адреса назначения является 11.12.13.14; запрашивается служба telnet. В данном случае соединение с хостом 11.12.13.14 должно быть установлено через прокси-сервер SOCKS в хосте 1.2.3.4.

Всякий раз, когда клиент SOCKS должен установить сетевое соединение, он проверяет поступивший запрос по каждой строке в файле /etc/socks.conf. При обнаружении клиентом строки с условиями, совпадающими с условиями в запросе, выполняется действие, указанное в данной строке. Проверка по остальным строкам в файле /etc/socks.conf не выполняется. Если не обнаружена совпадающая строка в файле, запрос отклоняется.

Примечание. Порядок строк в файле чрезвычайно важен. Если, например, переставить местами две строки, результат будет совершенно иным.

команда_командного_интерпретатора

Команда, выполняемая в случае удовлетворения условий, указанных в данной строке. Перед передачей команды на исполнение командному интерпретатору Borne выполняются следующие подстановки:

Исходные символы

Результат подстановки

%A

Доменное имя хоста клиента, если это имя известно; в противном случае – IP-адрес

%a

IP-адрес хоста клиента

%c

"connect" (соединение) или "bind" (привязка)

%p

Идентификатор процесса клиентской программы

%S

Имя службы (например, ftp), если это имя известно; в противном случае – номер порта назначения.

%s

Номер порта назначения

%U

Идентификатор пользователя, введенный при входе в систему

%u

Эффективный идентификатор пользователя

%Z

Доменное имя хоста-получателя, если это имя известно; в противном случае – IP-адрес хоста

%z

IP-адрес хоста-получателя

%%

Один символ %


Несколько команд командного интерпретатора можно объединить в одной строке обычным способом, например с использованием символов |, ;.

Подразумевается, что в конце управляющего файла указано действие "deny all" (полный запрет), однако можно явно задать требуемое действие, выполняемое при отклонении запросов. Пример.

deny 0.0.0.0 0.0.0.0 : /usr/bin/mail -s `SOCKS: rejected %S from %u to %Z' root


В отличие от предыдущего варианта, соединение с адресом 127.0.0.1 (локальным хостом) всегда устанавливается напрямую и, следовательно, это не требуется задавать в файле /etc/socks.conf.

Переменные среды:

SOCKS_SERVER


Если эта переменная среды определена, то она содержит имя или IP-адрес используемого хоста прокси-сервера SOCKS; это значение переопределяет сервер по умолчанию, жестко заданный при компиляции программ.