Создание SSH VPN [дубликат]

На этот вопрос уже есть ответ здесь:

Итак, используя ssh, вы подключитесь к серверу, набрав ssh User @ PrivateIP , как можно было бы превратить этот код в фрагмент кода, который работает как VPN (поиск, например, в Google с другой геолокации). Для справки: Под подключением я подразумеваю, что вы подключаетесь к собственному компьютеру, а не к поставляемому VPN-серверу.

2
задан 30 January 2019 в 12:26

1 ответ

Это не точно VPN, но могло быть достаточно в большинстве случаев. Можно создать соединение SSH с динамическим перенаправлением портов для создания прокси носков:

ssh -D 9050 user@sshserver -fTNC
  • -D [bind_address:]port Указывает локальное “динамическое” перенаправление портов прикладного уровня... Каждый раз, когда связь установлена с этим портом, соединение передается по безопасному каналу, и прикладной протокол затем используется для определения, где соединиться с от удаленной машины. В настоящее время SOCKS4 и протоколы SOCKS5 поддерживаются... читает больше в man ssh.

  • Опции -fTNC включит сжатие и продвинет соединение в фоновом режиме.

  • Дополнительно используйте autossh вместо ssh.

  • Кроме того, можно создать crontab запись как это:

    @reboot autossh -D 9050 user@sshserver -fTNC
    

Остальное, которое необходимо сделать, должно сказать приложениям использовать localhost:9050 как прокси носков. Вот немного ссылок, выделенных этой задаче:


Другое решение, которое является больше близко к VPN, sshuttle, который работает по ssh также. Вот его обзор:

sshuttle: где прозрачный прокси встречается, VPN встречает ssh

Насколько я знаю, шаттл является единственной программой, которая решает следующий общий падеж:

  • Вашей клиентской машиной (или маршрутизатор) является Linux, FreeBSD или MacOS.
  • У Вас есть доступ к удаленной сети через ssh.
  • У Вас не обязательно есть доступ администратора в удаленной сети.
  • Удаленная сеть не имеет никакой VPN или только глупых/сложных протоколов VPN (IPsec, PPTP, и т.д.). Или возможно Вы - администратор, и Вы просто были расстроены ужасным состоянием утилит VPN.
  • Вы не хотите создавать ssh порт вперед для каждого хоста/порта в удаленной сети.
  • Вы ненавидите перенаправление портов openssh, потому что это случайным образом медленно и/или глупо.
  • Вы не можете использовать функцию PermitTunnel openssh, потому что она отключена по умолчанию на openssh серверах; плюс он делает TCP по TCP, который имеет ужасную производительность (см. ниже).

Это доступно в репозитории Ubuntu, таким образом, можно установить его и запустить исследование командой:

sudo apt install sshuttle

Также возможно установить в virtualenv как некорневой пользователь. После того как это установлено, можно использовать:

 sshuttle --dns -r user@sshserver 0.0.0.0/0

Эта команда передаст весь трафик включая запросы DNS, будет проксирован через сервер DNS сервера, к которому Вы являетесь подключением.

2
ответ дан 2 December 2019 в 03:29

Другие вопросы по тегам:

Похожие вопросы: