Proxychains
Проблема с lynx из предыдущего поста не давала мне покоя, и я таки нашел ее решение.
Оказалось, что проблема не в lynx (точнее, единственная проблема с ним в том, что lynx не имеет встроенной поддержки SOCKS5 -- по крайней мере, та версия, которая идет в стандартной поставке -- и должен подвергаться соксификации внешними утилитами), а с torsocks -- это недостаточно продвинутый соксификатор для таких целей. Аналогичная проблема описана здесь для claws-mail: программа, подвергнутая соксификации, предсказуемо создает DNS-запрос, на который соксификатор отвечает фейковым IP, и потом перехватывает его. Проблема в том, что torsocks не создает полноценную таблицу перехватываемых фейковых IP на уровне системы в целом, и при попытке программы породить подпроцессы карета превращается в тыкву запрос подпроцесса по фейковому IP не перехватывается. А поскольку IP имеет вид 127.42.42.0, т.е. соответствует маске 127.0.0.0/8, то воспринимается как запрос к localhost, и отвергается torsocks. Не знаю, порождает ли lynx подпроцессы или механизм потери "печеньки" (torsocks называет эти фейковые IP как cookies) другой, но, судя по логам torsocks, суть проблемы примерно та же.
В общем, нужен другой соксификатор. С dante-client почему-то не получилось, причины до конца не понял.
Получилось с proxychains. Однако, не с той версией, которая в репозитории Mint (там старая, 3.1, разработка оригинальной ветки прекращена, и в ней тоже есть баг с разыменованием onion-адресов с изящным ответом на баг-репорт "I cannot forward it to the upstream right now since development is stopped in 2006 but in future the bug might be forwarded if there is new upstream"), а с реинкарнацией https://github.com/rofl0r/proxychains-ng
Да, его пришлось качнуть с гитхаба и скомпилировать, что не так кошерно. Однако, поскольку lynx уже предполагает некоторую степень нердовства, а gophernicus нужно тоже ставить из исходников (хотя он умеет собираться как deb), в целом вариант можно признать рабочим. Если вдруг что, запилю PPA.
Варианты с промежуточным прокси не работают. Точнее, работают только для http(s) -- privoxy и polipo (сдох) не имеют поддержки gopher, а squid (поддерживает gopher) не умеет в SOCKS.
Скриншот, хе-хе:
←←← Gopher Menu
Gopher Menu
Welcome to Gophernicus!
_______ __ __
| __|.-----.-----.| |--.-----.----.-----.|__|.----.--.--.-----.
| | || _ | _ || | -__| _| || || __| | |__ --|
|_______||_____| __||__|__|_____|__| |__|__||__||____|_____|_____|
|__|
If you can see this, it means that the installation of Gophernicus
on this system was successful. You may now add content to this
directory and replace this page.
Generic information:
your ip address: 127.0.0.1
server time....: середа, 6 вересня 2017 11:28:33 +0300
server uptime..: 1 day
server version.: Gophernicus/2.5 "Millennium Edition"
server platform: Raspbian/8.0 armv7l
description....: BCM2835
Server configuration:
config file....: /etc/default/gophernicus
server hostname: tm2r262e22qiu6vc.onion
root directory.: /var/gopher
running as user: nobody
output charset.: UTF-8
output width...: 76 characters
(DIR) Gophernicus documentation 2017-Sep-04 00:18 -
____________________________________________________________________________
Gophered by Gophernicus/2.5 on Raspbian/8.0 armv7l
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list