В этом выпуске: настройка i2p и tor inproxy, настройка коротких доменных имен для жизненно необходимых скрытых сервисов.
От идеи резолвить все прямо на .i2p и .onion мы отказались из соображений безопасности, наш конфиг unbound дропает такие реквесты, поэтому мы запустили inproxy на .i2p.puk и .onion.puk.
Поскольку криптосервер приватен, нам не нужен никакой tor2web. Мы будем использовать только nginx и privoxy.
Добавляем всякие репозитории, затем ставим nginx, privoxy, tor и i2p.
sudo sh -c 'echo "deb http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb http://deb.i2p2.no/ jessie main" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb http://deb.torproject.org/torproject.org jessie main" >> /etc/apt/sources.list'
wget http://nginx.org/keys/nginx_signing.key
wget https://geti2p.net/_static/i2p-debian-repo.key.asc
gpg --with-fingerprint nginx_signing.key # 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
gpg --with-fingerprint i2p-debian-repo.key.asc # 7840 E761 0F28 B904 7535 49D7 67EC E560 5BCF 1346
sudo apt-keys add nginx_signing.key
sudo apt-keys add i2p-debian-repo.key.asc
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
rm nginx_signing.key i2p-debian-repo.key.asc
sudo apt-get update
sudo apt-get install nginx privoxy tor i2p deb.torproject.org-keyring i2p-keyring
В `/etc/privoxy/config` добавляем эти строчки
forward-socks5 / 127.0.0.1:9050 .
forward .i2p localhost:4444
accept-intercepted-requests 1
Первые две связывают privoxy с Tor и I2P, без третьей не будет работать связка с nginx.
Можно также закомментить лишние actionsfile и filterfile (кроме user.actions и user.filter).
В `/etc/privoxy/user.filter` добавляем это
FILTER: rampshops Remove redirect to ya.ru if location.host is not what RAMP shops expect
s/if\(document\.body\.getAttribute\("id"\)\s!=\smd5\(location\.host\)\)\s*location\.href\s=\s"http\:\/\/ya\.ru";//g
FILTER: oururls Replace hidden URLs with ours
s/http\:\/\/(.*)(shops3jckh3dexzy|shopkxrdtqcfzuvl|sholq4kbukl5mitc)\.onion(?!\.puk)/http\:\/\/$1shops\.puk/g
s/http\:\/\/(ramp2bombkadwvgz|ramp3e4jevfkjvyo|ramp2uh2esdm4tac|ramp4qd6or3h364t|ramp5bb7v2abm34a)\.onion(?!\.puk)/http\:\/\/ramp\.puk/g
s/http?\:\/\/(.*)\.onion(?!\.puk)/http\:\/\/$1\.onion\.puk/g
s/http\:\/\/(.*)\.i2p(?!\.puk)/http\:\/\/$1\.i2p\.puk/g
Лайк если sed -- это просто и понятно. Первая хуйня уберет джаваскриптовый редирект, который осуществляется если рампе не понравился ваш локейшен, вторая -- заменит ссылки на наши.
Пишем эти строки в `/etc/privoxy/user.action`
{+filter{rampshops}}
.shops3jckh3dexzy.onion
.shopkxrdtqcfzuvl.onion
.sholq4kbukl5mitc.onion
{\
+hide-user-agent{Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0}} \
+hide-referrer{block} \
+filter{oururls} \
}
/
Первый фильтр пофиксит рампошопы, второй блок сменит юзер-агент, уберет referer для всех реквестов и пофиксит все ссылки.
Если вы пользовались конфигом unbound из предыдущего поста про DNS (#2PI5A3), то туда (`/etc/unbound/unbound.conf`) надо добавить еще такую запись
local-zone: "puk." redirect
local-data: "puk. A 172.16.1.1"
Ну и пихаем [вот это](http://0bin.net/paste/gIBc9tbim2bUbtIx#fia6+QkCgZtooH7ldjstIFiigffo+7DPvEi2eMV-PH+) в конфиг nginx. Теперь все должно работать. Ура?