Оглавление:

VPN-шлюз Raspberry Pi: 6 шагов
VPN-шлюз Raspberry Pi: 6 шагов

Видео: VPN-шлюз Raspberry Pi: 6 шагов

Видео: VPN-шлюз Raspberry Pi: 6 шагов
Видео: Свобода ПО 3 Шлюз для туннелирования трафика 2024, Ноябрь
Anonim
VPN-шлюз Raspberry Pi
VPN-шлюз Raspberry Pi

Обновление 2018-01-07:

  • Обновлены отсутствующие элементы и внесены изменения, необходимые для текущей версии Raspian.
  • Также создано специальное руководство для NordVPN.

Есть несколько разных применений VPN. Либо вы хотите защитить свою конфиденциальность и личные данные от посторонних глаз, либо вам необходимо получить их из другой страны. Источники из другой страны могут быть очень полезны для получения доступа к услугам, которые не предоставляются в вашей стране. Сегодня существует ряд VPN-сервисов, и большинство из них предлагает простое в использовании программное обеспечение для вашего компьютера и приложения для вашего планшета или телефона. Но если у вас есть другие устройства, не поддерживаемые программным обеспечением, которые вы хотите использовать через VPN? Затем создайте шлюз, который даст вам доступ в Интернет через VPN.

Если вы посмотрите на свою базовую настройку сети, у вас есть «шлюз по умолчанию», который используется для любого IP-адреса, не находящегося в вашей текущей подсети (очень упрощенно). Таким образом, если вы настроили шлюз, который может маршрутизировать интернет-трафик через установленное VPN-соединение, любое сетевое устройство может использовать VPN-туннель.

Мой основной вариант использования в моей квартире в Сан-Франциско - это VPN-туннель в мою родную Швецию, поэтому я могу транслировать шведские игровые каналы на свои медиаплееры и Smart TV. Это довольно распространенный вариант использования для большинства людей, которым нужен VPN-туннель. Поскольку мои медиаплееры и смарт-телевизоры не поддерживаются программным обеспечением VPN, я построил один из Raspberry Pi.

Вы можете купить его менее чем за 40 долларов на Amazon. Однако я рекомендую вам также купить чехол и приличный адаптер питания. Для этого вам понадобятся:

  • Raspberry Pi 2 или 3
  • Случай на ваш вкус
  • Приличный адаптер питания
  • Сетевой кабель

Шаг 1. Выбор службы VPN

Выбор службы VPN
Выбор службы VPN

При выборе службы VPN важно, чтобы она соответствовала вашим требованиям. Для этого варианта использования мне понадобился VPN-сервис со шведской точкой выхода, это самая важная вещь, поскольку мне нужны шведские сервисы, чтобы убедиться, что я нахожусь в Швеции. На протяжении многих лет я использовал несколько разных поставщиков, и ниже приведены вещи, которые я принимаю во внимание при выборе поставщика VPN для конкретного случая использования:

Бесплатный тест

Мне нужен бесплатный тестовый период или небольшой объем тестовых данных, чтобы разобраться в программном обеспечении или приложении. Также я хочу протестировать производительность и общее впечатление, прежде чем платить за это. Также приятно убедиться, что моя идея сработает, прежде чем я начну платить.

Конфиденциальность

Если реализация предназначена для обеспечения конфиденциальности, то действительно важно, что указано в политике конфиденциальности. Также важно, в какой стране работает компания и какие законы защищают вашу конфиденциальность. Пользователи, которые действительно заинтересованы в конфиденциальности, должны обратить внимание на сервис, который заявляет, что журналы трафика не хранятся и разрешает анонимные платежи, например, через биткойны.

Разрешенный трафик

Могут быть ограничения на то, какой тип трафика вам будет разрешено запускать. Более серьезные поставщики обычно блокируют одноранговый трафик. Это делается не только для того, чтобы избежать юридических проблем, но и для того, чтобы поддерживать производительность для всех пользователей. Однако есть много хороших поставщиков, которые разрешают одноранговую связь и при этом предоставляют высококачественные услуги. Но если это не ваше основное возмещение, я рекомендую выбрать услугу, которая не поддерживает одноранговую связь.

Ограничение данных

Никогда не используйте сервис, который ограничивает объем данных для своих платящих пользователей. Они просто закончатся в самый неподходящий момент, точно так же, как данные на вашем телефоне перед самой забавной частью видеоклипа!

Выезд из страны

В зависимости от варианта использования это имеет разное значение. Для такого случая использования, как мой, когда мне нужно оказаться в определенной стране, конечно, это должно быть в списке. Мне также нужно иметь право выбирать, из какой страны я выезжаю. Существуют службы, в которых вы не можете выбрать страну выезда, держитесь подальше от них. Вы можете оказаться в стране с плохими законами о производительности или конфиденциальности. Даже если вам не нужна конкретная страна, вы все равно должны выбрать службу с несколькими странами для показа, чтобы иметь возможность найти службу с хорошей производительностью.

Тип ПО и поддержка

