Как прокинуть vpn туннель c mac на linux
Обновлено: 28.06.2024
Бывают случаи, когда вы хотите работать в Интернете в частном порядке, получить доступ к контенту с географическими ограничениями или обойти любые промежуточные брандмауэры, которые может применяться в вашей сети.
Более простой альтернативой является маршрутизация трафика локальной сети с помощью зашифрованного прокси-туннеля SOCKS. Таким образом, все ваши приложения, использующие прокси-сервер, будут подключаться к серверу SSH, и сервер будет перенаправлять весь трафик в его фактическое место назначения. Ваш интернет-провайдер (интернет-провайдер) и другие третьи стороны не смогут проверять ваш трафик и блокировать ваш доступ к веб-сайтам.
Это руководство проведет вас через процесс создания зашифрованного туннеля SSH и настройки веб-браузеров Firefox и Google Chrome для использования прокси-сервера SOCKS.
Подготовка
- Сервер, работающий под управлением любой разновидности Linux, с доступом SSH для маршрутизации вашего трафика через него.
- Веб-браузер.
- Клиент SSH.
Настроить SSH-туннель
Мы создадим SSH-туннель, который будет безопасно перенаправлять трафик с вашего локального компьютера через порт 9090 на SSH-сервер через порт 22 . Вы можете использовать любой порт с номером больше 1024 , только root может открывать порты на привилегированных портах.
Linux и macOS
Если вы используете Linux, macOS или любую другую операционную систему на основе Unix на своем локальном компьютере, вы можете легко запустить туннель SSH с помощью следующей команды ssh :
Используются следующие параметры:
После запуска команды вам будет предложено ввести пароль пользователя. После его ввода вы войдете на свой сервер и туннель SSH будет установлен.
Вы можете настроить аутентификацию на основе ключа SSH и подключаться к серверу без ввода пароля.
Windows
Пользователи Windows могут создать SSH-туннель с помощью SSH-клиента PuTTY. Вы можете скачать PuTTY здесь .
Запустите Putty и введите IP-адрес вашего сервера в поле Host name (or IP address) .
В меню « Connection разверните SSH и выберите « Tunnels . Введите порт 9090 в поле Source Port и установите переключатель Dynamic .
Вернитесь на страницу Session чтобы сохранить настройки, чтобы не вводить их каждый раз. Введите имя сеанса в поле « Saved Session и нажмите кнопку « Save .
Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку « Open .
Появится новое окно с запросом вашего имени пользователя и пароля. После того, как вы введете свое имя пользователя и пароль, вы войдете в систему на своем сервере, и будет запущен туннель SSH.
Настройка аутентификации с открытым ключом позволит вам подключаться к вашему серверу без ввода пароля.
Настройка вашего браузера для использования прокси
Fire Fox
Приведенные ниже шаги одинаковы для Windows, macOS и Linux.
В верхнем правом углу щелкните значок гамбургера ☰ чтобы открыть меню Firefox:
Щелкните ссылку ⚙ Preferences .
Прокрутите вниз до раздела « Network Settings » и нажмите кнопку « Settings. .
Откроется новое окно.
Чтобы вернуться к настройкам по умолчанию, перейдите в « Network Settings , выберите переключатель « Use system proxy settings » и сохраните настройки.
Есть также несколько плагинов, которые могут помочь вам настроить параметры прокси-сервера Firefox, например, FoxyProxy .
Гугл Хром
Google Chrome использует системные настройки прокси по умолчанию. Вместо изменения настроек прокси-сервера операционной системы вы можете использовать надстройку, например SwitchyOmega, или запустить браузер Chrome из командной строки.
Чтобы запустить Chrome с использованием нового профиля и вашего SSH-туннеля, используйте следующую команду:
Linux:
macOS:
Windows:
Если профиль не существует, он будет создан автоматически. Таким образом, вы можете запускать несколько экземпляров Chrome одновременно.
Выводы
Вы узнали, как настроить туннель SSH SOCKS 5 и настроить свой браузер для частного и анонимного доступа в Интернет. Для простоты использования вы можете определить туннель SSH в файле конфигурации SSH или создать псевдоним Bash , который настроит туннель SSH и запустит браузер.
Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.
Я дам здесь лишь самые основы: расскажу, как создавать туннели, объясню синтаксис команд, приведу примеры обратных туннелей и причины для использования каждого из них. Кратко коснусь файла ssh_config; более подробно он будет рассмотрен в будущем.
Итак, вы получили несколько примеров SSH-туннелей, а теперь посмотрим, как это все делается.
Перед тем, как мы углубимся в работу на клиенте, немного отредактируем файл sshd_config на сервере. В /etc/ssh/sshd_config я обычно вношу некоторые изменения. Но не забудьте перед началом редактирования сделать его резервную копию на случай, если что-то пойдет наперекосяк.
Не забудьте, что если вы внесли какие-либо изменения в sshd_config, то вам нужно будет перезапустить сервис sshd для того, чтобы эти изменения вступили в силу.
А теперь перейдем к ключам. Нет-нет, не тем ключам, которые у вас отобрал папа, когда вы разбили мамину машину, а к ключам командной строки SSH.
Типичный SSH-туннель без перенаправления X выглядит примерно так:
Здесь ключи означают следующее:
Хотите еще немного примеров?
Проброс POP3 и SMTP через SSH:
Проброс Google Talk через SSH (ключ -g позволяет удаленным машинам подключаться к проброшенным локальным портам):
Практически все, что передается в виде простого текста, можно обезопасить с помощью SSH-туннелей
После подключения настройте свой браузер или другую программу, способную использовать прокси на адрес localhost:5222. Таким образом будет создан динамический проброс порта и весь трафик пойдет через SSH-сервер, одновременно шифруясь и обходя фильтрование по содержимому
Перенаправление сеансов X и VNC
При пробросе сеансов VNC будьте внимательны. Если на клиенте, с котрого вы подключаете туннель, работает VNC-сервер, скажем, на порту 5900, удостоверьтесь, что вы не указали этот порт в качестве перенаправляемого, иначе вы подключитесь к самому себе. Вообще же VNC пробрасывается точно так же, как и любой другой сервис:
Обратные SSH-туннели
Итак, для создания обратного SSH-туннеля необходимо выполнить следущие действия:
- На клиентской машине:
- На стороне сервера:
И вот вам обратный туннель! Вуаля!
Заключение
Избегая цензуры в Интернете, большинство людей знают о «прокси» и VPN-сервисах. Это инструменты, которые помогают пользователям обойти такие вещи, как политическая цензура или даже просто правила ИТ на рабочем месте. Они также очень хороши для тех из нас, кто параноик в Интернете и хочет дополнительного уровня конфиденциальности. По большей части такие вещи, как VPN и даже публичные прокси-сайты, работают очень хорошо. К ним легко получить доступ и настроить. Для пользователей Linux есть простой способ обойти глупые сетевые правила и быстро создать некоторую конфиденциальность при работе в Интернете; сделать туннель SSH.
Как работает туннелирование
Туннелирование работает путем создания «трубы» или «туннеля» от хоста сервера к клиенту, эффективно экспортируя трафик от хоста к клиенту. По сути, создается ощущение, будто вы сидите прямо перед сервером, используя его подключение к Интернету, а не компьютер, на котором вы находитесь.
Туннель стал возможным благодаря протоколу Secure Shell: SSH. SSH-туннелирование не требует наличия какого-либо домашнего сервера. Это связано с тем, что запуск SSH-сервера, возможно, является одной из самых легких программ. Черт возьми, вы могли бы даже запустить его на мобильном телефоне, если бы у вас была мотивация.
Проверь это - Как загружать приложения и игры в Oculus QuestУстановка туннеля
SSH-туннель невозможен без SSH-сервера. К счастью, процесс настройки довольно прост. Начните с установки SSH и серверного компонента. Команда для установки компонентов зависит от операционной системы.
Ubuntu
Arch Linux
Debian
Fedora / OpenSUSE
Пользователи Fedora и OpenSUSE обнаружат, что SSH уже установлен в системе. Несмотря на это, его нельзя включить. Включите его через:
После установки сервера пора туннелировать.
НОСКИ ПРОКСИ
Проверь это - 4 лучших альтернативы Slack для LinuxНастройка FireFox
Какой бы тип туннеля вы ни хотели использовать, если вы хотите работать в Интернете, необходимо настроить параметры прокси. Имейте в виду, что хотя прокси-серверы SOCKS довольно хорошо работают во всех браузерах, лучше всего использовать Firefox. Это потому, что у него есть надежные варианты.
Начните с открытия Firefox, затем щелкните гамбургер-меню, чтобы открыть область настроек. Нажмите «Настройки», чтобы открыть вкладку настроек. Затем нажмите «Дополнительно», затем «Сеть».
На странице «Сеть» нажмите «Настройки», чтобы открыть настройки прокси.
Найдите «Ручная настройка», установите флажок и выберите текстовую область SOCKS HOST. В этом текстовом поле для SOCKS HOST введите «127.0.0.1». Используйте «8888» для порта. Затем нажмите кнопку OK, откройте новую вкладку и введите «about: config» в адресную строку.
О Firefox: Конфигурация
В области конфигурации Firefox опытные пользователи могут настраивать и изменять внутреннюю работу Firefox. Чтобы прокси SOCKS работал, нужно изменить настройку, и не более того.
На странице about: config прочтите появившееся предупреждение и примите его, чтобы продолжить. Снимите флажок, если вы больше не хотите видеть предупреждение.
В строке поиска вставьте «network.proxy.socks_remote_dns». Найдите параметр «False» и дважды щелкните по нему, чтобы он изменился на true. После этого прокси-сервер SOCKS будет работать, и можно будет начинать просмотр.
Примечание. Когда туннель SSH отключается, туннель отключается. Кроме того, если вы хотите использовать Firefox в обычном режиме, вам нужно вернуться к настройкам сети и вернуть все в нормальное состояние, иначе это не сработает.
Базовый локальный туннель
Это туннель, который отправляет соединение локально на удаленное соединение. Лучше всего, если вы хотите подключить сервер к удаленному ПК. Если вам не нужна конфиденциальность, и вам просто нужно удаленное соединение через туннель, используйте локальный туннель.
Заключение
Безопасный удаленный доступ к сервисам в локальной сети.
VPN (англ. Virtual Private Network, «виртуальная частная сеть») — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например Интернет).
Наиболее популярные решения с открытым исходным кодом для построения виртуальных частных сетей — «OpenVPN» и «IPSec». В релиз ядра Linux 5.6, который состоялся 30 марта 2020 года, вошла еще одна реализация технологии VPN — «WireGuard». Это молодой набирающий популярность проект.
Основные преимущества «WireGuard»:
- Высокая производительность (бенчмарки можно посмотреть тут)
- Простая настройка
- Современная криптография
- Качественный код
В этой инструкции мы настроим VPN-туннель в локальную сеть с помощью «WireGuard» и обеспечим доступ из интернета к узлам LAN с различных устройств.
Адресация в LAN - 192.168.100.0/24, VPN-сети назначим диапазон 10.0.0.0/24.
Для размещения сервера потребуется VPS. При выборе необходимо обратить внимание на технологию виртуализации: предпочтительно KVM, можно XEN, а вот OpenVZ следует избегать. Дело в том, что в WireGuard реализован как модуль ядра, а в OpenVZ ядро очень старое. Я буду использовать самый дешевый виртуальный сервер c операционной системой Ubuntu 20.04 (KVM 512 МБ RAM 20 ГБ SSD 1 CPU - такая конфигурация вполне подойдет).
Залогинимся на сервер с правами пользователя root и выполним следующие команды:
Создадим конфигурационный файл /etc/wireguard/wg0.conf со следующим содержимым:
[Interface] Address = 10.0.0.1/24 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ListenPort = 51820 PrivateKey = <SERVER_PRIVATE_KEY>Параметры PostUp/PostDown содержат правила iptables, которые будут применены при запуске/остановке сервиса. Обратите внимание на название сетевого интерфейса — оно должно соответствовать общедоступному сетевому адаптеру, в моем случае это eth0. Вывести список адаптеров можно командой:
Выберите из списка тот, которому соответствует внешний IP-адрес. <SERVER_PRIVATE_KEY> - заменяем содержимым файла /etc/wireguard/privatekey.
Запустим VPN-сервис и добавим его в автозагрузку:
Убедимся, что служба запустилась корректно:
Если ваш роутер поддерживает WireGuard (Zyxel KeeneticOS >=3.3, Mikrotik RouterOS >=7.1beta2, OpenWRT) — можно настроить VPN-клиент прямо на нем. Я буду использовать для этой цели сервер Ubuntu 20.04 (локальный адрес 192.168.100.7).
Первый этап настройки аналогичен конфигурации серверной части. Выполняем с правами root-пользователя:
[Interface] PrivateKey = <PEER_LAN_PRIVATE_KEY> Address = 10.0.0.2/32 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wlp2s0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wlp2s0 -j MASQUERADE [Peer] PublicKey = <SERVER_PUBLIC_KEY> Endpoint = <SERVER_IP>:51820 AllowedIPs = 10.0.0.0/24 PersistentKeepalive = 20<PEER_LAN_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера, <SERVER_IP> — внешний IP-адрес сервера. Правила iptables в PostUp/PostDown необходимы для того, чтобы наш клиент выступал в роли шлюза в LAN. Указываем в правилах тот сетевой интерфейс, на который назначен локальный адрес (192.168.100.7, в моем случае это wlp2s0). Уточните его путем исполнения команды:
В параметре AllowedIPs задаются адреса, маршрутизация к которым будет осуществляться через VPN-интерфейс. В поле PersistentKeepalive — периодичность проверки доступности соединения в секундах. Запускаем службу и добавляем в автозагрузку:
На сервере добавляем в файл /etc/wireguard/wg0.conf блок:
Где <PEER_LAN_PUBLIC_KEY> — /etc/wireguard/publickey клиента. Перезапустим службу и убедимся, что все настроено корректно:
Проверим теперь с клиента:
Сборки WireGuard доступны для основных платформ: Linux, Windows, Mac, Android, FreeBSD, OpenWRT и др. Рассмотрим настройку VPN-клиента на десктопах под управлением Linux и Windows, а так же на Android-смартфоне.
На клиенте выполняем с правами root:
Конфигурационный файл /etc/wireguard/wg0.conf:
<PEER_1_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/peer_1_privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера.
Обратите внимание на строку «AllowedIPs = 0.0.0.0/0» - в данной конфигурации весь трафик будет маршрутизироваться через VPN-адаптер. Это может понадобиться для сокрытия реального IP при работе в интернет или для защиты трафика при подключении к недоверенным сетям (например публичные Wi-Fi точки доступа). В этом случае указываем «DNS = 8.8.8.8» (8.8.8.8 - DNS-сервер Google), чтобы DNS-запросы выполнялись через защищенное VPN-соединение.
Если VPN-туннель необходим только для доступа к LAN 192.168.100.0/24 - убираем строчку «DNS = 8.8.8.8» и в параметре AllowedIPs меняем «0.0.0.0/0» на «10.0.0.0/24, 192.168.100.0/24».
На сервере в конфигурационный файл /etc/wireguard/wg0.conf добавляем блок:
. [Peer] PublicKey = <PEER_1_PUBLIC_KEY> AllowedIPs = 10.0.0.3/32Где <PEER_1_PUBLIC_KEY> — содержимое файла /etc/wireguard/peer_1_publickey клиента и перезапускаем службу:
Возвращаемся на клиент и проверяем доступность узлов в LAN через VPN-туннель:
Читайте также: