SSH – Как туннелировать всю сеть

Вопрос или проблема

Как я могу преобразовать следующую команду (sshuttle) в команду SSH-туннеля?

sshuttle -r [email protected] 172.16.20.0/24
ssh [email protected]

Единственный метод, который я знаю для SSH-туннелирования, включает использование конкретной машины (например, машина с адресом 172.16.20.111 является туннелем для 172.16.20.113) Например:

ssh [email protected] -L 6661:172.16.20.111:22 -fnNT
ssh USER@localhost -p 6661 -L6662:172.16.20.113:22 -fnNT
ssh USER@localhost -p 6662

Тем не менее, я хотел бы туннелировать всю сеть 172.16.20.0 (как команда sshuttle). Я не хочу туннелировать к конкретной машине, такой как 172.16.20.111.

Ответ или решение

Тоннелирование всей сети с использованием SSH — это задача, которая требует глубокого понимания сетевых технологий и возможностей Secure Shell (SSH). Перед тем как перейти к конкретным шагам, рассмотрим теоретическую базу, усилим её примером и применением на практике.

Теория

SSH обозначает Secure Shell и представляет собой протокол для безопасного удалённого доступа. Этот инструмент поддерживает не только удалённый вход на сервер, но и тоннелирование — передачу данных через защищённое соединение. Однако стандартная утилита SSH не поддерживает полный VPN, который бы охватывал всю сеть. Чтобы обойти это ограничение и сделать возможным тоннелирование всей сети, можно использовать определённые методы и утилиты.

SSH-тоннелирование реализуется посредством переадресации портов (port forwarding). Существует два типа переадресации:

  1. Локальная переадресация портов (Local Port Forwarding) — позволяет перенаправить трафик с локальных машин на удалённый сервер.
  2. Удалённая переадресация портов (Remote Port Forwarding) — позволяет перенаправить трафик с удалённого сервера на клиентскую машину.
  3. Динамическая переадресация портов (Dynamic Port Forwarding) — позволяет создавать динамическое портовое соединение, используя протокол SOCKS.

Пример

Ваша задача подразумевает замену функциональности sshuttle, который позволяет перенаправлять трафик для всей сети, на соответствующую команду SSH. sshuttle работает, создавая прозрачный прокси, маршрутизируя весь сетевой трафик через SSH-соединение. Однако, поскольку стандартный SSH не поддерживает такого поведения напрямую, нужно использовать динамическую переадресацию портов с поддержкой SOCKS-прокси.

Реализация

Рассмотрим, как заменить команду sshuttle аналогичным функционалом через SSH, используя концепцию динамической переадресации портов для SSH с SOCKS-прокси.

Шаги по настройке

  1. Создание SOCKS-прокси-сервера с использованием SSH:

    ssh -D 1080 [email protected]

    Эта команда создаёт SOCKS5-прокси на локальном порту 1080. Все приложения, которые поддерживают работу через SOCKS5-прокси (например, браузеры), могут использовать этот порт для перенаправления своего сетевого трафика через удалённый сервер.

  2. Настройка маршрутизации трафика через SOCKS-прокси:

    Чтобы маршрутизировать весь сетевой трафик с вашего устройства через этот SOCKS-прокси, можно использовать инструменты, такие как tsocks или proxychains, которые позволяют перенаправлять трафик приложений через SOCKS-прокси.

    Пример с использованием proxychains:

    • Установите proxychains:

      sudo apt-get install proxychains
    • Настройте proxychains для использования локального SOCKS-прокси, изменив конфигурационный файл /etc/proxychains.conf:

      socks5 127.0.0.1 1080

    Теперь любая команда, выполненная через proxychains, будет проходить через ваш SOCKS-прокси:

    proxychains curl http://example.com
  3. Расширение для тоннелирования всей сети:

    В случае если вы хотите перенаправить весь системный трафик, включая DNS-запросы, вам придётся использовать дополнительное программное обеспечение, которое бы создавало полноценный VPN-подобный туннель, или конфигурировать маршрутные таблицы, чтобы направить весь трафик через созданный SOCKS-прокси.

Заключение

Таким образом, стандартное SSH-тоннелирование может выступать достойной заменой sshuttle, когда используется динамическая переадресация портов и соответственно настроенные приложения для поддержки SOCKS5-прокси. Хотя это решение не предоставляет прямого пути для маршрутизации всего сетевого трафика подобно VPN, оно открывает значительное пространство для манёвра, позволяя подключать и перенаправлять нужные ресурсоёмкие процессы через защищённый туннель.

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

Капча загружается...