Это одна из основных причин, по которой я предпочитаю услуги с бесплатным тестированием. Есть так много поставщиков с плохим программным обеспечением, которое глючит, небезопасно или просто не работает. Для реализации Raspberry Pi мне нужен провайдер, поддерживающий OpenVPN.

Мой выбор

Для этой сборки я выбрал Tunnel Bear. Предлагается бесплатный тест объемом до 500 ГБ, чтобы я мог проверить, действительно ли я могу стримить, прежде чем что-нибудь заплачу. Они базируются в Канаде, где, рядом со Швецией, действуют одни из самых строгих законов о конфиденциальности в мире. Нет ограничения на объем данных для платных услуг, и мне также разрешено подключать несколько устройств одновременно. Таким образом, защита для моего телефона, планшета и компьютера во время путешествий по незащищенному Wi-Fi также отсортирована. Выходной узел в Швеции поддерживается, фактически он предоставляется через Bahnhof, который известен своей строгой конфиденциальностью в Швеции. Для платных планов они предлагают поддержку OpenVPN. Они не подходят для бесплатного теста, но этого было достаточно, чтобы запустить его с моего ноутбука, чтобы убедиться, что потоковые сервисы работают.

Шаг 2: Установите Raspberry Pi

Для подобных реализаций я использую операционную систему Raspbian Lite. Поскольку мне вообще не нужен графический интерфейс. Вы можете получить последнюю версию здесь.

Я использую Win32DiskImager для загрузки файла.img на SD-карту для Raspberry Pi.

После загрузки Raspberry Pi я просматриваю список DHCP маршрутизаторов, чтобы получить IP-адрес, а затем подключаюсь через SSH с помощью Putty. Стандартное имя пользователя и пароль - pi / raspberry

После подключения я запускаю инструмент raspi-config, чтобы изменить основные настройки.

sudo raspi-config

Самые важные вещи, о которых нужно позаботиться в этой конфигурации:

  • Расширить файловую систему
  • Измени пароль

Вы также можете изменить имя хоста своего Raspberry Pi, если хотите. У моего DHCP очень долгая аренда, и я также могу зарезервировать конкретный адрес. Если у вас нет такой возможности, вам необходимо настроить Raspberry Pi на использование статического IP-адреса. Поскольку другие устройства будут использовать его в качестве шлюза по умолчанию, важно, чтобы он продолжал использовать тот же IP-адрес. Вот сообщение, которое я написал о настройке статического IP-адреса в Raspbian Jessie.

Затем нам нужно обновить все до последней версии:

sudo apt-get updatesudo apt-get upgrade sudo apt-get dist-upgrade

Шаг 3: Установите OpenVPN

Установить OpenVPN
Установить OpenVPN

Теперь нам нужно установить OpenVPN на Raspberry Pi.

sudo apt-get install openvpn

Затем нам нужно убедиться, что служба запускается правильно.

sudo systemctl включить openvpn

Когда установка будет завершена, нам нужно скопировать файлы конфигурации и сертификаты OpenVPN в коробку. Он будет предоставлен вам вашим провайдером VPN. В моем случае, используя TunnelBear, я нашел там сообщение в блоге о поддержке Linux. На этой странице есть ссылка на zip-файл, содержащий все, что нам нужно.

Этот файл содержит файлы сертификатов и файл конфигурации.opvn для каждой страны, к которой вы можете подключиться. Вам потребуются все файлы сертификатов и файл конфигурации.opvn для выбранной вами страны, в моем случае - Швеции. Разархивируйте необходимые файлы и используйте winscp для загрузки файлов на Raspberry Pi. То же имя пользователя / пароль, что и для SSH, приведет вас в / home / pi, просто перетащите туда файлы.

Затем мы возвращаемся к терминалу SSH и перемещаем файлы в папку OpenVPN. Первая команда - просто убедиться, что мы находимся в папке / home / pi.

cd / home / pi

sudo mv * / и т. д. / openvpn /

Теперь нам нужно внести некоторые изменения в файлы. Сначала нам нужно переименовать файл конфигурации с.ovpn в.conf. Любой файл с расширением.conf в папке / etc / openvpn будет автоматически запускаться при запуске демона OpenVPN. Сначала нам нужно попасть в этот каталог.

cd / etc / openvpn

Затем мы меняем имя файла конфигурации. Вы можете называть его как хотите, если оно заканчивается на.conf. Я предпочитаю использовать имена файлов без пробелов, в данном случае я использую swe.conf.

sudo mv *.ovpn swe.conf

Затем нам понадобится файл аутентификации, содержащий имя пользователя и пароль, используемые для VPN-туннеля. Откройте текстовый редактор и напишите имя пользователя и пароль в отдельные строки. Мы назовем этот файл auth.txt.

sudo nano auth.txt

Контент должен быть похож на этот пример:

имя пользователя

пароль

Затем используйте CTRL + O для записи в файл и CTRL + X для выхода из текстового редактора nano. Нам также необходимо защитить файл auth.txt, содержащий наши учетные данные.

Судо chmod 600 /etc/openvpn/auth.txt

Затем нам нужно отредактировать файл конфигурации, чтобы убедиться, что все пути верны, и добавить ссылку на только что созданный файл auth.txt.

