ssh-->vpn
Превращаем любой SSH-сервер в полноценный VPN с помощью утилиты sshuttle
3 января 2018
Вы можете помнить, как когда-то я рассказывал про
установку и настройку OpenVPN за 5 минут. А знаете ли вы, что абсолютно любой SSH-сервер можно использовать в качестве совершенно полноценного VPN вообще без какой-либо настройки? Такую добрую магию нам дает замечательная утилита под названием
sshuttle, о которой и пойдет речь далее. Вдруг кто-то про нее еще не знает.
Дополнение: Опыт показал, что стабильность работы sshuttle сильно зависит от качества вашего интернета. По возможности я бы все же рекомендовал использовать OpenVPN, а про sshuttle знать просто так, на всякий случай.
Итак, установка в
Arch Linux:
sudo pacman -S sshuttleВ других дистрибутивах Linux пакет почти наверняка будет называться так же.
Далее создаем скрипт с именем типа vpn.sh:
#!/bin/shset -e
USER=eax
SERVER=11.22.33.44
DNS=8.8.8.8
mv /etc/resolv.conf /etc/resolv.conf.sshuttle-
$SERVER.bak
echo "nameserver $DNS" > /etc/resolv.conf
sshuttle --dns -r
$USER@
$SERVER -x
$SERVER 0/
0 ||
truemv /etc/resolv.conf.sshuttle-
$SERVER.bak /etc/resolv.conf
Здесь
eax и
11.22.33.44 нужно заменить на имя пользователя и IP-адрес вашего сервера.
Далее говорим:
chmod u+x ./vpn.sh
sudo ./vpn.sh… и ждем появления строчки:
client: Connected.Проверяем, что все работает:
curl https://eax.me/ip/В ответ должен прийти IP-адрес использованного SSH-сервера. Также проверяем, что используется DNS-сервер, указанный в переменной
$DNS:
dig eax.me
В ответ должно прийти что-то вроде:
...
;; Query time: 20 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)… где 8.8.8.8 — это выбранный нами DNS-сервер. В данном случае это сервер компании Google.
Напоследок вот вам несколько занимательных фактов о sshuttle:
• Чтобы все работало, на сервере не требуются ни root, ни sudo;
• Утилита не ломается, если попытаться сделать VPN внутри VPN;
• Также вы можете использовать ее совместно с OpenVPN или каким-нибудь
Tor;
Содержание