Перенаправить запрос через другой компьютер

Есть два компьютера: Raspberry Pi (ос rapebian) и стационарный компьютер на Windows 10 в одной локальной сети. На компьютере с windows установлен VPN, через который осуществляется доступ к удалённому GitLab. На Raspberry Pi ведётся разработка проекта который базируется на удалённом GitLab. Вопрос: каким образом можно настроить эту систему так, чтобы можно было отпралять изменения в удалённый GitLab через стационарный компьютер с Raspberry Pi?

Дополнительно:

  • VPN: ShrewVPN. Попытка настройки на Raspberry Pi ни к чему не приводят. Без графической оболочки (через CLI) клиент сыплет ошибками. Искал способы решения, но они почти все без ответа. На windows работает без проблем. Держать включённой графику на Raspberry Pi исключительно ради VPN - считаю некорретным.
  • На windows 10 есть OpenSSH Sever, nginx. Есть возможность поставить\настроить любое другое ПО.

Ответы (2 шт):

Автор решения: anderson

Ответ оказался ближе чем чем ожидалось. Достаточно было сделать port forwarding. Ответом будет небольшая адаптация вот этого ответа (или прямая ссылка на вопрос).

Для корректной работы озвученной схемы: Raspberry Pi -> PC with windows -> VPN -> External GitLab - достаточным является перенаправление порта.

  1. На PC with windows 10 поднимаем OpenSSH server. В конфигурации по пути C:\ProgramData\ssh подкручиваем настройки в файле конфигурации (уберите символ #, чтобы раскомментировать настройку):
    • Port, если надо занять другой порт
    • ListenAddress выставляем в 0.0.0.0, чтобы можно было присоединиться с других адресов
  2. На Raspberry Pi запускаем проброс порта на другой компьютер командой
ssh [email protected] -D 1080 -N

Где username - имя пользователя, под которым выполнится вход на PC with windows 10; 10.9.9.1 - сетевой адрес PC with windows 10; 1080 - порт, который будет прослушиваться на Raspberry Pi. Так же можно выставить флаг -f, который позволит запустить перенаправление порта в фоне (подробнее о флагах тут).

Теперь можно выполнить команду клонирования репозитория:

git -c http.proxy=socks5://localhost:1080 clone http://serverB/repo.git

Где http://serverB/repo.git может быть любым удобным адресом клонируемого репозитория, в том числе и https.

Останется лишь прописать для данного репозитория настроку прокси. Например командой:

git config http.proxy socks5://localhost:1080

Внутри папки проекта в папке .git в файле config можно будет увидеть результат:

[http]
        proxy = socks5://localhost:1080

Теперь, при необходимости делать push \ pull достаточно будет активировать проброс порта (или можно прописать автостарт команды через cron)

→ Ссылка
Автор решения: anderson

Ещё одним вариантом решения получившейся ситуации является поднятие proxy-сервера на windows и проксирование запросов с Rapberry Pi.

Есть простой и не требовательный прокси сервер для windows - 3proxy. В разделе релизов есть скомпилированные версии. Программа портабельна и не требует дополнительной устновки.

Распаковав архив внутри будут ожидать 3 папки и несколько файлов. Нам нужна папка bin. Сервер работает исключительно через CLI, соответственно настройка осуществляется через конфигурационный файл. Внутри папки bin создаём файл 3proxy.cfg. Подробные возможности о настройке можно почитать в папке doc из корневой папки (на одном уровне с bin). Внутри файла создаём простейшую конфигурацию:

auth none
log <path_to_log>\logs\3proxy.log D
rotate 30
proxy

Где необходимо задать <path_to_log> до папки с логами. По логам будет удобно отслеживать работоспособность сервера. Параметр D означает ротацию логов по дням. Параметр auth в моём случае выставлен в none, т.е. сервер не будет требовать авторизации.

Запускается сервер просто: в командной строке необходимо запустить 3proxy.exe. Если необходимо запустить программу в фоне, то можно сделать это предложенным тут способом. Открываем CMD и набираем

START /B "<path_to_3proxy>\3proxy.exe"

Где <path_to_3proxy> - полный путь к программе.

На Rapberry Pi в свою очередь необходимо установить глобальное прокси. Для этого находясь в домашней (~) папке редактируем файл .bashrc. Дописываем в конец файла строки:

export http_proxy=http://10.10.10.1:3128
export https_proxy=https://10.10.10.1:3128

Где 10.10.10.1 - адрес компьютера с прокси-сервером. После чего необходимо его активировать:

source ./.bashrc

Прокси сервер очень легковесный. В оперативной памяти занимает порядка 1.5Mb.

→ Ссылка