Как прокинуть 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-туннеля необходимо выполнить следущие действия:

  1. На клиентской машине:
  2. На стороне сервера:

И вот вам обратный туннель! Вуаля!


Заключение


Избегая цензуры в Интернете, большинство людей знают о «прокси» и 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-туннель:

Читайте также: