Thank you for reading this post, don't forget to subscribe!
Sshuttle - дает возможность создать VPN соединение от вашей локальной машины до удаленной машины с использованием подключения по ssh. Для работы необходим пакет python версии не ниже 2.3
Для работы вы должны иметь права root пользователя на локальной машине, но при этом подключение к удаленному сервере может быть организованно с правами обычных непривилегированных пользователей.
Возможно одновременное подключение сразу к нескольким удаленным серверам
Установка
sudo yum install sshuttle
Синтаксис команды:
sshuttle [options] [-r [username@]sshserver[:port]] < subnets …>
Опции
- subnets
список подсетей маршрут до которых будет доступен через VPN.
Значения 1.2.3.4 - ip-адрес, 1.2.3.4/32 - ip-адрес, 1.2.3.0/24 - сеть с маской 255.255.255.0
Возможно указать туннелирование определенных портов:
1.2.3.4:4000 - тунеллироваться будет трафик с портом назначения 4000,
1.2.3.4:4000-6000 - диапозон портов;
Так же возможно указание доменного имени: например test.un:9000. - --method [auto|nat|tproxy|pf]
Метод файервола исползуемый sshuttle. По-умолчанию auto, пытается сам угадать подходящий метод использования файервола. - -l, --listen=[ip:]port
Использовать указанный адрес и порт как прозрачный прокси. По-умолчанию sshuttle назначает порт автоматически и ip-адрес 127.0.0.1. - --dns
Перехватывать локальные DNS запросы и перенаправлять их на удаленный DNS-сервер. - --python
Для указания пути до python интерпритатора на удаленном сервере. По-умолчанию это python путь берется из переменной PATH. - -r, --remote=[username@]sshserver:[port]
Указывается имя пользователя, адрес ssh сервера и порт под которыми будет происходить подключение.
Например: sshuttle -r root@1.2.3.4:2208. - -x --exclude=subnet
Указываем сеть, которая будет исключена из перенаправления.
Например: sshuttle -r root@1.2.3.4:2208 0/0 -x 10.10.10.0/24 - через VPN будет перенаправлен весь трафик, кроме трафика к сети 10.10.10.0/24 - -X, --exclude-from=file
Список сетей для исключения из перенаправления берется из указанного файла. НА каждую сеть отдельная строка. - -v, --verbose
Более информативный вывод информации о сессии. По-умолчанию выводятся только ошибки. - -D, --daemon
Автоматический выполнять fork для sshuttle после подключения и выполнять в background режиме. - --syslog
После подключения отправлять все лог-сообщения в syslog вместо stderr. - --pidfile=pidfilename
Когда используется опция --daemon, сохранять pid sshuttle в указанном файле. По-умолчанию это sshuttle.pid файл в текущей директории.
Существую и другие опции с которыми можно ознакомиться в man
Примеры
sudo sshuttle -vr test@1.2.3.4:2208 10.10.0.0/16 -x 10.10.11/0/24
Создаем VPN соединение с сервером с адресом 1.2.3.4 по порту 2208 (порт ssh измененный) c правами пользователя test на удаленном сервере, организуем перенаправление через VPN трафика обращенного к сетям 10.10.0.0.16 за исключением подсети 10.10.11.0.24 с выводом расширенной информации.