Raspberry pi как роутер с vpn

Время на прочтение
7 мин

Количество просмотров 12K

Если вдруг у вас есть Raspberry Pi, вы уже с ним наигрались и хотите найти ему полезное применение, то в этой статье я расскажу как быстро и просто превратить его в роутер, который может работать c VPN сервером по протоколу WireGuard. В виду того, что вычислительные возможности Raspberry Pi выше, чем у среднестатистического роутера, вы получите большую скорость Интернет при работе через VPN.

Ранее я публиковал статью, в которой рассказывал, как настроить WireGuard VPN клиент на роутере ASUS RT N56U. Вы можете сказать, что можно купить более мощный роутер или вообще роутер, который поддерживает WireGuard из коробки, но мне хотелось обойтись устройствами, которые были у меня в наличии. К тому же, что-то сделанное своими руками часто приносит большее удовольствие, так как ты начинаешь лучше разбираться в теме, да и греет душу мысль о том, что ты сэкономил деньги и можешь потратить их на что-то другое.

Как возникла идея

Купив себе Raspberry Pi 4 пару лет назад , я поигрался с ним, и как всегда, когда угасает интерес к вещи, положил на полку и забыл.

Когда я пытался установить VPN клиент на своей коллекции старых роутеров (TP-Link WR-841N, TP-Link WR-702N), и у меня это не выходило из-за их низких технических характеристик, я уже начал рассматривать Raspberry Pi в качестве альтернативы. У него было все для того, чтобы стать хорошим роутером: компактный размер, Ethernet разъем, встроенный модуль WiFi, производительный SoC и большой объем оперативной памяти, но мне попался ASUS RT N56U, и я решил использовать его.

На свой роутер АSUS я поставил прошивку OpenWRT и WireGuard клиент. Все работало, я даже написал статью о своем уcпешном опыте, но уж очень меня растраивала скорость Интернета через VPN. Да, она была больше, чем при использовании OpenVPN, достаточна для просмотра 4К видео, но WireGuard клиент на компьютере выдавал результат в несколько раз больше, так как производительность компьютера в разы выше производительности роутера.

Raspberry Pi 4 — это полноценный компьютер, отличающийся компактностью, на который можно установить множество операционных систем, такие как различные дистрибутивы Linux и даже Windows, поэтому я решил сделать из него роутер.

Поиск решения

Итак, задача о превращении Raspberry Pi 4 в роутер с поддержкой WireGuard была поставлена, и я принялся за ее решение.

Так как у мне удалось заставить свой роутер ASUS работать с протоколом WireGuard, используя прошивку OpenWRT, я и сейчас решил использовать ее.

OpenWRT – это Linux дистрибутив, основная задача которого – обеспечение работы роутера. Он имеет обширную библиотеку пакетов, позволяющую подстроить роутер под свои нужды.

WireGuard — это программное обеспечение и протокол, который проще и быстрее, чем OpenVPN и IPSec.

Первым делом я изучил видео и статьи в Интернете о том, как люди решали задачу, подобную моей. Но нужной мне полноценной инструкции от А до Я, я не нашел.

Больше всего меня увлекло эмоциональное и захватывающее видео от NetworkChuck, хотя оно подразумевало установку OpenVPN клиента, а не WireGuard, и подразумевалась настройка из командной строки, а не из GUI OpenWRT.

Как это часто бывает, видео немного устарело, и мне приходилось решать что-то уже по-своему, но когда я дошел до шага установки драйвера для WiFi USB адаптера, я не смог его установить, ни для одного из имеющихся у меня адаптеров.

Предлагаемое на форумах решение в виде компиляции исходного кода драйверов для OpenWRT мне с одной стороны показалось интересным и позволяющим получить новые знания, но с другой – нудным и менее универсальным. Хотелось какое-то другое решение.

У меня есть дорожный роутер TP-Link WR-702N, у которого всего лишь один разъем Ethernet и один встроенный модуль WiFi, я подумал, что ничто не мешает мне сделать что-то похожее из моего Raspberry Pi. Не знаю, для кого как, но для меня, когда я вижу, что задачу можно решить – это вдохновляет и мотивирует.

В итоге я нашел решение для своей задачи. Оно решает проблему подключения устройств из локальной сети к VPN, позволяет узнать новое применение вашему Raspberry Pi, разнообразить свой досуг или удивить друзей и знакомых необычным применением малинки.

Что понадобится

  1. Raspberry Pi 4.

  2. Роутер с доступом в Интернет.

  3. Ethernet кабель.

  4. Сетевой адаптер питания на 5В 3A с кабелем USB type C.

  5. MicroSD карта. Достаточно и 4GB.

  6. Адаптер MicroSD-SD и ноутбук с кардридером или USB MicroSD кардридер.