sudo nano swe.conf

Необходимо изменить строки, относящиеся к другим файлам, они должны быть абсолютными путями. В этом примере это то, что мы ищем:

ca CACertificate.crt

сертификат UserCertificate.crt ключ PrivateKey.key

Мы меняем их на абсолютные пути следующим образом:

ca /etc/openvpn/CACertificate.crt

cert /etc/openvpn/UserCertificate.crt ключ /etc/openvpn/PrivateKey.key

Затем в конце файла мы добавляем ссылку на файл auth.txt, например:

auth-user-pass /etc/openvpn/auth.txt

Мы снова используем CTRL + O, чтобы сохранить файл, а затем CTRL + X, чтобы выйти из nano. Теперь мы можем перезапустить демон OpenVPN и убедиться, что туннель работает.

sudo service openvpn перезапуск

Если вы запустите команду ifconfig, вы должны увидеть адаптер tun0 в дополнение к вашим адаптерам eth0 и lo, если туннель запущен. Вы также можете запустить команду this command, чтобы проверить свой общедоступный IP-адрес:

wget https://ipinfo.io/ip -qO -

Если у вас возникли проблемы с подключением туннеля, сначала попробуйте перезагрузить Raspberry Pi, а затем дважды проверьте конфигурацию на наличие ошибок.

Шаг 4: настройка маршрутизации

Теперь нам нужно включить переадресацию IP. Это позволяет сетевому трафику поступать с одного из сетевых интерфейсов и выходить из другого. По сути создание роутера.

sudo / bin / su -c "echo -e '\ n # Включить IP-маршрутизацию / nnet.ipv4.ip_forward = 1'> /etc/sysctl.conf"

Если вы запустите sudo sysctl -p, вы должны увидеть на экране следующее:

net.ipv4.ip_forward = 1

Теперь маршрутизация включена, и трафик может проходить через Raspberry Pi, через туннель и выходить в Интернет.

Шаг 5. Настройте брандмауэр и NAT

Поскольку у нас будет несколько внутренних клиентов, получающих доступ в Интернет через один общедоступный IP-адрес, нам необходимо использовать NAT. Он означает трансляцию сетевых адресов и будет отслеживать, какой клиент запрашивал какой трафик, когда информация возвращается по туннелю. Нам также необходимо настроить безопасность вокруг самого Raspberry Pi и туннеля.

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Включение NAT.

sudo iptables -A ВПЕРЕД -i eth0 -o tun0 -j ПРИНЯТЬ

Разрешение любому трафику от eth0 (внутреннего) проходить через tun0 (туннель).

sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED, ESTABLISHED -j ACCEPT

Разрешение трафику из tun0 (туннель) возвращаться через eth0 (внутренний). Поскольку мы указываем состояние RELATED, ESTABLISHED, оно будет ограничено подключением, инициированным из внутренней сети. Блокировка внешнего трафика, пытающегося инициировать новое соединение.

sudo iptables -A ВВОД -i lo -j ПРИНЯТЬ

Разрешение собственного кольцевого трафика Raspberry Pi.

sudo iptables -A ВВОД -i eth0 -p icmp -j ПРИНЯТЬ

Разрешение компьютерам в локальной сети проверять связь с Raspberry Pi.

sudo iptables -A ВВОД -i eth0 -p tcp --dport 22 -j ПРИНЯТЬ

Разрешение SSH из внутренней сети.

sudo iptables -A INPUT -m state --state УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ

Разрешение возврата всего трафика, инициированного Raspberry Pi. Это тот же государственный принципал, что и раньше.

sudo iptables -P FORWARD DROP

sudo iptables -P ПАДЕНИЕ ВВОДА sudo iptables -L

Если трафик не соответствует ни одному из указанных правил, он будет удален.

sudo apt-get install iptables-persistent

sudo systemctl включить netfilter-persistent

Первая строка устанавливает кусок кода, который делает правила iptable, которые мы только что создали, постоянными между перезагрузками. Второй сохраняет правила после того, как вы их изменили. На этот раз достаточно запустить первый. Если вы измените правила, запустите второе, чтобы сохранить. Iptable правила вступают в силу, как только вы их добавите, если вы ошиблись и потеряете доступ, просто перезагрузитесь, и те, которые еще не были сохранены, вернутся.

Шаг 6: Заключение

Теперь вы можете использовать этот туннель с любого устройства или компьютера в той же сети. Просто измените шлюз по умолчанию на любой IP-адрес, который есть у вашего Raspberry Pi. В моем случае оба моих медиацентра Kodi (одна спальня и одна гостиная) используют это соединение, поэтому я могу транслировать свои шведские каналы воспроизведения. Конечно, вы можете использовать это и для других целей.

Просто имейте в виду, что в зависимости от выбранного поставщика VPN и скорости вашего интернет-соединения производительность может быть низкой.

Если у вас есть вопросы или вы хотите, чтобы я что-то прояснил, дайте мне знать в комментариях! Для получения дополнительных технических сообщений посетите мой блог Hackviking!

Рекомендуемые: