Russian English German Ukrainian

Компьютерная помощь

(066) 72-00-654     (098) 44-74-068

г. Днепр

ж/м Левобережный-3

Ubuntu: VPN PPTP

VPN – Virtual Private Network (виртуальная частная сеть) – это служба, которая обеспечивает связь между удалёнными точками, путём объединения их в одну общую сеть. PPTP (англ. Point-to-point tunneling protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой, сети.

Настройка сервера

В ОС Linux  служба VPN настраивается путём установки пакета pptpd и редактирования конфигурационных файлов под ваши нужды.

Устанавливаем пакет pptpd. В Linux Debian/Ubuntu и подобных воспользуйтесь утилитой apt-get. Пакет находится в стандартных репозиториях, так что дополнительно ничего подключать не надо.

apt-get install pptpd

Конфигурируем главный файл – pptpd-options. Лежит файл в папке /etc/ppp и редактируется с правами администратора.

Настройка адресов/диапазона адресов в VPN. Пользователь, который будет подключаться к нашей сети должен естественно получить ip-адрес. Вы можете выдавать адреса из диапазона, либо привязать каждого пользователя к определённому адресу. Если привяжете IP к имени пользователя VPN, то можете пропустить настройку pptpd.conf, если будете выдавать адреса из диапазона – читаем внимательно. Находится он прямо в корне папки /etc. Из него нам нужно только 2 параметра. Листаем файл в самый конец и видим следующее:

# IP-адрес сервера в локальной сети
localip 192.168.1.1
# Диапазон адресов для клиентов PPTP-сервера
remoteip 192.168.1.50-254

Создаем пользователей VPN

Список пользователей, паролей и привязанных к ним ip-адресов хранится в файле chap-secrets. Лежит он в /etc/ppp.

№1 – пользователь получает ip-адрес из указанного нами в /etc/pptpd.conf диапазона адресов

Username pptpd password “*”

№2 – привязка ip-адреса к аккаунту VPN пользователя.

Username pptpd password “192.168.1.52”

Т.е. принцип таков – сначала пишем логин пользователя, потом имя службы (ту, котоую указали в параметре name в начале файла pptpd-options), затем идёт пароль, и в кавычках указываем ip-адрес, или * если выдавать из диапазона. Вот собственно и вся настройка.

После того, как отредактируете все нужные файлы – перезапустите службу:

/etc/init.d/pptpd restart

Естественно к вашему серверу должен быть доступ извне, т.е. в правилах iptables по необходимости добавить следующее:

# Разрешить всем протокол GRE
iptables -A INPUT -p gre -j ACCEPT
# Разрешить соединение с VPN-сервером;
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT

Вариант 2

Нам нужно будет установить пакет pptpd, который и является собственно PPTP-сервером, а также несколько пакетов которые прописаны у pptpd в зависимостях (это, возможно, bcrelay).

Если у вас еще не установлен пакет pptpd – запускаем его установку следующей командой:

sudo apt-get install pptpd

Перейдем к настройке параметров VPN-сервера, и начнем с файла /etc/ppp/pptpd-options.

sudo nano /etc/ppp/pptpd-options

В этот файл можно скопировать примерно такое содержимое (вам наверняка прийдется изменить адрес ms-dns на DNS который используется в вашей сети):

# Название сервиса для аутентификации
# (должно совпадать со вторым полем в записях /etc/ppp/chap-secrets)
name pptpd
# Откажемся работать с явно ненадежными механизмами проверки пароля,
# такими как PAP, CHAP и MS CHAP v1
refuse-pap
refuse-chap
refuse-mschap
# Разрешим аутентификацию пользователей
# по самому защищенному из протоколов — MS CHAP v2:
require-mschap-v2
# Потребуем максимально возможный для PPTP
# механизм шифрованная mppe-128
require-mppe-128
# Адрес DNS-сервера, указываемого клиентам:
# (У меня это локальный адрес роутера)
ms-dns 10.0.0.1
# Включение этого параметра позволяет PPTP-клиентам работать
# с локальной сетью без добавления правил маскарадинга (NAT)
# в цепочки брандмауэра iptables. Если используются
# цепочки iptables, этот параметр следует закомментировать.
# proxyarp
# Чтобы не сбивался маршрут по умолчанию:
nodefaultroute
lock
nobsdcomp

После этого правим файл /etc/pptpd.conf:

sudo nano /etc/pptpd.conf

Пример файла:

option /etc/ppp/pptpd-options
logwtmp
localip 192.168.18.1
remoteip 192.168.18.2-254
# Включим передачу VPN-клиентам широковещательных пакетов,
# которые сервер получает по сетевому интерфейсу eth0:
bcrelay eth0
# Смотрим, чтобы было закомментировано,
# при включении данного параметра IP-адрес клиента не передается
# скриптам ip-up через демон pppd:
# noipparam

Затем в файл /etc/ppp/chap-secrets добавляем пользователей которые будут иметь право подключатся к VPN-сети:

sudo nano /etc/ppp/chap-secrets

И добавляем в этот файл:

# Secrets for authentication using CHAP
# client server secret IP addresses
andrey pptpd andrey12 *

Таким образом, мы наделили пользователя andrey с паролем andrey12 правом подключаться к нашей VPN сети. Пользователю andrey будет выдаваться первый доступный IP адрес из указанного диапазона. Если же необходимо, чтобы пользователю всегда выдавался один и тот же IP адрес, укажите желаемый IP вместо «*». Обратите внимание на название сервиса – pptpd – оно должно быть таким же, как указано в параметре name в файле /etc/ppp/pptpd-options.

Чтобы изменения вступили в силу нужно перезапустить службу:

sudo /etc/init.d/pptpd restart

Если необходимо, чтобы для подключенных удаленных клиентов был доступен интернет через VPN, открываем /etc/rc.local и НАД ‘exit 0′ добавляем такие строки:

# PPTP IP forwarding
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

и раскомментируем эту строчку в файле /etc/sysctl.conf:

net.ipv4.ip_forward=1

В случае если ваш VPN сервер не подключен напрямую к интернету, вам скорее всего понадобится направить порт TCP-1723 и «протокол 47», он же GRE, на локальный IP адрес VPN сервера. Обратитесь к инструкции по настройке роутера чтобы выполнить необходимые шаги. Очевидно, что у сервера за роутером должен быть постоянный локальный IP, а у самого роутера – постоянный «внешний» IP, либо прийдется воспользоваться услугой «динамический DNS».

Видео

 

Настройка клиента

Для полноценной работы туннеля, в фаейрволле должны быть открыты порты 1723/PPTP и 47/GRE. Для дальнейшей настройки нам необходимо внести изменения в файле /etc/ppp/chap-secrets — тут хранятся логины и пароли:

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
username     PPTP    123456789            *

Создадим для туннеля отдельный конфигурационный файл — /etc/ppp/peers/vpn-provider и внесем в него следующие данные:

pty "pptp 192.168.1.10 --nolaunchpppd"
name username
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam vpn-provider

Подключение готов. Для установления соединения:

sudo pon vpn-provider

Для разрыва соединения:

sudo poff vpn-provider

В заключении необходимо прописать дополнительный маршрут для доступа к удаленной сети (например к сети 192.168.1.0/24 через маршрутизатор 192.168.1.1):

sudo route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

Чтобы не прописывать руками статический маршрут, создадим скрипт /etc/ppp/ip-up.d/vpn-provider и каждый раз при успешной установке туннеля, нужный маршрут будет прописываться автоматически:

cat > /etc/ppp/ip-up.d/vpn-provider
#!/bin/bash
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
[Crtl+d]
chmod +x /etc/ppp/ip-up.d/vpn-provider

И еще: в тот же скрипт /etc/ppp/ip-up.d/vpn-provider можно добавить:

route del default
route add default dev ppp0

чтобы пустить весь трафик в туннель.

P.S.
Чтобы Windows и Ubuntu видели друг друга в сети, необходимо в сетевых настройках Ubuntu изменить маску сети (255.255.255.255):

sudo ifconfig ppp0 netmask 255.255.255.0 
  • Сборка ПК для дома и офиса

  • Бесплатная диагностика

  • Гарантия

  • Самые низкие цены