Решение задачи

  1. Заходим на страницу официального сайта OpenWRT, посвященную Raspberry Pi и загружаем свежий образ OpenWRT для Raspberry Pi 4. На момент написания статьи это версия 22.03.2

  2. Записываем образ OpenWRT на Micro SD карту. Я делал это в Windows при помощи программы balenaEtcher.

  3. Соединяем Ethernet кабелем компьютер и Raspberry Pi . Включаем Raspberry Pi. По умолчанию Raspberry Pi 4 c установленным OpenWRT имеет статический IP адрес 192.168.1.1, не имеет пароль для входа, также по умолчанию отключен WiFi интерфейс. Поэтому нужно включить и настроить WiFi, а также желательно поменять IP адрес и установить пароль.

  4. Настраиваем WiFi. Network->Wireless->Edit->Interface Configuration. Вводим настройки на владках General Setup, Advanced Settings.

  5. Устанавливаем пароль. System->Administration.

  6. Меняем IP адрес и убираем Ethernet интерфейс из LAN, чтобы использовать Ethernet интерфейс в качестве WAN. Network->Interfaces->Edit->LAN.

  7. Отключаем Raspberry Pi от сетевой карты компьютера.

  8. Подключаемся к точке доступа, созданной на Raspberry Pi. Открываем в браузере URL c адресом IP, который вы назначили Raspberry Pi.

  9. Настраиваем WAN порт Raspberry. Network->Interfaces->Add New Interface… В качестве WAN порта мы будем использовать Ethernet разъем Raspberry Pi. Так как разъем будет использоваться как WAN порт, а доступ к Raspberry Pi будет осуществляться через WiFi, при неверных настройках, которые нарушат работу интерфейса WiFi вам прийдется заново записать образ OpenWRT на microSD карту.

  10. Выключаем Raspberry Pi. Подключаем WAN порт Raspberry Pi к LAN порту домашнего роутера. Включаем Raspberry Pi.

  11. Убеждаемся, что доступ в интернет есть. Network->Diagnostics.

  12. Настраиваем файервол для WAN интерфейса. Network->Interfaces->WAN->Edit->Firewall Settings.

  13. Заходим на сайт https://www.myip.com/ чтобы узнать свой внешний IP адрес.

  14. Устанавливаем WireGuard. System->Software. Обновляем список пакетов (Update lists…), находим пакет luci-i18n-wireguard-en и устанавливаем его.

  15. Перегружаем Rasperry Pi. System->Reboot.

  16. Устанавливаем WireGuard на VPS сервер. Как это сделать я подробно расписал в своей статье.

  17. Добавляем Wireguard интерфейс. Network->Interfaces->Add New Interface… -> Create Interface

  18. Вводим данные на вкладке General Settings. Здесь необходимо ввести Private Key, Public Key, IP Address для созданного WireGuard интерфейса, который теперь находится на Raspberry Pi. Public Key можно посмотреть в секции Peer в конфиграционном файле /etc/wireguard/wg0.conf на VPS сервере с установленным WireGuard или получить из имеющегося Private Key.

  19. Заходим на вкладку Peers. Нажимаем Add Peer. Вводим оставшиеся данные для WireGuard. Это параметры интерфейса WireGuard, который находится на удаленном сервере.

  20. Удостоверяемся, что WireGuard интерфейс работает. RX и TX должны содержать ненулевые значения.

  21. Настраиваем Firewall. Network->Firewall->Add.

  22. Настраиваем маршрутизацию. Network->Routing->Add. В поле Target вводится IP адрес вашего сервера WireGuard фомате CIDR (<IP адрес>/32).

  23. Настраиваем DNS. Network->Interfaces->WAN->Edit->Advanced Settings.

  24. Проверяем работу VPN. Заходим на сайт https://www.myip.com/ и смотрим на свой внешний IP. Если он отличается от того, что был до включения VPN, то VPN работает.

  25. Если все устраивает, то можно сделать резервную копию micro SD карты при помощи программы Win32 Disk Imager. Это позволит хранить всю настроенную OpenWRT для вашего Raspberry Pi на локальном диске компьютера и быстро развернуть уже настроенный OpenWRT в случае, если собьются настройки.

Надеюсь, что я вас не сильно утомил, и вы теперь наслаждаетесь результатами своего труда.

Сравнение с решением от NetworkChuck

Мое решение отличается от решения NetworkChuck следующим:

1. Я использую только один WiFi интерфейс, который работает в качестве точки доступа, а не два, один из которых (встроенный) работает в качестве WiFi клиента к точке доступа, предоставляющей доступ в Интернет, а второй (USB WiFi адаптер, желательно с антенной) в качестве точки доступа.

2. Я выполняю все настройки, используя исключительно GUI OpenWRT.

3. Для VPN я использую WireGuard, а не OpenVPN.

У решения от NetworkChuck есть ряд преимуществ:

1. Так как не нужен проводной доступ роутеру, раздающему Интернет, решение подходит для публичной точки доступа в кафе или в аэропорту (если конечно публичная точка доступа позволит это сделать).

2. Так как для организации точки доступа используется USB WiFi адаптер с антенной, покрытие созданной WiFi сети будет шире и стабильнее.

У моего решения тоже есть ряд преимуществ:

1. Неподготовленному пользователю проще выполнить все в GUI OpenWRT по приведенным скриншотам, чем вводить все в комадной строке.

2. Cкорость Интернет, у моего решения будет выше и стабильнее, так как я подключаю Raspberry Pi к роутеру с Интернет через проводное соединение и использую WireGuard вместо OpenVPN.

Оставляю вам возможность проверить решение от NetworkChuck, если у вас окажется USB WiFi адаптер, для которого вы сможете установить драйвер в OpenWRT.

Анализ результатов

У меня дома не было лабораторных условий для проведения эксперимента.

Подключившись к VPN серверу, установленному на VPS от PulseHeberg и проверив скорость Интернета, я получил заветные цифры. Если учитывать, что у меня Интернет от провайдера с заявленной скоростью 100 МБ/c, я не уже не вижу смысла улучшать скорость соединения.

Я надеюсь, что вы получите результат не хуже моего. Буду признателен, если вы в комментариях напишете, какие результаты получились у вас. Желательно указать версию Raspberry PI, версию OpenWRT, заявленную скорость интренет вашего провайдера, на каком хостинге располагается WireGuard VPN сервер, и полученные вами результаты в SPEEDTEST.

Выводы

Raspberry Pi подходит для создания компактного роутера с поддержкой WireGuard. Скорость Internet через Wireguard VPN на Rapsberry Pi практически такая же как и при работе без него.

Теоретически можно попробовать сделать роутер и из Raspberry Pi 3, но я не проверял и думаю скорость VPN будет значительно ниже.

К спорным моментам можно отнести:

  1. Cтоимость Raspberry Pi (роутер, на который можно поставить OpenWRT все-таки стоит дешевле).

  2. Доступность Raspberry Pi в контексте происходящих сейчас событий.

  3. Мощность антенны встроенного модуля WiFi (я считаю, что у обычного роутера антенна получше).

Сфера применения Raspberry Pi не ограничивается домашним роутером с VPN, я находил и другие интересные решения, способные удивить вас и ваших знакомых. Я думаю, что это тема моей следующей статьи.

Thanks to the built-in Wi-Fi, the newest version of the Raspberry Pi is more useful than ever for networking projects. We recently showed you how to use your Raspberry Pi as a wireless access point – a router, essentially – and now we have a project for you that builds on that. You can use your Raspberry Pi as a VPN access point, helping you browse the web more privately. Here’s how.

Step 1: Turn your Pi into a wireless access point

You’ll find everything you need in our how-to post.

Step 2: Install OpenVPN

We’re going to use a program called OpenVPN to set up our VPN. Open the command line and type this to get it:

sudo apt-get install openvpn -y

Now go ahead and reboot the Pi:

sudo reboot

Step 3: Download and unzip VyprVPN

We’ll need one more program for this project, and that’s VyprVPN. Let’s get it via the command line:

cd /etc/openvpn

This puts us in the right directory.

sudo wget https://support.goldenfrog.com/hc/article_attachments/214728647/GF_OpenVPN_10142016.zip

This downloads the file.

sudo unzip GF_OpenVPN_10142016.zip

And this, of course, unzips it!

Step 4: List the VPNs

Hop into the new directory here, then type ls to list the files. We’re using the 256-bit version, so our path reflects that.

cd GF_OpenVPN_10142016/OpenVPN256
ls

You’ll see a whole bunch of files that end in .ovpn. These are the different VPNs you can use, listed by location. Remember these for when you want to connect to specific VPNs (consider writing them down, or just run these commands again when you forget).

Step 5: Create an authorization file

You need to be authorized to use VyprVPN. Let’s create an authorization file:

sudo nano /etc/openvpn/auth.txt

This should create a new file. In the file, type two lines. The first will be your username, the second your password. You’re not just making these up – they have to be your VyprVPN login (if you don’t have a VyprVPN account, create one). Now get out of the file (Ctrl+X), save it (Y), and confirm (Enter).

Step 6: Run a test

sudo openvpn --config "/etc/openvpn/GF_OpenVPN_10142016/OpenVPN256/FILENAME.ovpn" --auth-user-pass /etc/openvpn/auth.txt

Remember the VPN you wanted to use? Plug that in where we have FILENAME.ovpn. If you did it right, you should get a bunch of text that includes the happy words “Initialization Sequence Completed.”

Step 7: Fun with iptables

We’re not done yet. We changed a bunch of stuff in iptables when we used our Pi as a wireless access point, but we need to change that now.

sudo iptables -F
sudo iptables -t nat -F
sudo iptables -X

This clears out the old stuff.

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

And this is what we want now. This will route the wlan0 connection through our tunnel instead of over the Ethernet connection.

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

This saves our work.

Step 8: Make things automatic

Let’s set it up so that our VPN starts up when our Pi starts up. We’ll need to edit the rc.local file.

sudo nano /etc/rc.local

In the file, look for the line that says “exit 0” and add these lines just above it:

sleep 5
sudo openvpn --config "/etc/openvpn/GF_OpenVPN_10142016/OpenVPN256/FILENAME.ovpn" --auth-user-pass /etc/openvpn/auth.txt

As with the last time, FILENAME.ovpn should be your choice from step 4. Head out of here with the same keystrokes as our last file editing step: Ctrl+X, Y, Enter.

That’s it! Everything should work properly now. You can check to make sure everything starts with each boot by rebooting the Pi with sudo reboot.

This is a quick-and-dirty guide to setting up a Raspberry Pi as a «router on a stick» to PrivateInternetAccess VPN.

Requirements

Install Raspbian Jessie (2016-05-27-raspbian-jessie.img) to your Pi’s sdcard.

Use the Raspberry Pi Configuration tool or sudo raspi-config to:

  • Expand the root filesystem and reboot
  • Boot to commandline, not to GUI
  • Configure the right keyboard map and timezone
  • Configure the Memory Split to give 16Mb (the minimum) to the GPU
  • Consider overclocking to the Medium (900MHz) setting on Pi 1, or High (1000MHz) setting on Pi 2

IP Addressing

My home network is setup as follows:

  • Internet Router: 192.168.1.1
  • Subnet Mask: 255.255.255.0
  • Router gives out DHCP range: 192.168.100-200

If your network range is different, that’s fine, use your network range instead of mine.

I’m going to give my Raspberry Pi a static IP address of 192.168.1.2 by configuring /etc/network/interfaces like so:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

You can use WiFi if you like, there are plenty tutorials around the internet for setting that up, but this should do:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
    wpa-ssid "Your SSID"
    wpa-psk  "Your Password"
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

You only need one connection into your local network, don’t connect both Ethernet and WiFi. I recommend Ethernet if possible.

NTP

Accurate time is important for the VPN encryption to work. If the VPN client’s clock is too far off, the VPN server will reject the client.

You shouldn’t have to do anything to set this up, the ntp service is installed and enabled by default.

Double-check your Pi is getting the correct time from internet time servers with ntpq -p, you should see at least one peer with a + or a * or an o, for example:

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-0.time.xxxx.com 104.21.137.30    2 u   47   64    3  240.416    0.366   0.239
+node01.jp.xxxxx 226.252.532.9    2 u   39   64    7  241.030   -3.071   0.852
*t.time.xxxx.net 104.1.306.769    2 u   38   64    7  127.126   -2.728   0.514
+node02.jp.xxxxx 250.9.592.830    2 u    8   64   17  241.212   -4.784   1.398

Setup VPN Client

Install the OpenVPN client:

sudo apt-get install openvpn

Download and uncompress the PIA OpenVPN profiles:

wget https://www.privateinternetaccess.com/openvpn/openvpn.zip
sudo apt-get install unzip
unzip openvpn.zip -d openvpn

Copy the PIA OpenVPN certificates and profile to the OpenVPN client:

sudo cp openvpn/ca.rsa.2048.crt openvpn/crl.rsa.2048.pem /etc/openvpn/
sudo cp openvpn/Japan.ovpn /etc/openvpn/Japan.conf

You can use a diffrent VPN endpoint if you like. Note the extension change from ovpn to conf.

Create /etc/openvpn/login containing only your username and password, one per line, for example:

user12345678
MyGreatPassword

Change the permissions on this file so only the root user can read it:

sudo chmod 600 /etc/openvpn/login

Setup OpenVPN to use your stored username and password by editing the the config file for the VPN endpoint:

sudo nano /etc/openvpn/Japan.conf

Change the following lines so they go from this:

ca ca.rsa.2048.crt
auth-user-pass
crl-verify crl.rsa.2048.pem

To this:

ca /etc/openvpn/ca.rsa.2048.crt
auth-user-pass /etc/openvpn/login
crl-verify /etc/openvpn/crl.rsa.2048.pem

Test VPN

At this point you should be able to test the VPN actually works:

sudo openvpn --config /etc/openvpn/Japan.conf

If all is well, you’ll see something like:

