Настраиваем доступ к TOR через OpenVPN подключение.
Для начала важный моент — лучшим способом получить доступ к .onion сайтам будет простая загрузка Tor Browser’a. Скачиваете или ставите из репозитория своего дистрибутива, запускаете и используете. Всё. Если же, по какой-то причине, вам захотелось как и мне настроить цепочку OpenVPN > TOR > Internet — добро пожаловать в заметку.
Как и в обычной настройке OpenVPN, нам потребуется самый простой виртуальный сервер с CentOS 7 на нём. Одним из отличий от обычного сетапа будет то, что я таки воспользуюсь iptables вместо firewalld. Кроме того, конфиг от стандартной настройки будет немного отличаться (будем передавать другие резольверы клиенту).
I. Поставим всё необходимое.
Тянем из репозиториев:
# yum install epel-release # yum install openvpn tor wget zip nano iptables-services
II. Настроим OpenVPN.
Настройка тут схожа с тем, что делалось в предыдущих заметках.
1. Для генерации ключей поставим старый-добрый easy-rsa:
# cd /usr/local/src/ # wget https://github.com/OpenVPN/easy-rsa-old/archive/2.3.3.tar.gz # tar xvfz 2.3.3.tar.gz # mkdir -p /etc/openvpn/easy-rsa/keys # cp -arvp /usr/local/src/easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ # cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
2. Не забываем в файле /etc/openvpn/easy-rsa/vars прописать нужные значения, либо оставляем всё как есть, если это не критично:
export KEY_COUNTRY="RU" export KEY_PROVINCE="RU" export KEY_CITY="Tundra" export KEY_ORG="TundraINC" export KEY_EMAIL="info@tundra.tld" export KEY_OU="TundraVPN"
3. Генерируем сертификат и ключ для сервера (имя сервера здесь — server):
# cd /etc/openvpn/easy-rsa # source ./vars # ./clean-all # ./build-ca # ./build-key-server server # ./build-dh # cd /etc/openvpn/easy-rsa/keys/ # cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/
Отвечаем на опросы, создаём сертификат, дожидаемся завершения процесса.
4. Создаём конфиг нашего VPN:
local 1.2.3.4 port 3333 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 10.8.0.1" keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun mssfix fragment 1300 duplicate-cn sndbuf 524288 rcvbuf 524288 push "sndbuf 524288" push "rcvbuf 524288" log openvpn.log verb 5
Обратите внимание на следующие моменты:
- В конфиге уже включены увеличенные буферы. Подробнее об этом можно почитать здесь.
- В конфиге мы пушим резольвер 10.8.0.1. Именно с него мы будем заворачивать трафик в TOR.
- В конфиге включены логи. Если это критично, отправьте лог в /dev/null
- В конфиге уже используется опция duplicate-cn. Она позволяет подключаться нескольким клиентам по одному сертификату.
Сохраняем конфиг и перезапускаем сервис командой:
# systemctl restart openvpn@server.service
III. Настраиваем TOR.
Открываем файл /etc/tor/torrc и дописываем в него следующее:
VirtualAddrNetwork 10.192.0.0/10 AutomapHostsOnResolve 1 DNSPort 10.8.0.1:53530 TransPort 10.8.0.1:9040
Сохраняем изменения, перезапускаем сервис.
# systemctl restart tor
IV. Настраиваем iptables и форвардинг.
Важный момент — данная инструкция пишитеся для «чистого» сервера, на котором модификация правил фаервола не повлияет на доступность сервисов. Для серверов с уже нстроенным фаерволом, или какими-либо работающими сервисами настройка может отличаться.
1. Для начала, отключим firewalld и включим iptables в работу. При этом, мы очистим все имеющиеся правила.
# systemctl stop firewalld # systemctl disable firewalld # systemctl enable iptables # systemctl restart iptables # iptables -F
2. Добавим правила, которые будут перенаправлять приходящий на серер трафик в TOR.
# iptables -A INPUT -i tun0 -s 10.8.0.0/24 -m state --state NEW -j ACCEPT # iptables -t nat -A PREROUTING -i tun0 -p udp --dport 53 -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:53530 # iptables -t nat -A PREROUTING -i tun0 -p tcp -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:9040 # iptables -t nat -A PREROUTING -i tun0 -p udp -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:9040
3. Сохраняем конфигурацию iptables:
# service iptables save
3. Не забываем так же, включить форвардинг пакетов в sysctl.conf:
# cat /etc/sysctl.conf net.ipv4.ip_forward = 1 # sysctl -p
V. Выписываем сертификат для клиентов.
Создаём сертификат, с помощью которого к серверу будут подключаться клиенты:
# cd /etc/openvpn/easy-rsa # ./build-key client # mkdir /root/clientserts # mv /etc/openvpn/easy-rsa/keys/client.* /root/clientserts/ # cp /etc/openvpn/easy-rsa/keys/ca.crt /root/clientserts/ # cd /root/ # zip -r -9 clientserts.zip clientserts/
Архив clientserts.zip используем по ситуации — для кого-то нужно будет написать конфигурационный файл, ключающий в себя сертификаты и ключ, кто-то просто с помощью GUI настроит подключение и т. д. Примеры настройки для Windows и для NetworkManager в Linux есть в прошлой заметке (прокручиваем вниз).
Так или иначе, после того как подключение будет настроено, и клиент подключится к OpenVPN серверу 1.2.3.4, его исходящим IP адресом будет IP из TOR сети.
Резольвинг .onion адресов так же будет работать:
$ nslookup expyuzz4wqqyqhjn.onion Server: 10.8.0.1 Address: 10.8.0.1#53 Non-authoritative answer: Name: expyuzz4wqqyqhjn.onion Address: 10.241.254.78 Name: expyuzz4wqqyqhjn.onion Address: fe96:a51a:3ef2:e38f:ed9:9f89:afda:e681
$ wget http://expyuzz4wqqyqhjn.onion/ --2018-09-15 09:40:29-- http://expyuzz4wqqyqhjn.onion/ Распознаётся expyuzz4wqqyqhjn.onion (expyuzz4wqqyqhjn.onion)… 10.241.254.78, fe96:a51a:3ef2:e38f:ed9:9f89:afda:e681 Подключение к expyuzz4wqqyqhjn.onion (expyuzz4wqqyqhjn.onion)|10.241.254.78|:80... соединение установлено. HTTP-запрос отправлен. Ожидание ответа… 200 OK Длина: 15671 (15K) [text/html]
На этом, настройку можно считать завершённой. Теперь, наше подключение к сети выглядит ровно так, как и задумывалось OpenVPN > TOR > Internet.
P. S. Ещё разок — для доступа к .onion сайтам лучше всего использовать Tor Browser, но если по какой-то причине, вы хотите, что бы стандартный Firefox, после описанной выше настройки резольвил .onion адреса, откройте about:config в нём, найдите там настройку blockdotonion и задайте для неё значение false. Это плохая идея.
Спасибо. Интересно и просто. Кому то покажется даже нужным. Но есть 1 минус. На многие сайты невозможно зайти имея ip тора. Может все же когда нибудь владельцы пересмотрят свои взгляды.
ничё непонял! а попроше можно обьяснить?
А можно инструкцию как настроить VPN через TOR? (TOR > OpenVPN > Internet)