tsocks - соксификатор приложений не поддерживающих работу через SOCKS

logo

articles tsocks - "соксификатор" для приложений, которые не поддерживают работу через SOCKS прокси сервера. Достаточно запустить "tsocks prog_name" и вуаля. Однако, с некоторыми программами могут возникать проблемы, в т.ч. проблемы конфигурации, которым и посвящён сей материал.

Не будем рассписывать как поставить соксификатор программ tsocks, дурное дело не хитрое, сразу о конфигурации. Главный конфигурационный файл расположен по адресу /etc/tsocks.conf, но если в домашней директории "юзверя" имеется файл "~/.tsocks.conf", то будет использован именно этот конфиг. Вот пример такого, полностью рабочего и не вызывающего ошибок, конфига "~/.tsocks.conf" для работы через ТОР сеть:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Можно "копипастить" конфиг и далее не читать, но в образовательно-познавательных целях почитать далее таки не помешает дабы иметь представление о природе возникновения тех или иных ошибок в работе соксификатора tsocks.

SOCKS server refused connection / Connection refused

При использовании tsocks с некоторыми программами, например сканером портов nmap можно наблюдать проблемы:

$ tsocks nmap -Pn xxx.xx.36.xxx
 
Starting Nmap 7.40 ( https://nmap.org ) at 2019-12-04 01:34 EET
01:34:35 libtsocks(23303): SOCKS V4 connect rejected:
01:34:35 libtsocks(23303): SOCKS server refused connection

В первом случае можно попробовать выполнить команду:


Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Указанная выше программа может проверить используемую версию любого удалённого SOCKS сервера, а не только локального.

Когда же видим ошибки таокго содержания:

$ tsocks nmap -Pn xxx.xx.36.xxx
 
Starting Nmap 7.40 ( https://nmap.org ) at 2019-12-04 05:17 EET
05:17:31 libtsocks(29403): SOCKS V5 connect failed: 05:17:31 libtsocks(29403): Connection refused
05:17:32 libtsocks(29403): SOCKS V5 connect failed: 05:17:32 libtsocks(29403): Connection refused
05:17:36 libtsocks(29403): SOCKS V5 connect failed: 05:17:36 libtsocks(29403): Connection refused

То, по всей видимости они связаны с тем, что nmap требует адимнистративных привилегий. При запуске от имени root проблем не возникает.

Could not open socks configuration file / getpwuid: access denied

$ tsocks prog-name
 
(prog-name:22278): GLib-WARNING **: getpwuid_r(): failed due to: Отказано в доступе.
getpwuid: Отказано в доступе
01:01:08 libtsocks(22278): Could not open socks configuration file ((null)), assuming all networks local
 
$ tsocks pidgin
getpwuid: Отказано в доступе
01:49:46 libtsocks(23791): Could not open socks configuration file ((null)), assuming all networks local
 
$ ls -la ~/.tsocks.conf
-rw-r-----  1 yuzver yuzver      184 июл 27  2015 .tsocks.conf
 
$ ls -la /etc/tsocks.conf
-rw-r--r-- 1 root root 1871 июн 18  2015 /etc/tsocks.conf
 
http://ru.manpages.org/getpwuid/3
 
getpwuid(3) получает записи из файла

В данном случае с "чмодами" на файлы "tsocks.conf" всё гуд, а причина по которой "libtsocks(ххххх): Could not open socks configuration file" не известна.

Занимательно, но tsocks может не работать без разрешения некоторым программам читать /etc/passwd! А на кой им читать /etc/passwd - возникает вопрос? Ответ - а хрен его знает.

Факт в том, что запрещает им чтение /etc/passwd установленный AppArmor, проверить его активность можно в /var/log/syslog, где можно заметить блокировку доступа:

Dec 4 02:17:14 localhost kernel: [3044757.008760] audit: type=1400 audit(1575418634.341:7069): apparmor="DENIED" operation="open" profile="/usr/bin/prog-name" name="/etc/passwd" pid=24615 comm="prog-name" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

Следует также иметь ввиду, что подобное предупреждение появится в /var/log/syslog только в том случае, если в правилах AppArmor (/etc/apparmor.d/*) для того или иного приложения нет явного запрета на чтение данного файла: "deny /etc/passwd mrwk"!

Для того, чтобы данную проблему вылечить, нам нужно внести правки в правила AppArmor и перезагрузить их:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

АХТУНГ! Ошибка "libtsocks(ххххх): Could not open socks configuration file ((null)), assuming all networks local" влечёт за собой довольно негативные последствия! Даже когда мы в конфигурационном файле установили "fallback = no", то в данном случае, когда "Could not open socks configuration file", данный параметр не срабатывает и программа не соксифицируется, а "втихую" подключается напрямую в обход socks-сервера!

libtsocks(ххххх): Need a password in tsocks.conf or $TSOCKS_PASSWORD

$ tsocks prog-name
04:46:43 libtsocks(28475): Need a password in tsocks.conf or $TSOCKS_PASSWORD to authenticate withGnuTLS error: An unexpected TLS packet was received.
 
** (prog-name:28475): WARNING **: [04:46:43] ошибка SSL/TLS соединения

Для устранения в конфиг нужно добавить:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Для проверки правильности/валидности конфигурационного файла tsocks можно использовать:

$ validateconf -f /etc/tsocks.conf

ld.so: object 'libtsocks.so' from LD_PRELOAD cannot be preloaded

Интересный "глюк", который проявляется только с некоторыми программами, например с программой ping запущенной от имени обычного пользователя:

$ tsocks ping ipinfo.io
ERROR: ld.so: object 'libtsocks.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

При всём этом никакие из ниже перечисленных фокусов не помогают:

$ . tsocks -on
$ echo $LD_PRELOAD
libtsocks.so
 
$ locate libtsocks
/usr/lib/i386-linux-gnu/libtsocks.so
/usr/lib/i386-linux-gnu/libtsocks.so.1
/usr/lib/i386-linux-gnu/libtsocks.so.1.8
 
$ LD_PRELOAD=/usr/lib/i386-linux-gnu/libtsocks.so
$ echo $LD_PRELOAD
/usr/lib/i386-linux-gnu/libtsocks.so
 
# ln -sf /usr/lib/i386-linux-gnu/libtsocks.so /lib/libtsocks.so
# ln -sf /usr/lib/i386-linux-gnu/libtsocks.so /usr/lib/libtsocks.so
# ln -sf /usr/lib/i386-linux-gnu/libtsocks.so /usr/local/lib/libtsocks.so

Кроме того libtsocks.so присутствует в списке /etc/ld.so.cache:

# ldconfig -p | grep tsocks
        libtsocks.so.1 (libc6) => /usr/lib/i386-linux-gnu/libtsocks.so.1
        libtsocks.so (libc6) => /usr/lib/i386-linux-gnu/libtsocks.so

Возможно проблема в том, что исполняемый файл соборан без соответствующих указателей в заголовочных файлах:

# /lib/ld-linux.so.2 --list /usr/bin/tsocks
/usr/bin/tsocks: error while loading shared libraries: /usr/bin/tsocks: invalid ELF header

Вот пример нормальной ситуации, когда бинарник содержит указатели на требуемые библиотеки:

# /lib/ld-linux.so.2 --list /bin/ping
        linux-gate.so.1 (0xb77c6000)
        libcap.so.2 => /lib/i386-linux-gnu/libcap.so.2 (0xb7760000)
        libidn.so.11 => /lib/i386-linux-gnu/libidn.so.11 (0xb772c000)
        libnettle.so.6 => /usr/lib/i386-linux-gnu/libnettle.so.6 (0xb76ef000)
        libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xb76d7000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7682000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74ca000)
        /lib/ld-linux.so.2 (0xb77c8000)

Заключение

В заключении отметим, что tsocks так и "заглох" на стадии бета-версии "1.8 beta 5 2002-10-23", в той-же бета-версии пакет tsocks представлен и в Дебиан репозиториях "Filename: pool/main/t/tsocks/tsocks_1.8beta5+ds1-1_i386.deb".

В принципе и как есть работает, но не везде и не всегда так, как ожидается. Ответы на вопросы по некоторым другим ошибкам/глюкам можно найти в ФАКе по адресу: http://tsocks.sourceforge.net/faq.php

Рекомендуемый контент

Добавить комментарий

АХТУНГ! Все комменты модерасятся модерастом. Мессаги исключительно рекламного или оскорбительного содержания не публикуются, а поэтому злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах! Разумная же критика, замечания, дополнения и хвалебные оды приветствуются, также допускается легкий флуд или троллинг :)


Защитный код
Обновить

Новое на форуме