Вопрос или проблема
Я только что купил Raspberry Pi и хочу настроить беспроводной интерфейс ad hoc полностью через SSH-туннель, созданный с использованием другого беспроводного интерфейса. Я хочу сделать это, чтобы иметь защищенное и приватное соединение с интернетом в местах с公共ным Wi-Fi. Я знаю, что было бы проще сделать это на одном компьютере, но я хотел бы настроить это и на RPi, так как я использую его для других сетевых задач, когда пользуюсь интернетом, а затем просто подключиться к беспроводной сети с моего ноутбука/телефона. Это действительно поможет мне с моим iPhone, потому что он не поддерживает SSH-туннель локально. Как мне поступить? Заранее спасибо за всю вашу помощь.
Вам нужна удаленная машина с работающим ssh, к которой вы можете подключиться с Pi. Включите AllowTCPForwarding на удаленной машине, затем подключитесь с Pi и создайте SOCKS-прокси с помощью ssh-соединения. Затем настройте ваш iPhone на использование Pi в качестве прокси, и всё готово.
Но я вижу две проблемы: 1, вам придется сделать SOCKS-прокси доступным для других хостов в локальной сети. Вам может понадобиться настроить фильтрацию MAC-адресов в iptables, чтобы разрешить вашему телефону доступ, но заблокировать других пользователей на общественном Wi-Fi от нахождения и использования прокси. 2, последний раз, когда я проверял, устройства iOS не поддерживают SOCKS-прокси, однако обходной путь уже был опубликован здесь.
Однако помните, что это зашифрует трафик с вашего телефона в интернет, но трафик всё равно будет уязвим для перехвата кем-либо на той же беспроводной сети, потому что прокси находится на Pi.
На удаленной машине в /etc/ssh/sshd_config:
AllowTCPForwarding yes
Чтобы инициировать прокси с Pi:
ssh -g -D 8080 user@remote-host
Опционально вы можете использовать -v для устранения неполадок соединения и -N, чтобы предотвратить открытие оболочки после подключения.
источник: man ssh
& man sshd_config
То, что он говорит, это то, что SSH “теперь” (в последние несколько лет) поддерживает VPN для бедных. С учетом сказанного, могу ли я настоятельно порекомендовать другое решение? В любом случае, кривая обучения относительно крутая, но если вы хотите защищенные коммуникации с сильным сообществом, огромным количеством документации и клиентами, которые работают почти на всем (Windows, Linux, Mac, iPhone, Android… вы понимаете), вам стоит обратить внимание на OpenVPN. Смотрите http://openvpn.net/index.php/open-source/documentation/howto.html для получения множества полезной информации для начинающих и не стесняйтесь подписываться на (очень полезный) почтовый список. Неудивительно, что также существует учебник по OpenVPN на Raspberry Pi: http://raspberrypihelp.net/tutorials/1-openvpn-server-tutorial.
Наконец, одно быстрое упоминание: OpenVPN также невероятно надежен; в отличие, скажем, от реализации Cisco IPSec моей компании (или SSH), OpenVPN очень хорошо восстанавливает соединение, что удобно для таких вещей, как телефоны, которые периодически теряют связь.
Я понимаю, что это технически не отвечает на ваш вопрос, но, как человек, который долго работает в IT, иногда важнее понять, что человек пытается достичь, чем буквально подходить к вопросу.
Ответ или решение
Чтобы настроить маршрутизацию с помощью SSH-туннеля для отдельного сетевого интерфейса на Raspberry Pi и обеспечения защищённого соединения с интернетом через общедоступные точки доступа Wi-Fi, выполните следующие шаги. Этот процесс позволит вам использовать ад-хок беспроводную сеть для подключения других устройств, таких как ваш iPhone, к защищённой интернет-сети через SSH-прокси, созданный на Pi.
Шаг 1: Настройка SSH-доступа на удалённом сервере
Убедитесь, что у вас есть удалённый сервер, с которым вы сможете установить SSH-соединение. На этом сервере необходимо включить параметр AllowTCPForwarding
. Для этого:
-
Подключитесь к удалённому серверу по SSH.
-
Откройте файл конфигурации SSH-сервера:
sudo nano /etc/ssh/sshd_config
-
Найдите или добавьте строку:
AllowTCPForwarding yes
-
Сохраните файл и перезапустите SSH-сервер:
sudo systemctl restart sshd
Шаг 2: Подключение Raspberry Pi к удалённому серверу и создание SOCKS-прокси
Теперь, когда SSH-сервер настроен, вы можете подключиться к нему с вашего Raspberry Pi и создать SOCKS-прокси.
-
Подключитесь к вашему Raspberry Pi.
-
Запустите следующую команду для создания SSH-туннеля:
ssh -g -D 8080 user@remote-host
-g
: позволяет другим хостам, находящимся в вашей локальной сети, обращаться к SOCKS-прокси.-D 8080
: создает SOCKS-прокси на порту 8080.- Замените
user
на имя пользователя на удалённом сервере, аremote-host
на IP-адрес или доменное имя сервера.
-
Опционально, добавьте флаг
-N
, чтобы не запускать удалённую оболочку, и-v
для режима отладки:ssh -g -D 8080 -N -v user@remote-host
Шаг 3: Настройка Raspberry Pi для проксирования
Для подключения вашего iPhone к созданному SOCKS-прокси потребуется отрегулировать параметры сети. Однако вы должны учесть, что iOS не поддерживает SOCKS-прокси напрямую. Примените обходные пути, описанные в источниках, например, с помощью программного обеспечения или настройки VPN.
Шаг 4: Защита SOCKS-прокси
Чтобы ограничить доступ к прокси-серверу только для вашего устройства (например, iPhone), рассмотрите возможность настройки правил iptables:
-
Установите iptables на Raspberry Pi:
sudo apt-get install iptables
-
Настройте правила:
sudo iptables -A INPUT -p tcp --dport 8080 -s ваш_iPhone_IP -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
Замените
ваш_iPhone_IP
на IP-адрес вашего устройства в локальной сети. Эти команды разрешают доступ к порту 8080 только для вашего iPhone и блокируют доступ для всех остальных устройств.
Шаг 5: Альтернативное решение – OpenVPN
Хотя маршрутизация через SSH-туннель решает поставленную задачу, настоятельно рекомендуется рассмотреть более надёжное и удобное решение, такое как OpenVPN. OpenVPN предоставляет высокую степень защиты и прост в использовании на различных устройствах. Для получения информации об установке OpenVPN на Raspberry Pi обратитесь к документации OpenVPN или найдите специальные руководства для Raspberry Pi.
Заключение
Следуя приведённым шагам, вы сможете обеспечить безопасное интернет-соединение для вашего iPhone через Raspberry Pi, используя SSH-туннель и SOCKS-прокси. Этот метод не только защитит ваши данные в общественных сетях Wi-Fi, но и позволит легко подключить другие устройства к Интернету через Raspberry Pi.