Как настроить сервер vpn (pptp) в debian linux

Почему использовать OpenVPN?

Говоря «безопасные подключения» — подразумеваем OpenVPN. Если вы не хотите, чтобы кто-либо шпионил (занимался снупингом) за вашим интернет трафиком, используйте OpenVPN для маршрутизации всего вашего трафика через сильно зашифрованный, безопасный туннель.

Это особенно важно при подключении к публичным WIFI сетям в аэропортах и других местах. Вы никогда не можете быть уверенным, кто шпионит за вашим трафиком

Вы можете направить ваш трафик через ваш собственный OpenVPN сервер для предотвращения снупинга.

Если вы в одной из тех стран, которые постоянно мониторят весь ваш трафик и блокируют по своему желанию веб-сайты, вы можете использовать OpenVPN через TCP порт 443, чтобы сделать его неотличимым от HTTPS трафика. Вы даже можете комбинировать ваши стратегии безопасности, например, туннелировать ваш OpenVPN трафик через SSL туннель, чтобы отбиться от техник Deep Packet Inspection (глубокого анализа пакетов), которые могут быть способными идентифицировать сигнатуры OpenVPN.

Настройка VPN-соединения в графических средах

В среде GNOME для этих целей есть Network Manager, с помощью которого можно управлять различными соединениями, в том числе и VPN. Для среды KDE есть менеджер kvpnc с аналогичной функцией. Следует отметить, что все эти менеджеры работают как графические оболочки для создания и правки конфигурационных файлов, нужных для работы VPN. Соответственно они работают в рамках своей парадигмы и если по каким-то причинам соединение будет закрыто или создано методами не этих менеджеров (например, из консоли), то возникнет конфликт между тем, что ожидает менеджер и фактическим состоянием соединения. В результате возможен незапланированный запуск нескольких соединений или сброс всех. Поэтому, самым универсальным способом управления соединениями, по мнению автора, является вышеописанная ручная правка конфигов и запуск соединений из консоли или скриптами. Если пользователь работает только в графической среде — пользуйтесь только средствами графической среды. Если пользователь умеет работать в консоли — никакие программы-менеджеры ему вообще не пригодятся для создания сетевых соединений

KVpnc

Этот менеджер универсален и поддерживает массу всякого рода настроек и типов соединений, но обратная сторона такой универсальности — сложность процесса настройки. Информация о настройках хранится в виде профилей. Пользователь может создать несколько профилей для каждого соединения и использовать нужный в своё время.

Для работы с этим менеджером, сперва его надо установить:

 # apt-get install kvpnc kvpnc-data

