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