$ sudo openvpn --config /etc/openvpn/Japan.conf 
Sat Oct 24 12:10:54 2015 OpenVPN 2.3.4 arm-unknown-linux-gnueabihf [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec  5 2014
Sat Oct 24 12:10:54 2015 library versions: OpenSSL 1.0.1k 8 Jan 2015, LZO 2.08
Sat Oct 24 12:10:54 2015 UDPv4 link local: [undef]
Sat Oct 24 12:10:54 2015 UDPv4 link remote: [AF_INET]123.123.123.123:1194
Sat Oct 24 12:10:54 2015 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sat Oct 24 12:10:56 2015 [Private Internet Access] Peer Connection Initiated with [AF_INET]123.123.123.123:1194
Sat Oct 24 12:10:58 2015 TUN/TAP device tun0 opened
Sat Oct 24 12:10:58 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Sat Oct 24 12:10:58 2015 /sbin/ip link set dev tun0 up mtu 1500
Sat Oct 24 12:10:58 2015 /sbin/ip addr add dev tun0 local 10.10.10.6 peer 10.10.10.5
Sat Oct 24 12:10:59 2015 Initialization Sequence Completed

Exit this with Ctrl+c

Enable VPN at boot

sudo systemctl enable openvpn@Japan

Setup Routing and NAT

Enable IP Forwarding:

echo -e '\n#Enable IP Routing\nnet.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Setup NAT fron the local LAN down the VPN tunnel:

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

Make the NAT rules persistent across reboot:

sudo apt-get install iptables-persistent

The installer will ask if you want to save current rules, select Yes

If you don’t select yes, that’s fine, you can save the rules later with sudo netfilter-persistent save

Make the rules apply at startup:

sudo systemctl enable netfilter-persistent

VPN Kill Switch

This will block outbound traffic from the Pi so that only the VPN and related services are allowed.

Once this is done, the only way the Pi can get to the internet is over the VPN.

This means if the VPN goes down, your traffic will just stop working, rather than end up routing over your regular internet connection where it could become visible.

sudo iptables -A OUTPUT -o tun0 -m comment --comment "vpn" -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p icmp -m comment --comment "icmp" -j ACCEPT
sudo iptables -A OUTPUT -d 192.168.1.0/24 -o eth0 -m comment --comment "lan" -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p udp -m udp --dport 1198 -m comment --comment "openvpn" -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m comment --comment "ssh" -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p udp -m udp --dport 123 -m comment --comment "ntp" -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p udp -m udp --dport 53 -m comment --comment "dns" -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -m comment --comment "dns" -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -j DROP

And save so they apply at reboot:

sudo netfilter-persistent save

If you find traffic on your other systems stops, then look on the Pi to see if the VPN is up or not.

You can check the status and logs of the VPN client with:

sudo systemctl status openvpn@Japan
sudo journalctl -u openvpn@Japan

Configure Other Systems on the LAN

Now we’re ready to tell other systems to send their traffic through the Raspberry Pi.

Configure other systems’ network so they are like:

  • Default Gateway: Pi’s static IP address (eg: 192.168.1.2)
  • DNS: Something public like Google DNS (8.8.8.8 and 8.8.4.4)

Don’t use your existing internet router (eg: 192.168.1.1) as DNS, or your DNS queries will be visible to your ISP and hence may be visible to organizations who wish to see your internet traffic.

Optional: DNS on the Pi

To ensure all your DNS goes through the VPN, you could install dnsmasq on the Pi to accept DNS requests from the local LAN and forward requests to external DNS servers.

sudo apt-get install dnsmasq

You may now configure the other systems on the LAN to use the Pi (192.168.1.2) as their DNS server as well as their gateway.

Introduction

How to Setup Your Raspberry Pi As A VPN Router With A Kill Switch

How to Setup Your Raspberry Pi As A VPN Router With A Kill Switch

In this article I will walk you through on How to Setup Your Raspberry PI As A VPN Router With A Kill Switch.

Did you know that a raspberry pi can be a cheap and great secure alternative to route all your traffic via a VPN?

I will break this review in the following sections:

  • What you need to get started in terms of hardware and software
  • How to do this without paying for anything other than an inexpensive $2/month VPS
  • Provide you with all the code needed and instructions to get going super fast

This is a complete and easy to follow guide with step by step instructions providing all source code needed.

I have been using this setup successfully for the last 2 years without failure on a day to day basis. All of the things that I’m going to talk about here are not version specific and work with the base Raspberry PI project distributions (you can use the latest ones at the time without issues).

I’m going to keep all the steps simple and straight to the point to avoid you have to spend endless hours debugging or trying to figure out why things aren’t working. Hey if I missed something you are always welcome to ping me on twitter or via my contact page.

I have a lot of experience in security and network administration so I have kept everything to a minimum without any extras or bloatware. This guide is specifically designed for those that want to get straight into action with a lightweight setup that gets the job done.

I have successfully launched this setup in various versions of Raspberry PI starting from the early hardware version 2 to the latest 4. The requirements are minimal and it will work everywhere.

    I have been working in the Software industry for over 23 years now and I have been a software architect, manager, developer and engineer. I am a machine learning and crypto enthusiast with emphasis in security. I have experience in various industries such as entertainment, broadcasting, healthcare, security, education, retail and finance.

    All source code associated with this article can be found in my GitHub here.

    Prerequisites

    Here’s a list of things you will need before you start working on this project.

    Please note if you already have installed Raspberry Pi in your device you can skip steps 1-2 of the pre-requisites.

    SD Card

    Before proceeding into setting things up you will need an SD card to flash the image to your SD if you have already done that it’s not a requirement.

    Selecting The Raspberry Pi Distribution

    Download Raspberry Pi OS Lite

    Download Raspberry Pi OS Lite

    You can find a list of all the Raspberry Pi distributions here. Feel free to select whichever you are more familiar with and suits you the best.

    I personally like to use the Raspberry Pi OS Lite because it’s lightweight and does not come with any extras. Since our setup will be headless you don’t really need to do anything fancy here unless you want to dual purpose use it as a desktop environment as well which I do not recommend as it will reduce the security of your setup.

    One thing to note is that the Lite version comes with 64bit support which I highly recommend if you are using newer hardware such as Version 3A+. You can find the full list in the above URL which has the distributions.

    Once you select which version you want go ahead and download it following the instructions described here on how to set it up. The Raspberry Pi team provides good utilities for all operating systems to flash the firmware into your SD card and get going.

    Clone The Git Repo To Get The Raspberry Pi VPN Kill Switch Files

    You will need to download the kill switch vpn script for our raspberry pi system in order to proceed further down. To get this simply clone the repo from GitHub issuing the following command:

    # HTTPs Method
    > git clone https://github.com/unbiased-coder/raspi-vpn-router-kill-switch.git
    
    # SSH Method
    > git clone [email protected]:unbiased-coder/raspi-vpn-router-kill-switch.git

    Having An OpenVPN Compatible Server/Service

    OpenVPN Raspberry Pi

    OpenVPN Raspberry Pi

    Since you will be connecting somewhere to get going you will need to have an OpenVPN compatible server. While this setup can work with other propriatorey VPN services I do not recommend it for security and privacy reasons. Stick to the open source alternative of OpenVPN if you want to be safe.

    Please note I’m not trying to discount the paid services out there this is just a personal preference and opinion. Also keep in mind that a lot of the known providers such as Private Internet Access and NordVPN provide OpenVPN configurations that you can use.

    Since I like to manage my own OpenVPN server and do not like to have shared data hosting among other systems I maintain my own server which I have setup on a cheap VPS service. If you would like to learn how I’ve done this please send me a ping via my contact info and I’ll be happy to tell you how to do it or I may even write an article on it.

    Now that we have the pre-requisites out of the way lets move on how to setup your system and the dependencies you may need to get started and enjoying your brand new VPN service with a kill switch.

    Package Installation

    The first thing we need to do in order to get going is that we need to install some basic packages in our system that our scripts will leverage to get your VPN Router with a kill switch going.

    > apt update
    > apt upgrade
    > apt install openvpn openssh-client openssh-client iptables
    > reboot
    

    So we basically just install in the above command OpenVPN, SSH and IPtables. Since in some versions IPtables may not be standard we need to make sure to reboot the system in case it updates our kernel or adds a kernel module.

    Setup SSH Connection

    Raspberry Pi OpenSSH Setup

    Raspberry Pi OpenSSH Setup

    The next step we need to do is setup our SSH connection to our server so we can easily access and change things. This works using the OpenSSH Client command line so it will be supported in all three operating systems Windows, Mac and Linux. The instructions will be identical.

    Please note if you already know how to setup SSH or you already have done this you can skip this section entirely.

    Create SSH Key To Connect To Raspberry Pi

    If you don’t have an ssh key generated already please go ahead and create one using the following command:

    Follow the instructions and save it in whatever path you want to keep it in. Just make sure you store a safe copy of this. It should create the file you specified and along that a .pub file which is basically the public key which we will use to add into our Raspberry Pi VPN server to connect to it.

    Add SSH Public Key to Raspberry Pi

    In order to do this simply connect using password authentication now to the Raspberry Pi. The default credentials associated with your image can be found in the instructions page you had used earlier but you can also try the following:

    • Username: pi
    • Password: raspberry

    If these don’t work then try looking them up as mentioned above.

    Once you connect then simply add the public key file contents to your authorized keys file like this:

    > echo "ssh-ed25519 KEYHERE alex@macbook" >> ~/.ssh/authorized_keys2
    

    Now that this is added you may need to adjust the permissions of the file to be only readable and writeable by the user to do this you can run the following command:

    Create SSH Config In Your Host To Connect To Raspberry Pi

    Now that we have setup on the Raspberry Pi with SSH access we can simply make a quick config ssh section to connect to it fast.

    In order to do this in your host operating system edit the file ~/.ssh/config. If this does not exist simply create it.

    The section you need to add should look like this:

    Host pirouter
         User pi
         HostName 192.168.1.22
         IdentityFile /Users/user/.ssh/YOURKEY
    

    Connecting to Raspberry Pi Router Using SSH

    From now on you can simply connect to your router by typing the following command:

    This will log you into your Raspberry Pi Router using SSH with your secure private key file.

    Upload And Setup The Script

    Now that we have SSH setup we can proceed into uploading our file and setting things up.

    Upload the Connection Script

    First you need to get the connection script which is available in the git repo here.

    If you haven’t downloaded the repo you will do that now as we will need this file further down as it was described earlier in the pre-requisites section.

    The file you want to copy over is the raspi-vpn-kill-switch.sh to your Raspberry Pi router. In order to do this simply run the following command:

    > scp raspi-vpn-kill-switch.sh pirouter:

    This will copy the file in the Raspberry Pi home directory of the pi user.

    Adjust Code

    Once you download you should be presented with the following code that allows you to do this:

    #!/bin/bash
    
    clear
    
    if [ "$#" -ne 1 ]; then
        echo "$0 <interface name>"
        exit -1
    fi
    
    IFACE=$1
    echo "Using interface: $1"
    
    echo "Killing previous instances of openvpn"
    killall -9 openvpn
    
    echo "Flushing iptables rules" 
    iptables -F 
    iptables -t nat -F
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    
    echo "Current IP: `curl -s ifconfig.co`"
    
    # temporarily block forwarding so nothing leaks if we restart this script
    sysctl -w net.ipv4.ip_forward=0
    
    # allow ssh
    echo "Allowing incoming/outgoing SSH established on all interfaces" 
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
    iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
    
    echo "Allowing DHCP traffic"
    iptables -A INPUT -j ACCEPT -p udp --dport 67:68 --sport 67:68
    iptables -A OUTPUT -j ACCEPT -p udp --dport 67:68 --sport 67:68
    
    echo "Allowing traffic on lo"
    iptables -A OUTPUT -j ACCEPT -o lo
    iptables -A INPUT -j ACCEPT -i lo
    
    echo "Allowing traffic on tun"
    iptables -A OUTPUT -j ACCEPT -o tun+
    iptables -A INPUT -j ACCEPT -i tun+
    
    # allow traffic from established connections
    echo "Allowing already established traffic"
    iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    
    # allow openvpn uid, we need this prior we run openvpn because openvpn drops permissions at the end
    # make sure the port number below reflects the one from your openvpn server
    echo "Allowing openvpn traffic"
    iptables -A OUTPUT -p udp -m udp --dport 1194 -j ACCEPT
    
    # allow dns because it's a third party system app that tries to do it (and not openvpn)
    echo "Allowing DNS for resolving openvpn server"
    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
    
    # allow traffic on tun0 and lo
    echo "Allowing lo and tun interfaces" 
    iptables -A OUTPUT -j ACCEPT -o lo 
    iptables -A OUTPUT -j ACCEPT -o tun+
    
    # allow forward traffic only from tun0
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    # this is important we need to send all traffic that is being forwarded to tun0
    iptables -A FORWARD -i $IFACE -o tun0 -j ACCEPT 
    
    # masq traffic on tun0
    echo "Masquerading traffic on tun0"
    iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
    
    # this is the path of your VPN configuration
    openvpn PATH_TO_YOUR_VPN_FILE.ovpn &
    
    echo "Waiting for VPN to initialize"
    sleep 10 
    
    echo "Current IP: `curl -s ifconfig.co`"
    
    echo "Setting policy in output and input chain to drop"
    iptables -P OUTPUT DROP
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    
    # block dns because it's a third party system app that tries to do it (and not openvpn)
    echo "Blocking DNS for resolving openvpn server"
    iptables -D OUTPUT -p udp --dport 53 -j ACCEPT
    
    echo "Turning on IP forwarding"
    sysctl -w net.ipv4.ip_forward=1
    

    There’s a couple of small changes we need to make before we invoke the code:

    • Adjust line 74 where it’s showing the path for your file this looks like this

      openvpn PATH_TO_YOUR_VPN_FILE.ovpn &

      Simply put your path in there from your VPN service as discussed earlier.

    • Adjust line 52 with the port of your provide this looks like this

      iptables -A OUTPUT -p udp -m udp –dport 1194 -j ACCEPT

      Simply replace 1194 with whatever your service is using it. The default may well be 1194 so you may not need to change it.

    Start VPN Kill Switch Automatically In Raspberry Pi System Startup

    Now that we have successfully edited our file we simply need to make an entry in our system setup to automatically start it. For this we will leverage the rc.local file which is present in most distributions. If it’s not you may need to add a service to it manually, more instructions can be found here.

    To do this your rc.local file (/etc/rc.local) will look like this:

    sudo PATH_TO/raspi-vpn-kill-switch.sh eth0 &
    exit 0
    

    The important part here is to preserve the interface name to what your system has. Since I use it on a wired interface in my case it’s eth0. If you are using a wireless interface it may be wlan0. The script is smart enough to adjust based on what you are using so feel free to adjust this.

    Test It Out

    To test this out we can simply reboot our system and try to use as a router in our host operating system the IP address of our Raspberry Pi system. If everything is fine you can go to a website that shows you the new IP and that should be the one from your router.

    The easiest way to do this is to go to google.com and just type what is my ip address and this should show you the address of your VPN service provider instead of yours.

    VPN IP Hide Check Raspberry PI

    VPN IP Hide Check Raspberry PI

    In the screenshot above Google is showing the IP of my VPN service provider rather than mine. This means the Raspberry Pi successfully routed the traffic through it for me.

    VPN Kill Switch

    VPN Kill Switch Raspberry Pi

    The script automatically takes care of you having a kill switch if the connection to your VPN drops. This is accounted by the following IPTables policy rules which basically prohibit any outgoing traffic that’s not from the VPN to the destination.

    echo "Setting policy in output and input chain to drop"
    iptables -P OUTPUT DROP
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    

    The reason the VPN traffic still goes through is because earlier in the script we allow any traffic going to the port of the VPN service to be allowed along with DNS requests in order to resolve any hostnames. This can be seen in the following commands:

    echo "Allowing DNS for resolving openvpn server"
    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
    
    echo "Allowing openvpn traffic"
    iptables -A OUTPUT -p udp -m udp --dport 1194 -j ACCEPT
    

    Automatically Reboot Raspberry Pi If VPN Connection Dies

    As mentioned earlier this is all automatically handled for you by the script itself and there’s nothing extra you need to do. Just know that if you connection to the VPN service drops you will need internet or to restart your computer.

    I have also created another helper script that checks for you the internet connection automatically and if this does not work it reboots your Raspberry Pi Kill Switch VPN router.

    You can find the code below that basically checks the usual domains such as google and bing to see if those are accessible if they are not then it will simply initiate a reboot command to bring back the Raspberry Pi online.

    #!/bin/bash
    
    ping -c 3 www.google.com
    
    if [ $? -ge 1 ]; then
    	echo "Did not get a response from google, trying to ping yahoo"
    	
    	ping -c 3 www.yahoo.com
    	
    	if [ $? -ge 1 ]; then
    		echo "Did not get a response from yahoo, trying to ping bing"
    
    		ping -c www.bing.com
    
    		if [ $? -ge 1 ]; then
    			echo "Did not get a response from bing rebooting the machine"
    			sudo reboot
    		fi
    	fi
    fi
    
    exit 0
    

    So this script can get initiated automatically via a crontab entry in order to reboot your router if the VPN service goes down. To do this you can add the following line in your crontab file in the Raspberry Pi Kill Switch VPN router.

    */15 * * * * /home/pi/raspi-vpn-router-kill-switch/checkvpn.sh
    

    This will run every 15 minutes and see if the internet connection is up and running. If not it will go ahead and reboot your VPN router automatically for you.

    Can I Use Raspberry Pi as A VPN Router

    Yes as described above you can use the Raspberry Pi as a VPN Router and with the code I provided you have the extra functionality of having an available kill switch if your router goes offline.

    How Do I Turn My Raspberry Pi Into a VPN

    As described earlier you can easily turn your Raspberry Pi into a VPN using the source code provided in the GitHub repo here. And following the step by step guide mentioned earlier.

    Is Raspberry Pi VPN Secure

    The setup provided earlier is super secure as it only relies on two pieces of open source software:

    • OpenVPN
    • OpenSSH

    Everything else is not needed in this system setup. You don’t need any special clients or software to get going and you can use your own hardened Linux distribution to host this setup.

    Is Raspberry Pi VPN Kill Switch

    By default Raspberry Pi does not offer a VPN Kill Switch however with the code described earlier you can easily do this and be ready to go. The kill switch functionality is implementing using a Linux native tool IPtables and nothing else. This gives you the flexibility of implementing it in any distribution without having to rely on external tools.

    The full source code provided in the Github repo takes care of the entire implementation for you in an automated way.

    How Secure Is OpenVPN on A Raspberry Pi

    The setup described above is super secure as it locks down your machine’s ports from everything and provides a safe kill switch if your VPN connection does so no data is leaked outside the VPN connection. Furthermore it does not have any dependencies on third party software which may include spyware and other things that are unwanted.

    Conclusion

    If you found the How to Setup Your Raspberry PI As A VPN Router With A Kill Switch useful and you think it may have helped you please drop me a cheer below I would appreciate it.

    If you have any questions, comments please post them below I check periodically and try to answer them in the priority they come in. Also if you have any corrections please do let me know and I’ll update the article with new updates or mistakes I did.

    Which is your favorite Raspi distribution that you use?

    My personal favorite the Raspberry Pi lightweight distribution because it’s pretty bare bones and can work faster without the load of extra services running in the background. Also I don’t like to have to maintain and update extra packages if it isn’t necessary.

    If you would like to learn more about other Linux and system setup stuff you can check the articles below:

    • Easy Linux Commands For Beginners
    • Which Is The Fastest Linux Distribution in 2022
    • Jenkins Vs. Gitlab Code deployments: Which is Better

    Хотите защитить свое интернет-соединение во время путешествий? Вот как создать портативный VPN-маршрутизатор с помощью Raspberry Pi и OpenWRT

    Написали бы вы свой пароль на листке бумаги и приклеили его себе на лоб? Скорее всего, нет. Однако подключаться к публичной сети Wi-Fi почти так же глупо

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

    У вас нет такого устройства под рукой? Не волнуйтесь, вы можете собрать его с помощью Raspberry Pi. Это идеальный выбор для туристического маршрутизатора VPN DIY, поэтому давайте рассмотрим, как его собрать

    Что вам понадобится

    Чтобы приступить к созданию маршрутизатора Raspberry Pi VPN, вам понадобятся:

    • Raspberry Pi (предпочтительно Pi 3 или Raspberry Pi Zero W) с корпусом.
    • Один USB-адаптер Wi-Fi (два, если вы используете более старый Raspberry Pi).
    • Карта microSD с объемом памяти не менее 8 ГБ.
    • Устройство для чтения карт SD.
    • Высококачественный блок питания.
    • ПК с установленным SSH-клиентом.
    • Подписка VPN с поддержкой OpenVPN.

    Можно использовать модели Pi без встроенного Wi-Fi, но вам понадобятся два USB Wi-Fi адаптера или один, способный работать как в режиме управляемой точки доступа, так и в режиме клиента

    Вместо стандартного дистрибутива Linux вам нужно будет установить OpenWRT на SD-карту, чтобы превратить устройство в полноценный маршрутизатор. При желании можно использовать другой дистрибутив Linux, но OpenWRT предоставляет удобный веб-интерфейс для настройки, когда вы находитесь вне дома

    Если вы используете Windows, перед началом работы вам также потребуется установить PuTTY или другой SSH-клиент для Windows

    Шаг 1: Установите OpenWRT

    Сначала загрузите прошивку OpenWRT для вашей модели Raspberry Pi. Вы можете найти наиболее актуальные образы в OpenWRT wiki

    Распакуйте скачанный файл с помощью 7zip или другого подходящего менеджера файловых архивов, затем прошейте IMG-файл на вашу карту с помощью Etcher

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

    После этого поместите карту microSD обратно в Raspberry Pi и дайте ему загрузиться

    Шаг 2: Начальная конфигурация

    По умолчанию OpenWRT устанавливает статический IP-адрес 192. 168. 1. 1 , который является IP-адресом шлюза по умолчанию для многих маршрутизаторов. Вам нужно будет изменить это значение, чтобы избежать конфликтов. Подключите Pi к компьютеру с помощью кабеля Ethernet; возможно, сначала потребуется установить статический IP-адрес на компьютере

    Вместо того чтобы выполнять настройку с помощью LuCI, веб-интерфейса OpenWRT, вы будете делать это вручную, чтобы убедиться, что конфигурация установлена правильно. Загрузите PuTTY или ваш SSH-клиент и подключитесь сначала к 192. 168. 1. 1 , используя имя пользователя root.

    При первом подключении вы получите предупреждение о безопасности; просто нажмите Да и продолжайте. На этом этапе неплохо бы установить пароль; для этого введите

    passwd

    в окне терминала

    Настройка параметров сети и брандмауэра

    Вам нужно отредактировать два файла—

    /etc/config/network

    и

    /etc/config/firewall

    — прежде чем вы сможете продолжить. Начните с ввода следующей команды для редактирования файла:

    vim /etc/config/network

    Затем нажмите I, чтобы отредактировать текст и включить следующее:

    config interface'loopback'
    option ifname'lo'
    option proto'static'
    option ipaddr'127. 0. 0. 1'
    option netmask'255. 0. 0. 0'
    config interface'lan'
    optiontype'bridge'
    option ifname'eth0'
    option force_link'1'
    option proto'static'
    option ipaddr'192. 168. 38. 1'
    option netmask'255. 255. 255. 0'
    option ip6assign'60'
    config interface'wwan'
    option proto'dhcp'
    option peerdns'0'
    option dns'8. 8. 8. 8 8. 8. 4. 4'## Google DNS servers
    config interface 'vpnclient'
    option ifname 'tun0'
    option proto 'none'
    

    Как только вы закончите, нажмите клавишу Esc и введите

    :wq

    чтобы сохранить и выйти. Затем переключите внимание на файл конфигурации брандмауэра:

    vim /etc/config/firewall

    Нажмите I для редактирования, затем найдите (или добавьте) зону для раздела WAN, которая должна выглядеть следующим образом:

    config zone
    option name wan
    option network'wan wan6 wwan'
    option input ACCEPT
    option output ACCEPT
    option forward REJECT
    option masq 1
    option mtu_fix 1

    Введите reboot и подождите, пока Raspberry Pi перезагрузится с новым IP-адресом:  192. 168. 38. 1

    Шаг 3: Обновление и установка пакетов

    Далее необходимо обновить OpenWRT. Для этого необходимо использовать внутренний Wi-Fi Pi и изначально настроить его на подключение к существующей сети Wi-Fi. Возможно, вам потребуется изменить статический IP-адрес на 192. 168. 38. 2 или аналогичный адрес в этом диапазоне, чтобы обеспечить подключение

    После подключения введите IP-адрес вашей Raspberry Pi в браузер, чтобы получить доступ к панели администратора OpenWRT. Используйте свое имя пользователя и пароль для получения доступа, затем перейдите в раздел Network > Wireless. В настоящее время вы должны видеть только одно устройство Wi-Fi, поэтому нажмите Scan , чтобы найти свою сеть Wi-Fi, а затем Join Network , когда найдете ее

    Вам нужно будет ввести пароль Wi-Fi в разделе WPA Passphrase, прежде чем нажать Submit.

    Теперь вы должны увидеть настройки соединения Wi-Fi. Перейдите в раздел Дополнительные настройки и установите Код страны в соответствии с вашим местоположением; в противном случае Wi-Fi может не работать

    Переподключитесь к Pi, используя новый IP-адрес по SSH (приняв предупреждение о ключе безопасности RSA). Сначала вам нужно будет обновить устройство, набрав:

    opkg update

    Следите за этим, нажимая Y при появлении запроса

    Установка драйверов USB Wi-Fi

    После установки всех обновлений установите все необходимые драйверы для USB-адаптера Wi-Fi. Он необходим для подключения к точкам доступа Wi-Fi, когда вы находитесь в пути. Вы также установите инструменты, необходимые для VPN-соединений с использованием OpenVPN, а также nano , более простой в использовании редактор файлов терминала

    Здесь ваш метод может отличаться; у меня был Wi-Fi адаптер с чипсетом RT2870, поэтому следующие команды должны работать и у вас:

    opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb kmod-usb-core kmod-usb-uhci kmod-usb-ohci kmod-usb2 usbutils openvpn-openssl luci-app-openvpn nano
    ifconfig wlan1 up
    reboot

    Если у вас нет Wi-Fi адаптера с чипсетом RT2870 или вы не уверены, подключите свой Wi-Fi адаптер и введите в терминале SSH следующее:

    opkg install kmod-usb-core kmod-usb-uhci kmod-usb-ohci kmod-usb2 usbutils
    lsusb

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

    Шаг 4: Настройте точку доступа Wi-Fi

    Если USB-адаптер Wi-Fi подключен, теперь вы можете настроить оба Wi-Fi соединения. Вернитесь на приборную панель LuCI, в разделе Wireless, и удалите оба сетевых подключения. Устройство radio0 – это ваш встроенный Wi-Fi, а radio1 – это ваш USB Wi-Fi адаптер

    Настройте встроенный Wi-Fi, нажав Добавить :

    • Режим установлен на Точка доступа.
    • ESSID устанавливается на имя сети по вашему выбору; по умолчанию – OpenWRT.
    • Network устанавливается на lan.
    • В разделе Безопасность беспроводной сети для параметра Шифрование установлено значение WPA2-PSK.
    • Ключ установлен на подходящий пароль.

    После завершения нажмите Сохранить , затем вернитесь в меню Беспроводная связь. Следуйте инструкциям, приведенным ранее для первоначального подключения, чтобы настроить устройство radio1 (ваш USB-адаптер Wi-Fi) на существующую сеть. Здесь же вам нужно будет сканировать и менять сети, когда вы будете находиться в новом месте

    Теперь у вас должны быть запущены два Wi-Fi соединения: одно – как точка доступа для ваших Wi-Fi устройств, а другое – как интернет-соединение для вашего устройства с существующей Wi-Fi сетью. Попробуйте подключиться к Pi на этом этапе с помощью смартфона или ноутбука, чтобы убедиться, что оно работает

    Если все работает, отключите Pi от Ethernet-соединения с ПК

    Вам понадобится файл конфигурации OpenVPN (OVPN) для подключения Pi к выбранному провайдеру VPN и серверу. Если у вас есть такой файл, загрузите его на Pi с помощью SCP-клиента, например WinSCP, к которому вы можете подключиться под своим именем пользователя и паролем администратора

    Переименуйте файл в vpnclient.ovpn и загрузите его в папку

    /etc/openvpn

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

    cat

    инструмент для вставки вашего файла vpnclient.ovpn , так как он уже есть

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

    Найдите это, перейдя в раздел OpenVPN LuCI, перечисленный в разделе Services в верхней части приборной панели. Если он подключен, vpnclient будет указан как yes в колонке Started

    Шаг 6: Зарегистрируйте устройство на общедоступном Wi-Fi

    На этом этапе ваш Pi почти готов, но если вы когда-либо подключались к публичной сети Wi-Fi, вы знаете, что обычно требуется аутентификация с помощью captive portal, либо для оплаты, либо для регистрации устройства. Поскольку ваш Pi теперь настроен на автоматическое подключение через VPN (и должен предотвращать подключение в противном случае), эти порталы обычно блокируются

    Чтобы обойти это, настройте USB-адаптер Wi-Fi на соответствие MAC-адресу устройства, которое можно использовать для подключения и аутентификации в публичной сети Wi-Fi, например, смартфона. Как только вы это сделаете, введите:

    nano /etc/init.d/wan-changer

    В окне редактирования добавьте следующее (заменив символ XX на ваш MAC) и нажмите Ctrl + X, затем Y для сохранения

    #!/bin/sh /etc/rc.common
    START=10
    start() {
     uci set wireless.@wifi-iface 1.macaddr='XX:XX:XX:XX:XX:XX'
     uci commit network
    }

    Наконец, выполните следующие команды, чтобы настроить сценарий на автоматический запуск при старте Pi:

    chmod +x /etc/init.d/wan-changer
    /etc/init.d/wan-changerenable

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

    Безопасный Wi-Fi везде, где бы вы ни находились, гарантированно

    Теперь ваш Raspberry Pi должен быть настроен и готов к работе в качестве туристического маршрутизатора VPN, а это значит, что вы можете спокойно заниматься серфингом в любом отеле или кафе, которое вы посетите. Благодаря панели управления LuCI вы сможете легко подключаться к любой новой сети Wi-Fi через веб-браузер

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

  • Qos в роутере тп линк
  • Raspberry pi как wifi роутер
  • Qos что это в роутере zte
  • Qos в роутере и нужен ли он
  • Qos что это в роутере xiaomi redmi