После установки появится ярлык для запуска в меню: «Приложения» > «Интернет» > «KVpnc». При первом запуске, программа спросит пароль root`а, после чего откроется окно программы и вопрос о настройке KWallet — вспомогательной программы для сохранения паролей (менеджер паролей). Выбираем пункт «Basic Setup» и переходим по «Next». Далее программа спросит глобальный пароль для менеджера паролей. Не ставим галочку на «Yes, I wish to use…» переходим по «Next». У автора программа аварийно закрылась в этом месте — перезапускаем её.

Появится окно программы. Теперь нужно создать профиль настроек через «Profile» > «New Profile (wizard)».
Далее программа предложит выбрать тип VPN («Select the type of your VPN»), выбираем «Microsoft PPTP». Теперь пользователям самим придётся разобраться что значат те или иные галочки и кнопочки, а затем сопоставить это с опциями в вышеописанной конфигурации, ибо у автора не хватило терпения создать даже один работающий профиль :^:_:^:

Network Manager

Говорят он стал намного стабильнее и удобнее в современных дистрибутивах Linux Mint 12 и Ubuntu 11.10 Поделитесь кто-нибудь настройкой VPN PPTP в Network Manager.

Пересылка пакетов между сетевыми интерфейсами

Первым делом настроим систему так, чтобы она «умела» работать шлюзом. Для этого в файле /etc/sysctl.conf найдите и раскоментируйте строку (уберите знак # в начале строки):

net.ipv4.ip_forward=1

Возможно, что в вашей системе этот параметр уже присутствует, но со значением 0 (ноль). В таком случае исправьте его на 1 (единицу).

Чтобы необходимое нам значение заработало нужно применить новую конфигурацию, для этого выполните в консоли сервера следующую команду:

# sysctl -p

О параметре net.ipv4.ip_forward

Если этот параметр выключен (закоментирован или значение равно 0), то компьютер (операционная система) считает себя узлом IP сети и дропает (DROP) все пакеты, предназначенные не ему (т.е. отбрасывает пакеты адрес получателя которых отличен от IP-адресов, назначенных на интерфейс, на котором получен пакет).

Если параметр включен, то ОС считает себя маршрутизатором и действует в соответствии с RFC1812, в том числе пытается переслать адресованные не ей пакеты в соответствии с таблицей маршрутизации.

Настройка firewall (iptables) в Debian

В качестве firewall в Debian по-умолчанию используется iptables, его и будем настраивать. Изначально фаервол полностью открыт и пропускает весь трафик. Проверить список правил iptables можно следующей командой:

# iptables -L -v -n

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

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

Шанс ошибиться очень высок. Вы просто потеряете удаленный доступ к серверу.

Создадим файл с правилами iptables:

# mcedit /etc/iptables.sh

Очень подробно вопрос настройки iptables я рассмотрел отдельно, рекомендую ознакомиться. Хотя в примере другая ОС linux, принципиальной разницы нет, настройки iptables абсолютно одинаковые, так как правила одни и те же.

Добавляем набор простых правил для базовой настройки. Все необходимое вы потом сможете сами открыть или закрыть по аналогии с существующими правилами:

#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Активный сетевой интерфейс
export WAN=ens18
export WAN_IP=10.20.1.16

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Установим политики по умолчанию для трафика, не соответствующего ни одному из правил
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# разрешаем пинги
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Разрешаем исходящие соединения самого сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из-за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным, обрубаем
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Открываем порт для ssh (!!!не забудьте указать свой порт, который вы изменили ранее!!!)
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Открываем порт для web сервера
$IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp --dport 443 -j ACCEPT

# Записываем правила в файл
/sbin/iptables-save > /etc/iptables_rules

Даем файлу права на запуск:

# chmod 0740 /etc/iptables.sh

Запускаем скрипт:

sh /etc/iptables.sh

Проверяем правила:

# iptables -L -v -n

Проверяем, что правила записались в файл /etc/iptables_rules. Если их там нет, то записываем их вручную.

# /sbin/iptables-save > /etc/iptables_rules

Правила применились и произошла их запись в файл /etc/iptables_rules. Теперь нужно сделать так, чтобы они применялись при загрузке сервера. Для этого делаем следующее. Открываем файл /etc/network/interfaces и добавляем в него строку pre-up iptables-restore < /etc/iptables_rules Должно получиться вот так:

# cat /etc/network/interfaces

allow-hotplug eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables_rules

Для проверки перезагрузите сервер и посмотрите правила iptables. Должен загрузиться настроенный набор правил из файла /etc/iptables_rules.

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

Установите пакет сервера pptp:

Отредактируйте файл конфигурации «/etc/pptpd.conf»:

Добавьте к этому:

Если «localip» — это адрес сервера, а remoteip — это адреса, которые будут разосланы клиентам, вы можете настроить их в соответствии с требованиями вашей сети.

Отредактируйте файл конфигурации «/ etc / ppp / pptpd-options»:

Добавьте в конец файла следующие директивы:

Если IP-адрес, используемый для директивы ms-dns, является DNS-сервером для локальной сети, к которой будет подключаться ваш клиент, и, опять же, вы несете ответственность за его настройку в соответствии с конфигурацией вашей сети.

Отредактируйте файл секретов парня:

Добавьте к нему учетные данные аутентификации для подключения пользователя в следующем синтаксисе:

Перезапустите демон подключения, чтобы настройки вступили в силу:

Если вы не хотите предоставлять себе доступ ко всему, что находится за пределами сервера, значит, вы сделали это на стороне сервера.

Включить пересылку (необязательно)

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

Включая переадресацию, мы делаем доступной для нас всю сеть при подключении, а не только сам VPN-сервер. Это позволяет подключающемуся клиенту «перепрыгивать» через VPN-сервер ко всем другим устройствам в сети.

Чтобы достичь этого, мы будем переключать параметр «forwarding» системы.

Отредактируйте файл «sysctl»:

Найдите строку « net.ipv4.ip_forward» и измените параметр с 0 (отключено) на 1 (включено):

Вы можете либо перезагрузить систему, либо выполнить эту команду, чтобы настройки вступили в силу:

При включенной пересылке все настройки на стороне сервера подготовлены.

Мы рекомендуем использовать режим соединения «Split Tunnel» для VPN-клиента.

Более подробное объяснение рекомендуемого режима «Split Tunnel», а также инструкции для пользователей Ubuntu Linux можно найти в руководстве «Настройка клиента« Split Tunnel »VPN (PPTP) в Ubuntu 10.04».

Для пользователей Windows, следуйте инструкциям ниже, чтобы создать VPN-клиент в вашей системе.

Настройка PPTP VPN Dialer на XP (разделенный туннель)

Мы создадим обычный VPN-номеронабиратель с одним достойным внимания примечанием, что мы настроим систему НЕ использовать ее в качестве «шлюза по умолчанию» при подключении.

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

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

Перейдите в «Пуск», а затем «Панель управления».

* Если ваша система настроена с помощью «Классического меню Пуск», вам нужно просто указать значок «Панель управления», а затем выбрать «Сетевые подключения».

В «Панели управления» дважды щелкните «Сетевые подключения».

Дважды щелкните «Мастер нового подключения».

В окне приветствия «Мастер новых подключений» нажмите «Далее».

Выберите «Подключиться к сети в моем рабочем пространстве», а затем «Далее».

Выберите опцию «Подключение к виртуальной частной сети», а затем «Далее».

Дайте имя VPN-соединению.

Введите имя вашего VPN-сервера DNS-имя или IP-адрес, как видно из Интернета.

По желанию Вы можете выбрать «Добавить ярлык на рабочий стол» и «Готово».

Теперь самое сложное, жизненно важно, чтобы вы НЕ пытались подключиться сейчас и заходили в «Свойства» номеронабирателя

Перейдите на вкладку «Сеть» и измените «Тип VPN» на «PPTP VPN», как показано на рисунке ниже (это необязательно, но сократит время, необходимое для подключения), затем перейдите в «Свойства».

В следующем окне перейдите в «Advance», ничего не меняя.

В следующем окне снимите флажок «Использовать шлюз по умолчанию в удаленной сети».

Теперь введите учетные данные подключения, как вы их установили на сервере и подключиться.

Вот и все, теперь вы должны иметь доступ ко всем компьютерам в сети из клиента XP.

Наслаждаться.

Сетевые настройки на сервере Debian

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

Первоначальная настройка сети начинается во время установки сервера. Если у вас есть сетевой интерфейс и dhcp сервер в сети, то сеть сконфигурируется автоматически на основе полученных настроек и будет готова к работе. В последствии вы можете выполнить настройку сети в Debian через консоль с помощью программ ip или ifconfig. Наиболее популярным и современным средством на текущий момент является ip, поэтому в дальнейшем рассмотрим вопрос конфигурации сетевых интерфейсов с ее помощью. Про ifconfig тоже не забудем. Рассмотрим ее позже отдельно.

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

Есть 2 различные возможности изменить сеть в Debian:

  1. Настройка сети из консоли с помощью указанных ранее консольных программ.
  2. С помощью редактирования конфигурационного файла сетевых интерфейсов /etc/network/interfaces.

Мы рассмотрим оба этих варианта. Вводная теоретическая часть окончена, приступаем к практике.

Настройка Ubuntu и Debian сетевым шлюзом для раздачи интернета в локальную сеть

  • 28th day of Chaos, in the yold 3176
  • 138 Comments

В этой заметке будет рассказано как с помощью iptables настроить системы с Ubuntu и Debian для раздачи интернета другим компьютерам локальной сети. На простом примере будет показано как машину с двумя сетевыми интерфейсами (в один поступает интернет, из другого — «выходит») сделать шлюзом.

Настроить этот функционал через веб-интерфейс можно с помощью Webmin, через графический интерфейс – с помощью GAdmintools. Но мы рекомендуем настраивать шлюз напямую, а не через сторонние утилиты.

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

(с Debian 9 эта команда устарела, используйте вместо нее)

Она выдаст список работающих в данный момент сетевых интерфейсов. Среди них надо опознать те, что начинаются со слов «Link encap:Ethernet» — это интерфейсы сетевых карт. Как правило, это eth0 и eth1.
Теперь потребуется опознать в какой из них поступает интернет, а из какого «выходит». Проще всего это сделать по их ip-адресам.
Итак, допустим через eth0 вы получаете интернет (например через adsl-модем по протоколу ppp), а eth1 связывает вас с локальной сетью.
Если локальная сеть настроена через Network Manager, то мы рекомендуем прописать эти настройки непосредственно в системном конфигурационном файле сети:

Здесь исправьте настройки вашего сетевого интерфейса, подключенного к локальной сети (в нашем случае eth1), соответствующим образом:

Значение address — это айпи вашей машины в локальной сети, по этому адресу собственно и будет располагаться шлюз.
Значение netmask — в локальных сетях для этого диапазона чаще всего такая. Для других диапазонов можно вычислить здесь.
Значения network и broadcast будут зависеть от вашего адреса. То есть, если ваш локальный ip — 10.0.0.10, то network и broadcast будут 10.0.0.0 и 10.255.255.255 соответственно.

Либо, это можно проделать всего одной командой:

Эта команда самостоятельно настроит вашу сетевую карту eth1 на использование статичного айпи-адреса, и самостоятельно пропишет описанные выше настройки в файл /etc/network/interfaces

В любом случае, после этих изменений перезапустите networking:

Командой:

()

проверьте, что изменения вступили в силу и все работает.

Теперь осталось дело за малым. В случае если вы уже пытались настроить вашу систему шлюзом, но у вас не получилось или по каким-то другим причинам вы желаете обнулить все настройки файрвола iptables, то это можно сделать следующими командами:

Если прямой необходимости в сбросе настроек iptables нет, то лучше этого не делать.

Следующие команды настроят ваш iptables для NAT-трансляции (NAT, Network Address Translation — «преобразование сетевых адресов») через Ubuntu-шлюз:

Если необходимые вам сетевые интерфейсы отличаются от eth0 и eth1, то просто измените первую строку соответствующим образом.
Если ваша локальная сеть находится вне диапазона 192.168.x.x, то маску подсети для указания в первой строке вы сможете легко вычислить через сервис Network Calculators.

Теперь для конфигурации gateway’я для роутинга между двумя интерфейсами необходимо включить IP-форвардинг командой:

И последний штрих: надо отредактировать файл sysctl.conf:

Добавьте в него вот эти две строки для активации роутинга:

В Debian 9 достаточно добавить (раскомментрировать) всего одну строку:

После этого ваш интернет-шлюз готов к работе. Можете настраивать клиентские машины. На нашем примере для них gateway будет 192.168.0.10

Если все внесенные вами изменения работают корректно и вы желаете внести эти настройки в автозагрузку (а именно, вышеприведенные настройки iptables теряют активность после перезагрузки системы), то сохраните нынешнюю рабочую конфигурацию iptables в файл командой:

После этого в сам файл сетевых настроек /etc/network/interfaces () к параметрам вашего сетевого интерфейса, например, из которого к вам поступает интернет (в нашем случае – это eth0) добавьте строку:

То есть оно станет примерно такого вида:

Только не меняйте значения в строке iface, просто добавьте указанную строку последней в разделе auto eth0 (ну или какого-то другого сетевого интерфейса). После этого при перезагрузке сохраненные настройки iptables будут подниматься автоматически.

Если вы хотите добавить к этому автоматическую раздачу адресов (dhcp) и прокси, то воспользуйтесь для этого, например, вот этой инструкцией.

Установка pptp сервера

Подразумеваю, что у вас установлен и настроен сервер. Если это не так, то воспользуйтесь моими материалами по установке и настройке debian сервера.

Сначала установим pptp сервер:

# apt-get install pptpd

Рисуем следующий конфиг /etc/pptpd.conf:

# mcedit /etc/pptpd.conf
option /etc/ppp/pptpd-options
logwtmp
bcrelay eth1:1
localip 192.168.10.1
remoteip 192.168.10.30-50
eth1:1 Виртуальный интерфейс. Нужен для передачи dhcp параметров клиентам pptp.
192.168.10.1 IP адрес pptp сервера в vpn сети
192.168.10.30-50 Диапазон адресов, которые будут назначены pptp пользователям в vpn сети

Редактируем файл с дополнительными параметрами /etc/ppp/options:

# mcedit /etc/ppp/options
ms-dns 77.88.8.1
ms-dns 8.8.4.4
require-mschap-v2
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 10
lcp-echo-failure 100
noipx
nodefaultroute

Не буду подробно описывать параметры, в интернете есть описание

Обращаю внимание на proxyarp, без него не будет работать задуманная схема, и на nodefaultroute. Если вам иногда нужно ставить пользователям vpn сервер в качестве шлюза по-умолчанию, закомментируйте этот параметр

Отключить шлюз можно будет вручную на клиенте.

Дальше создаем учетки для подключения в файле /etc/ppp/chap-secrets:

# mcedit /etc/ppp/chap-secrets
user-01 pptpd passw51 192.168.10.41
user-02 pptpd passw88 192.168.10.42
user-03 pptpd passw59 192.168.10.43
user-04 pptpd passw27 192.168.10.44

Первый столбец — имя пользователя, второй — тип сервера, он всегда один и тот же, третий — пароль, четвертый — ip адрес в vpn сети, который будет назначен клиенту. Если его явно не указать, то ему будет назначен первый свободный из диапазона remoteip в pptpd.conf.

На этом настройка непосредственно pptp сервера закончена. Им можно пользоваться, но маршруты пользователям передаваться не будут.

Обновление системы, отличие apt upgrade от dist-upgrade и full-upgrade

Сеть настроили, теперь можно обновить систему и пакеты. В Debian это делается достаточно просто. Воспользуемся несколькими командами. Сначала обновим локальный индекс пакетов до последних изменений в репозиториях:

# apt update

Посмотреть список пакетов, готовых к обновлению, можно с помощью команды:

# apt list --upgradable
# apt upgrade

Ключ upgrade выполняет только обновление одной версии пакета на другую, более свежую. Он не будет устанавливать или удалять пакеты, даже если это необходимо для обновления других. Это наиболее безопасный и надежный вариант обновления, но он может обновить не все. Например, с ее помощью не обновить ядро до более свежей версии.

Ключ dist-upgrade или full-upgrade (это одно и то же) в дополнение к upgrade обрабатывает все изменения зависимостей для новых пакетов и во время работы может удалять ненужные и ставить необходимые пакеты для обновления. Вот выдержка из документации по поводу этих двух ключей.

Так что после обычного обновления, делаем еще full-upgrade.

# apt full-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  dh-python guile-2.0-libs libbind9-140 libdns162 libicu57 libisc160 libisccc140 libisccfg140 liblvm2app2.2 liblvm2cmd2.02 liblwres141 libperl5.24
  libpython3.5-minimal libpython3.5-stdlib linux-image-4.9.0-3-amd64 python3-distutils python3-lib2to3 python3.5 python3.5-minimal rename sgml-base tcpd
  xml-core
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

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

# apt autoremove

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

На этом обновление системы закончено. Если вы хотите обновить версию релиза, например Debian 9 обновить до Debian 10 Buster, то читайте отдельный материал.

Блог им. Lehik → Настройка vpn в Debian на основе pptpd

Я как-то уже писал про настройку VPN-сервера в Debian на основе OpenVPN, но т.к. у меня до конца не получилось ее реализовать(так и не смог заставить windows-клиентов подключаться, хотя в связке debian-debian vpn работал), я нашел другой способ — через pptp.
Итак начнем.(Основывался на статье )Сервер Debian 5.0.4. Все делаем из под root’а.1.

2. Редактируем /etc/pptpd.conf

Как я понял, адреса должны быть в той же сети что и все компы, чтоб клиент мог к ним обращаться, но не должны совпадать с существующими, это я думаю и так понятно.3. В /etc/ppp/chap-secrets задаем логин и пароль для авторизации

1-ое поле user — это имя пользователя
2-ое pptpd — я так понял это метка, которая объявляется в следующем конфиге
3-е 12345 — пароль
4-е * — ip-адрес, который будет присвоен клиенты с данным именем и паролем, если указана «*» то адрес будет выбран из указанного выше диапазона, но можно указать конкретный адрес из того же диапазона.4. Редактируем /etc/ppp/pptpd-options

но я ничего не добавлял.6. Если у кого-то не включен форвардинг необходимо включить

и поместить в скрипт, который будет добавлять автоматом при загрузке системы, это я описывать не буду, т.к. я это делал в другом месте, по-моему при настройке iptables. В ссылке выше, автор дает пример, куда можно поместить.
На этом настройка сервера завершена. Перезапускаем ppptpd:

Кому-то возможно придется настраивать firewall, т.к. появится новый интерфейс, скорее всего ppp0Настройка windows-клиента.
Я опишу это на примере windows 7.
Открываем Центр управления сетями о общим доступом — Настройка нового подключения — Подключение к рабочему месту — подключение с помощью VPN. Вводим ip-адрес(внешний, если подключаетесь через интернет) или DNS-имя компьютера и любое имя для названия подключения. Вводите имя и пароль который указали в конфиге выше(в /etc/ppp/chap-secrets). Ну вот в принципе и все.
P.S. Проблема с которой я столкнулся при подключении windows-клиентом, это что он портит маршруты, которые у вас есть если вы подключаетесь из работающей сети (например с работы) в другую (в удаленный офис). Чтоб старые маршруты остались нетронутыми, а только появился маршрут в новую сеть заходим в свойства VPN-подключения — вкладка сеть — свойства протокола Интернета TCP/IP v.4 — Дополнительно — На вкладке Параметры IP убираем галочку «Использовать основной шлюз в удаленной сети». Отключаем VPN-соединение и подключаем вновь. Все, теперь у Вас нормальные маршруты.
P.P.S. Еще одна проблема при подключении из windows — Иногда не может подключиться с первого раза, приходится несколько раз нажимать «Повторить» (иногда много раз :) )Настройка linux-клиента. На примере Debian1. Устанавливаем ppp-клиента.

2. В /etc/ppp/chap-secrets (или mschap-secrets, если используется шифрование mschap/mschap-v2)задаем логин и пароль для авторизации (как на сервере)

3. Создаем файл /etc/ppp/options.pptp.vpn. Вместо слова vpn может использоваться любое слово, которое вам удобно, это будет имя подключения, оно будет еще использоваться в следующих конфигах. Пишем в него:

4. Создаем файл /etc/ppp/peers/vpn и пишем в него

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

Если будут ошибки, то подключение прервется, у меня сначала были, я их не понимал, но было видно что ругается на MPPE, после чего я проверил чтоб в конфигах и на сервере и на клиенте была строчка require-mppe-128, после чего все подключилось. Если ошибок нет, то вывод просто остановится. Можно будет запустить второй терминал и проверить командой ifconfig -a что появился сетевой интерфейс ppp0, а также проверить наличие маршрута через ppp0 командой route
Если все нормально то подключаться можно командой

а отключаться

Чтоб не было проблем с маршрутами (как я описывал в примере с windows-клиентом) нужно добавить маршрут вручную в подключенную сеть (у меня это сеть 192.168.0.0)

Если после добавления маршрута все работает нормально, машины из удаленной сети видны, то можно добавление этого маршрута автоматизировать. Для этого создайте файл /etc/ppp/ip-up.d/vpn со следующим содержимым

сделайте его исполняемым

Все, теперь при запуске VPN’а у вас будет правильный маршрут. Ну вот на данный момент и все…Бонус :) Описание опций файлов /etc/pptpd.conf и /etc/ppp/options.pptpd в моей следующей .

Установка OpenVPN на клиенте

Запустите следующую команду для установки OpenVPN на клиентской машине.

apt-get install openvpn
mkdir -p /etc/openvpn/certs/

Настройки даны исходя из расположения файлов здесь:

  • /etc/openvpn/certs/ca.crt
  • /etc/openvpn/certs/client.crt
  • /etc/openvpn/certs/client.key
  • /etc/openvpn/certs/ta.key

Используя текстовый редактор, настройте конфигурацию OpenVPN клиента в ‘/etc/openvpn/client.conf‘ на клиенте. Пример конфигурации ниже:

client
remote 185.117.153.79
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tun
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

Обратите внимание на строку remote 185.117.153.79 – вам обязательно нужно заменить это значение на IP вашего собственного VPN сервера!

Запустите следующую команду для настройки OpenVPN запускаться при загрузке.

update-rc.d -f openvpn defaults

Запустите службу OpenVPN на клиенте.

service openvpn restart

Генерируем CA сертификат и CA ключ

Откройте файл ‘vars‘ и сделайте следующие изменения, но перед внесением изменений я предлагаю сделать резервную копию.

cd /root/easy-rsa
cp vars{,.orig}

Используя ваш текстовый редактор измените значения по умолчанию для easy-rsa.

vim ./vars

Например, добавьте в самый низ:

KEY_SIZE=4096
KEY_COUNTRY="TH"
KEY_PROVINCE="ChonBuri"
KEY_CITY="Pattaya"
KEY_ORG="MiAlConsorcium"
KEY_EMAIL="[email protected]"

Здесь я использую 4096 битный ключ. Вы можете по своему использовать 1024, 2048, 4096 или 8192 битный ключ.

Экспортируем величины по умолчанию выполнив.

source ./vars

Очистим все сертификаты, которые были сгенерированы ранее.

./clean-all

Далее запустите следующую команду для генерации сертификата CA и ключа CA.

./build-ca

Сгенерируйте сертификат сервера следующей командой. Вместо «server» можно подставить любое имя сервера.

./build-key-server server

Сгенерируйте PEM сертификат Diffie Hellman PEM.

./build-dh

Сгенерируйте клиентский сертификат. Вместо «client» можно подставить ваше имя клиента.

./build-key client

Сгенерируйте код HMAC.

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Скопируйте сертификаты на машины клиента и сервера следующим образом.

  •  Убедитесь, что ca.crt присутствует и на клиентской и на серверной машинах.
  • Ключ ca.key должен быть на машине, сгенерировавшей ключ.
  • Сервер требует server.crt, dh4096.pem, server.key и ta.key.
  • client.crt, client.key и ta.key должны быть на клиенте.

Для установки сертификатов на сервере запустите команды.

mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

Установка pptp сервера

Подразумеваю, что у вас установлен и настроен сервер.

Сначала установим pptp сервер:

Рисуем следующий конфиг /etc/pptpd.conf:

eth1:1 Виртуальный интерфейс. Нужен для передачи dhcp параметров клиентам pptp.
192.168.10.1 IP адрес pptp сервера в vpn сети
192.168.10.30-50 Диапазон адресов, которые будут назначены pptp пользователям в vpn сети

Редактируем файл с дополнительными параметрами /etc/ppp/options:

Не буду подробно описывать параметры, в интернете есть описание

Обращаю внимание на proxyarp, без него не будет работать задуманная схема, и на nodefaultroute. Если вам иногда нужно ставить пользователям vpn сервер в качестве шлюза по-умолчанию, закомментируйте этот параметр

Отключить шлюз можно будет вручную на клиенте.

Дальше создаем учетки для подключения в файле /etc/ppp/chap-secrets:

Первый столбец — имя пользователя, второй — тип сервера, он всегда один и тот же, третий — пароль, четвертый — ip адрес в vpn сети, который будет назначен клиенту. Если его явно не указать, то ему будет назначен первый свободный из диапазона remoteip в pptpd.conf.

На этом настройка непосредственно pptp сервера закончена. Им можно пользоваться, но маршруты пользователям передаваться не будут.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: