Как да стартирате свой собствен OpenVPN сървър на Raspberry PI

Здравейте всички!

В тази кратка статия ще обясня как да настроите вашия собствен VPN (Virtual Private Network) сървър на Raspberry PI с OpenVPN. След като настроим сървъра, ще настроим сървър за затъмняване, за да прикрием трафика си, показващ, че използваме VPN. Това ще ни помогне да избегнем някаква форма на цензура.

Защо да използвам VPN?

Първо, нека поговорим защо може да искате да използвате VPN сървър:

  1. Избягвайте човек в средата атаки. Ако имате злонамерен потребител във вашата локална мрежа - дори вашият съквартирант - този човек е в състояние да наблюдава некриптирания ви трафик и да се намесва в него.
  2. Скрийте вашата интернет активност от вашия доставчик на интернет услуги (доставчик на интернет услуги) или университет, в моя случай.
  3. Деблокиране на услуги. My University блокира всички UDP (User Datagram Protocol) пакети. Това означава, че не мога да използвам никакво приложение, което комуникира чрез UDP. Не мога да използвам своя имейл клиент, да играя игри или дори да използвам Git!

Реших да настроя VPN в домашния си интернет с помощта на Raspberry Pi. По този начин мога да се свържа с домашната си мрежа, докато съм в университета. Ако имате нужда от VPN сървър в друга държава, можете да закупите 5 $ / месец виртуален частен сървър от DigitalOcean. Можете да използвате връзката ми за препоръки, за да спестите $ 10 - това са два месеца безплатна VPN. Но не е нужно да го използвате, ако не искате.

Инсталиране на OpenVPN

Тази стъпка е наистина лесна, защото ние ще използваме скрипт за черупки, за да го направим вместо вас. Така че просто трябва да натиснете следващия и да завършите.

Инсталацията ще отнеме много време, в зависимост от размера на ключа, който сте избрали. На моя Raspberry Pi 3 Model B отне около 3 часа.

Моля, отидете в това хранилище и следвайте инструкциите

Angristan / OpenVPN-install

OpenVPN-install - Настройте свой собствен OpenVPN сървър на Debian, Ubuntu, Fedora CentOS и Arch Linux github.com

Ако не знаете IP адреса на вашия сървър, просто поставете 0.0.0.0. Избрах 443за порта и TCP (Transmission Control Protocol) за протокола.

Забележка : Това е много важно, защото моят университет позволява само TCP / 80 и TCP / 443 портове, останалите са доста блокирани. Също така Obfsproxy работи само с TCP, затова се уверете, че сте избрали TCP !

След като скриптът приключи, ще получите .ovpn файл. Той може да бъде импортиран във вашия любим VPN клиент и всичко трябва да работи нестандартно.

Тестване на връзката

Импортирайте .ovpn файла във вашия VPN клиент и променете ip 0.0.0.0на локалния ip на вашия Raspberry PI. В зависимост от вашата мрежова конфигурация може да е под формата 192.168.*.*.

Забележка: Това ще работи само ако сте свързани към същия WiFi като Pi.

Конфигурирах маршрутизатора си, така че PI винаги получава запазен IP адрес. Може да се наложи да проверите настройките на рутера си, ако искате да направите нещо подобно.

Ако връзката е успешна, поздравления, вече имате VPN сървър! Но нямате достъп до него отвън ... все още.

Ако искате само OpenVPN сървър без прокси прокси, тогава можете да преминете към Препращане на портове .

Обфускация Прокси Инсталиране

Obfs4 е бързащ прокси. Той прикрива вашия интернет трафик, за да изглежда като шум. Някой, който следи трафика ви, всъщност няма да знае какво правите и ще ви предпази от активни сондиращи атаки, използвани от Великата китайска защитна стена.

Забележка: Този метод няма да работи, ако вашият противник позволява само трафик в белия списък :(

Нека да инсталираме прокси сървъра сега.

0. Инсталирайте необходимия пакет:

apt-get update && apt-get install obfs4proxy
  1. Създайте директория, която ще съдържа конфигурацията.
sudo mkdir -p /var/lib/tor/pt_state/obfs4

2. Създайте конфигурационния файл.

sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config

В конфигурационния файл ще поставите следните неща:

TOR_PT_MANAGED_TRANSPORT_VER=1TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4TOR_PT_SERVER_TRANSPORTS=obfs4TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:444TOR_PT_ORPORT=127.0.0.1:443

TOR_PT_SERVER_BINDADDR е адресът, на който проксито ще слуша за нови връзки. В моя случай това е 0.0.0.0:444- защо 444, а не 443? Е, тъй като не искам да променя конфигурацията на OpenVPN сървъра, която в момента се слуша на 443. Също така, ще присвоя този адрес по-късно на 443, използвайки Port Forwarding.

TOR_PT_ORPORT трябва да сочи към сървъра OpenVPN. В моя случай сървърът ми работи127.0.0.1:443

3. Създайте файл на услугата SystemD.

sudo nano /etc/systemd/system/obfs4proxy.service

След това поставете следното съдържание в него:

[Unit]Description=Obfsproxy Server[Service]EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.configExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO[Install]WantedBy=multi-user.target

4. Стартирайте проксито на Obfuscation.

Сега се уверете, че OpenVPN работи и изпълнете следните команди, за да стартирате проксито и да го активирате при стартиране.

sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy

5. Запазете сертификата КЛЮЧ

След стартирането на услугата изпълнете следната команда и запазете сертификата КЛЮЧ.

cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt

The key is of the form Bridge obfs4 : GERPRINT> cert=KEY iat-mode=0 . You will need it when you’re connecting to the VPN.

6. Testing the connections.

Open up your VPN client and change the ip from 443 to 444 in order to connect to the proxy instead of the OpenVPN server.

After that, find the Pluggable Transport option in your OpenVPN client and see if it supports obfs4.

If everything works, then you’re all set! Congratulations! Only a few more things to tweak before using this VPN from the outside world.

Port Forwarding

In order to access the OpenVPN server from the outside world we need to unblock the ports, because they are most likely blocked. As you remember, I have reserved my PI’s IP address on my router to always be 192.168.1.125 so it doesn’t change if the PI disconnects or if the router reboots.

This way I have defined the following rules in my Port Forwarding table:

The outside port 443 will point to the obfuscation’s server port 444. If you don’t have an obfuscation server, then leave 443->443.

The port 25 will point to the PI’s SSH port 22. This is only for my own convenience.

In case I want to access the OpenVPN server directly without the obfuscation proxy, I have created a rule 444->443

The service port is the OUTSIDE port that will be used with your PUBLIC IP address. To find your public IP, use a service like whatsmyip.com.

The internal port is the INSIDE port. It can be used only when you are connected to the network.

Note: The first rule is saying redirect all the connections from PUBLIC_IP:443 to 192.168.1.125:444

Testing

  1. Find your public IP and replace your old IP with the public IP in the .ovpn file or in the VPN client.
  2. Connect to the VPN.

That’s it.

Dynamic DNS

In most cases, your IP will change because it’s a dynamic IP. A way to overcome this is to create a small program on the PI that saves your IP and sends you an email every day or so. You may also store the IP in an online database such as Firebase.

My router has Dynamic DNS setting. This way I can use a service provider like NoIP and get a domain like example.no-ip.com that will always point to my public IP address.

Other Resources:

  • A Childs Garden Of Pluggable Transports
  • Viscosity-Obsfurcation/
  • //www.pluggabletransports.info/transports/

If you have any questions hit me up on Twitter.