Sshuttle. VPN за пять минут.

Иногда нужно быстро организовать безопасное соединение, или туннель до удалённого сервера, например для… Для работы с каким-либо зарубежным сервисом, с IP принадлежащим этой же стране. В случае если такие задачи встают регулярно, имеет смысл настроить OpenVPN, однако для разового применения можно ограничиться утилитой sshuttle

Установить утилиту можно из репозитория дистрибутива, либо с помощью pip:

yum install sshuttle
dnf install sshuttle
apt-get install sshuttle
pip install sshuttle

Конечно же, нам потребуется удалённый сервер, доступный по SSH. Допустим, его IP — 1.2.3.4. Для того что бы завернуть весь трафик через туннель до этого IP, необходимо выполнить команду:

sshuttle --dns -r root@1.2.3.4 0/0

При использовании параметра --dns DNS запросы будут так же направляться к удалённому серверу. Параметр --daemon можно передать утилите если мы хотим запустить туннель в фоне. А параметр -v имеет смысл использовать для получения большего количества информации о соединении во время сессии.

Если мы хотим использовать тунель только для трафика с определённых IP, запустить sshuttle можно вот так:

sshuttle --dns -r root@1.2.3.4 177.20.20.12/32 163.141.135.0/24

Для использования нужного ssh ключа при запуске, выполняем:

sshuttle --dns -r root@1.2.3.4 0/0 --ssh-cmd "ssh -i /home/vasya/.ssh/id_dsa"

Утилита безусловно удобная, но имеет ряд недостатков. Первый — медленная скорость соединения. Второй — доступна работа только с IPv4, поддержки IPv6 пока что нет. Однако оба этих недостатка не критичны (с учётом того для каких целей можно использовать такой туннель), и с лихвой перекрываются основным достоинством — sshuttle просто работает. Ставим, запускаем, используем — что может быть проще?

Автор знает о том, что можно строить туннели просто с помощью SSH и пробрасывания портов. Но автор хотел показать как быстро, без дополнительных заморочек с прописыванием прокси и прочего, поднять аналогичное VPN соединение.

@SysadminNotes

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *