среда, 16 апреля 2014 г.

VPN сервер на Linux. PPTPD-OPTIONS на русском

VPN – Virtual Private Network (виртуальная частная сеть) – простыми словами, это служба, которая обеспечивает связь между удалёнными точками, путём объединения их в одну общую сеть.

Протокол связи – PPPoE (point-to-point-over-ethernet), т.е. это туннелированное соединение с определёнными настройками шифрования, что в свою очередь позволяет не только объединить две удалённые сети в один сегмент, но и защитить такое соединение от перехвата пакетов злоумышленниками.


VPN можно использовать не только сетевым администраторам для нужд крупных компаний (объединение двух офисов), но и простым пользователям. Например для сетевых баталий, в случаях, когда игра не имеет официального сервера и не подразумевает неофициальные, а поиграть с товарищами ну очень хочется. Тогда можно объединить 2,3,4 и более компьютеров в единую сеть. Даже если вы отдалены от товарищей и находитесь на другом континенте, пользуетесь услугами другого провайдера и прочее…

В ОС Linux  служба VPN настраивается путём установки пакета pptpd и редактирования конфигурационных файлов под ваши нужды. Я постараюсь максимально понятно объяснить что к чему.  Вместе с вами мы настроим VPN сервер на Linux, научимся соединять с ним Linux машины с помощью графических утилит и просто терминала. Ну и конечно же мы разберём с вами подключение из под ОС Windows.


Итак, приступаем к установке и настройке:

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

# apt-get install pptpd

Пункт второй – конфигурируем главный файл – pptpd-options. Лежит файлик в папке /etc/ppp и редактируется с правами администратора редактором на ваш вкус. Кстати, на всякий случай, чтобы было понятнее понять что к чему, я потрудился перевести pptpd-options на русский язык. Собственно вот он:


##############################################################################

# Перевод pptpd-options на русский язык.

# Вы можете использовать pptpd-options с комментариями на русском языке в   своей  системе.

# Вы можете свободно распространять текст перевода pptpd-options со ссылкой на источник.

# Конфигурационный файл pptpd-options переведён Squ1sh специально для StudyLinux.ru

###############################################################################


# Аутентификация

# Имя локальной системы аутентификации

# (Должно быть вторым в файле /etc/ppp/chap-secrets) (после имени пользователя)

name pptpd

# Опционально – имя домена для аутентификации.

# domain mydomain.net

# Префикс домена из имени пользователя до аутентификации.

# (применяется если вы используете pppd с chapms-strip-domain патчем)

#chapms-strip-domain

# Шифрование

# На заметку – refuse-выкл. тип  шифрования, require – вкл. тип шифрования

refuse-pap

refuse-chap

refuse-mschap

# Рекомендуется включить mschap-v2 шифрования для аутентификации Windows клиентов

require-mschap-v2

# Включим MPPE 128-bit шифрование. На нём и будет всё завязано.

# (Внимание! MPPE использует MSCHAP-V2 во время аутентификации)

require-mppe-128

# Сеть и маршруты

# Если pppd работает для Microsoft Windows клиентов, включите в

# pppd поддержку одного или двух DNS (Domain Name Server – Сервер имён). Для linux клиентов не работает!

# адресов для клиентов.  Первым указывается адрес первичного DNS сервера вашей #локальной сети; Вторым - вторичный (если таковой есть)

#ms-dns 10.0.0.1

#ms-dns 10.0.0.2

# По той же схеме можно указать адреса WINS серверов.

#ms-wins 10.0.0.3

#ms-wins 10.0.0.4

#Proxyarp - это одна из функциональных возможностей протокола ARP, позволяющая #имитировать принадлежность разных IP-сетей к одному Ethernet-сегменту

#(использование одного сетевого префикса для обеих сетей). Короче опция должна #быть включена, ибо без неё никак

proxyarp

# Не назначать маршрутом по умолчанию (defaultroute – назначение этого #соединения маршрутом по умолчанию в таблице маршрутизации)


nodefaultroute

# Пишем логи

# Включаем дебаггинг с записью логов.

#debug

# Показать все установленные опции.

# (Часто по просьбе список рассылки, чтобы поверить опции). Лично я вообще не #понял что это за вещь, и с чем её едят. Я даже сомневаюсь в правильности 

#перевода… Ну да ладно, всё равно опция не важна.

#dump

# Разное

# Использовать блокировку портов UCPP, чтобы одновременно несколько # последовательных устройств не обращались к одному порту

lock

# Отключить BSD-Compress сжатие.

nobsdcomp 


###########################################################################


Как вы могли заметить, я выделил несколько параметров жирным. Это минимальные 7 параметров для приемлемой работы VPN сервера. Т.е. ваш минимальный конфиг pptpd-options может выглядеть так:
name pptpdrequire-mschap-v2

require-mppe-128

proxyarp

nodefaultroute

lock

nobsdcomp 

Его вполне хватит для того, чтобы играться по сети, или объединить 2 офиса в сеть. Но, если не указать DNS-сервера в файле pptpd-options, то невозможно будет обращаться к компьютеру по Net-Bios имени (только по ip-адресу), что создаст некоторые трудности при не статичных адресах (работающий DHCP-сервер в сети), если вы не знаете адреса, а только имя нужной машины.
________________________________________

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

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

По этому файлу всё.

Пункт четвёртый – заводим пользователей VPN. Список пользователей, паролей и привязанных к ним ip-адресов хранится в файле chap-secrets. Лежит он в /etc/ppp.
Приведу 2 примера добавления пользователей:
#Пример №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

Комментариев нет :

Отправить комментарий