Pptpd сервер raspberry

VPN-сервер на Raspberry PI инструкция

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

Использование VPN сервера на одноплатном компьютере неплохая идея. Когда периодически возникает необходимость воспользоваться своим компьютером или каким-либо устройством внутри своей домашней сети, но дома вас нет или вы далеко, и не можете этого сделать. В таких случаях помогает VPN-сервер который создает «виртуальную» персональную сеть из ваших устройств подключенных к серверу. И подключившись издалека к серверу вы можете управлять всей своей IT-структурой. Такое часто используется в умном доме. Расскажем немного про сам VPN.

Что это такое?

VPN соединение — это удаленное соединение к частной сети. Создается часто на разных протоколах защищенной передачи данных. Вот три популярных:
OpenVPN — свободное программное обеспечение для создания виртуальной сети типа точка-точка или сервер-клиенты. В этом программном комплексе используется все знаменитые методы шифрования соединения, а это OpenSSL это криптографический пакет использующий метод шифрования RSA(как в SSH), проверка аутентификации по методу HMAC, использует алгоритмы шифрования DH, DSA, и сертификат X.509.
IPsec — набор протоколов передачи зашифрованных данных по протоколу IP.
PTPP — протокол зашифровонной передачи данных по специальному сетевому туннелю с поддержкой шифрования MPPE и метод аутендификации MS-CHAPv2. Вообще есть много других методов шифрования и аутендификации у этого протокола, но эти самые надежные.

VPN сервер — машина которая принимает на себя роль коммутатора в виртуальной частной сети. К ней подключаются клиенты VPN и таким образом они находятся в одной сети через этот сервер.

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

Практика

Теперь берем Raspberry Pi(если она у вас есть), вставляем флешку в кардридер своего ПК, открываем терминал и пишем:

Команда должна выдать весь список дисков которые есть в вашем компьютере, там находим свою флешку.

sudo fdisk [название вашей флешки]

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

В появившимся меню набираем следующие флаги:

Нажимаем о и ENTER //Удалили все раделы на флешке

Нажимаем p и ENTER //Просмотр всех разделов, их не должно быть

Нажимаем n и ENTER //Создать раздел

Нажимаем p и ENTER // Тип раздела, первичный

Затем 2 раза ENTER потом пишем +100M и жмем ENTER //Создали 1 раздел с размером в 100 мб, туда пойдет загрузчик.

Нажимаем t и затем c //Обозначили назначение раздела

Нажимаем n, затем p и 3 рара ENTER //Оставшуюся память разметили на корневой диск

И нажимаем w, потом ENTER и утилита заканчивает работу.

Посмотрите какие разделы созданы на флешки командой sudo fdisk -l и вводим следующие команды:

mkfs.vfat [первый раздел который на 100 мб] //форматируем в раздел fat

mount [первый раздел который на 100 мб] boot //монтируем раздел в созданную папку

Тоже самое со вторым разделом только форматируем его в формат ex4

mkfs.ext4 [второй раздел]
mkdir root
mount [второй раздел] root

Теперь нужно скачать образ с сайта archlinux и загрузить во флешку

wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-2-latest.tar.gz //скачиваем образ

bsdtar -xpf ArchLinuxARM-rpi-2-latest.tar.gz -C root //разорхивируем во второй раздел

mv root/boot/* boot //переносим папку boot из первого раздела во второй

umount boot root //размонтируем флешку

Все, Arch Linux готов. Вытаскиваем флешку, плату подключаем по LAN кабелю к маршрутизатору, вставляем флешку в плату и подаем питанием. Возвращаемся к своему ноуту, заходим в веб-интерефейс маршрутизатора и ищем клиентов подключенных к роутеру. Находим такого клиента «alarmpi», это наша плата. Копируем ip-адрес, переходим в терминал и снова пишем.

sudo ssh [ip-адрес] -l alarm

Дальше он спросит об установке ключей RSA, говорим да, и затем потребует пароль, он такой же как и логин. Подключение к плате есть. Теперь необходимо получить sudo, это права суперпользователя. Пишем su и пароль root. Все, мы имеем не ограниченные права на нашей плате. Сейчас нам необходимо сразу обновить ключи репозиторией командами pacman-key —init и pacman-key —populate archlinuxarm.

Устанавливаем VPN-сервер

Установим сетевые инструменты:

sudo pacman -Sy net-tools

Теперь сервер PTPP:

sudo pacman -Sy pptpd

Настраиваем конфигурацию сервера:

option /etc/ppp/options.pptpd // ссылка на опции нашего сервера
localip 192.168.1.2 // Локальный ip нашего сервера внутри VPN сети
remoteip 192.168.1.3-254 // Пул адресов которые наш сервер будет давать клиентам

Теперь прописываем опции нашего сервера:

name pptpd // Тип соединения
refuse-pap // Заблокировать PAP
refuse-chap // Заблокировать CHAP
refuse-mschap // Заблокировать MSCHAP
require-mschap-v2 // Использовать MSCHAP-v2
require-mppe-128 // Использовать MPPE-128
proxyarp // Включить перенаправляение ARP пакетов
lock // Запретить подключение к сети через последовательный порт
nobsdcomp // Запретить сжатие пакетов
novj
novjccomp
nolog // Не вести логи в файле
ms-dns 8.8.8.8 // Адреса публичных DNS-серверов Google
ms-dns 8.8.4.4

Теперь создаем пользователей нашего сервера которые будут подключатся:

В столбе client пишем логин, в столбе server pptpd, в столбе secret пароль пользователя, в строке IP-addres’s ставим * так как IP адреса будут раздаваться сервером.

Теперь установим проброс портов в настройках ядра:

Теперь настроим firewall, в Arch Linux это iptables

Создаем файл nano /etc/iptables/iptables.rules

И прописываем туда следующие:

iptables -A INPUT -i ppp+ -j ACCEPT //Пропуск пакетов через интерфейсы ppp
iptables -A OUTPUT -o ppp+ -j ACCEPT

iptables -A INPUT -p tcp —dport 1723 -j ACCEPT //Открытие порта 1723

iptables -A INPUT -p 47 -j ACCEPT //Открыть принятие и передачу инкаспулируемых пакетов
iptables -A OUTPUT -p 47 -j ACCEPT

iptables -F FORWARD //Включить IP-маршрутизацию
iptables -A FORWARD -j ACCEPT

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o ppp+ -j MASQUERADE

Применяем настройки к iptables:

systemctl enable iptables.service

Добавляем наш сервер в автозагрузку

systemctl enable pptpd.service

Проверьте работает ли сервер командой systemctl status pptpd.service.
Если будет такая запись, то вы сделали все правильно:

Loaded: loaded (/usr/lib/systemd/system/pptpd.service; enabled; vendor prese>
Active: active (running)

Теперь чтобы подключиться к нашему серверу надо использовать VPN-соединение в GUI, в правом верхнем углу выбираете знак Wi-Fi, откроется меню, там выбираете VPN-подключения, потом добавить VPN-соединение. Выбираете в окне PPTP, прописываете в строке IP, адрес своей платы, логин, пароль который указывали при настройке. Нажимаете дополнительно и ставите галочку на «Использовать шифрование MPPE» и снять галочки со всех функций сжатия. Нажимаете ОК, и сохранить. Потом возвращаетесь в это же меню и там же жмете на VPN-соединение 1.

Источник

PPTP VPN Server On Raspberry PI

It is a super small super recommended PC that you can buy for 25 $.

When using it as a VPN server, there was no particular problem if it was a wired LAN connection, but when using it with a Wi-fi wireless LAN adapter (USB), it is said that sufficient power cannot be stably supplied to the wireless LAN adapter. There was a problem with the old model. Searching in google I found information that to solve this problem, additional capacitors should be added.

If it is the new Raspberry Pi Model B +, I think that it can be operated stably without soldering work such as capacitors.

PPTPD installation and configuration

I think it can be done in five minutes 😊

Update your system to the latest version if necessary

pptpd installation

pptpd settings (own IP and assigned IP to connected clients)

Uncomment the part that is commented out at the end of the file. Please set the IP of this terminal that is being set as a VPN server for localip. For the time being, please set the IP address fixedly to this terminal by DHCP from the setting screen of the router. As you probably know, you can $ ifconfig look up the MAC address with.

DNS settings

Let’s set the DNS server used by the connected client. In the normal case, 1.1.1.1 I think it’s a good idea to insert the IP of the router or even if it is appropriate.

Account settings for connected clients

Add a user account that can be accessed with pptp. Note that the password is saved in clear text.

IP forward settings

If you do not enable IP forwarding in the Linux itself (disabled by default) and also forward packets whose destination address is not yours, all packets from terminals connected via VPN will be discarded.

MTU/MRU settings

Even if you do not make this setting, it will connect depending on the machine, but iOS and Mac can be completely cut off. I can’t use it, yes. I think both were set to 1500 by default. The reason why this is cut off is that tunneling by VPN increases the amount of header information used for it, which exceeds 1500.

As an aside, as mentioned above, the mru config says that 296 bytes is recommended at low speeds.

Let’s set up the router

If you have a separate router (which I think is usually the case), set up port forwarding on your router. 😊

Testing

Try connecting with the PPTP protocol from your iPhone/Android/Mac.
For the server IP, set the global IP of the VPN server terminal and router that you have set, or DNS. RSA SecureId is not set, so it is off. Please enter the account and password you set earlier. Since I haven’t set any proxy this time, I usually don’t need to set it.

Firewall

If you need it, You can setup a firewall on your VPN server. Install ufw or IPTables which is fine too

Allowed port settings

In T\this time, our VPN server is running on the default port 1723, so allow 1723. Other than that, please set it yourself. Or rather, I think that there are many people who have already set IPTables, so please set it yourself.
When will doing forget to allow the ssh ‘s it but commonplace but I take care.

For the time being, leave the default setting as deny

Packet forwarding permission settings

Change forward policy to ACCEPT

Add NAT settings

Add the following line to the beginning of the file. It means forwarding packets from 192.168.123.0/24 to eth0. Of course, if you are using eth other than eth0, please change it. You know what you’re using, but you ifconfig can check it with a command.

Finally restart ufw to reflect the settings

The raspberry pi is now a VPN server. Congrats!

Источник

Raspberry Pi PPTP VPN

The RPI unit is a perfect candicate to function as a VPN gateway, either from home or a remote datacenter (tip: free hosting at EDIS in Austria, as of November 2012).

This will work on any Debian based Raspberry Pi distribution.

Contents

Intall PPTP

The protocol used here is the PPTP (point-to-point tunneling protocol). Install the PPTP and required PPP packages using the following command.

Configure PPTP

Now configure PPTP to use a set of local and remote private IP addresses. Edit the configureation file.

At the end of the file, append the following lines. You can use any ip range you want, these are allocated internally to the VPN system.

Now edit the PPTP options file.

Append the following lines to specify the DNS server (using the Google public one) and some data packet definition.

Add users

Now, to add users to the VPN system, edit the CHAP user-data file.

For each user you want to add, insert one of the following lines.

For instance to add user ivc with the password n0thingt0hide, I would use:

Now, the PPTP section of the setup is finished. Reload the PPTP daemon by executing this command.

Packet forwarding

To make it possible to forward data packets from the VPN system over to the regular network and thus the Internet, the kernel has to be configured to allow IP packet forwarding between interfaces.

Find the line below and remove the «#» to enable the option.

Reload the system and kernel using the following command.

The VPN system is now partly ready, only thing left to do is to configure the preferred way to connect externally to the VPN server. If your network is behind a NAT router, a.k.a. not directly connected to the Internet with a public IP address, you need to configure port forwarding on the NAT router.

Remote access

NAT router

Configure the local NAT router to forward TCP port 1723 to the internal IP address of the Raspberry Pi. This procedure differs between routers and is easily done by following the instructions outlined by the excellent Port Forward website.

Public IP address

If your Raspberry Pi is connected directly to the Internet and has a public IP address, the packets from the VPN system cannot traverse directly to the Internet because they below to a range of private IP adresses (10.x.x.x or 192.168.x.x.).

To correct this, the routing system on the Rasberry Pi need to have a NAT system to masquerade the private addresses and pass them between the local and public network.

Fortunately, this is easily done by adding a single line to the start-up script. Edit the follwing file.

And add the following line at the end of file.

Now reboot the machine or execute the command above to enable the NAT function.

Client setup

The last step to set-up the VPN system is to configure the end-point clients. This differs from Windows, Mac and Linux, but it essentially breaks down to adding the following VPN profile to the operating system.

  • VPN type: PPTP
  • Server address: hostname or IP address of the router/Raspberry Pi
  • Account: the one added in /etc/ppp/chap-secrets above
  • Encryption: select 128-bit
  • Authentication: pick password and the one configured above
  • Advanced: Send all traffic over VPN connection

Источник

Adblock
detector