Поиск по сайту:

Как настроить собственный VPN с помощью PPTP


Статус: устарело

Эта статья устарела и больше не поддерживается.

Причина

Ubuntu 12.04 достиг конца срока службы (EOL) 28 апреля 2017 г. и больше не получает исправления или обновления безопасности.

Смотрите вместо этого

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

Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:

  • Как обновить Ubuntu 12.04 до Ubuntu 14.04.
  • Как перейти с Ubuntu 14.04 на Ubuntu 16.04
  • Как перенести данные сервера в поддерживаемую версию

вступление

Один из часто задаваемых вопросов от наших пользователей — как добавить еще один IP-адрес на свой сервер. Вы можете назначить дроплету свой собственный частный IP-адрес, создав VPN-туннель. Если вы хотите создать свою собственную виртуальную частную сеть (VPN) или назначить SSL-сертификат этому IP-адресу, у вас есть несколько вариантов. Из всех возможных вариантов самые оптимальные — между PPTP и OpenVPN. Протокол туннелирования «точка-точка» (PPTP) позволяет очень быстро реализовать собственную VPN и совместим с большинством мобильных устройств. Несмотря на то, что PPTP менее безопасен, чем OpenVPN, он также быстрее и использует меньше ресурсов процессора.

Шаг 1 - Установка PPTP

Вам нужно будет выбрать один сервер, который будет отвечать за передачу IP-адресов другим и аутентификацию всех ваших серверов в вашей VPN. Это станет вашим PPTP-сервером.

В CentOS 6 x64:

rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y install pptpd

В Ubuntu 12.10 x64:

apt-get install pptpd

Теперь вы должны отредактировать /etc/pptpd.conf и добавить следующие строки:

localip 10.0.0.1
remoteip 10.0.0.100-200

Где localip — это IP-адрес вашего сервера, а remoteip — это IP-адреса, которые будут назначаться клиентам, которые к нему подключатся.

Затем вы должны настроить аутентификацию для PPTP, добавив пользователей и пароли. Просто добавьте их в /etc/ppp/chap-secrets:

Где клиент — это имя пользователя, сервер — это тип службы — в нашем примере pptpd, секрет — это пароль, а IP-адреса указывают, какой IP-адрес может аутентифицироваться. Установив «*» в поле «IP-адреса», вы указываете, что вы будете принимать пару имя пользователя/пароль для любого IP-адреса.

Шаг 2. Добавьте DNS-серверы в /etc/ppp/pptpd-options.

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Теперь вы можете запустить демон PPTP:

service pptpd restart

Убедитесь, что он работает и принимает соединения:

Шаг 3 - Настройка переадресации

Важно включить переадресацию IP на вашем сервере PPTP. Это позволит вам пересылать пакеты между общедоступным IP-адресом и частными IP-адресами, которые вы настроили с помощью PPTP. Просто отредактируйте /etc/sysctl.conf и добавьте следующую строку, если ее там еще нет:

net.ipv4.ip_forward = 1

Чтобы сделать изменения активными, запустите sysctl -p

Шаг 4. Создайте правило NAT для iptables.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

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

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Теперь ваш PPTP-сервер также выступает в роли маршрутизатора.

Если вы хотите ограничить, какие серверы могут подключаться к вашим дроплетам, вы можете настроить правило iptables, которое ограничивает TCP-подключения к порту 1723.

Шаг 5 - Настройка клиентов

На ваших клиентских серверах установите клиент PPTP:

yum -y install pptp

Шаг 6 - Добавьте необходимый модуль ядра

modprobe ppp_mppe

Создайте новый файл /etc/ppp/peers/pptpserver и добавьте следующие строки, заменив имя и пароль своими значениями:

pty "pptp 198.211.104.17 --nolaunchpppd"
name box1
password 24oiunOi24
remotename PPTP
require-mppe-128

Где 198.211.104.17 — общедоступный IP-адрес нашего PPTP-сервера с именем пользователя «box1» и паролем «24oiunOi24», которые мы указали в файле /etc/ppp/chap-secrets на нашем PPTP-сервере.

Теперь мы можем «вызвать» этот PPTP-сервер, так как это протокол «точка-точка». Какое бы имя вы ни дали файлу пиров в /etc/ppp/peers/, оно должно использоваться в следующей строке. Поскольку мы назвали наш файл pptpserver:

pppd call pptpserver

Вы должны увидеть успешное подключение из журналов сервера PPTP:

На вашем PPTP-клиенте настройте маршрутизацию в вашу частную сеть через интерфейс ppp0:

ip route add 10.0.0.0/8 dev ppp0

Ваш интерфейс ppp0 должен появиться на клиентском сервере PPTP, и его можно проверить, запустив ifconfig

Теперь вы можете пропинговать свой PPTP-сервер и любых других клиентов, подключенных к этой сети:

Мы можем добавить нашего второго клиента PPTP в эту сеть:

yum -y install pptp
modprobe ppp_mppe

Добавьте в /etc/ppp/peers/pptpserver (заменив свои значения имени и пароля):

pty "pptp 198.211.104.17 --nolaunchpppd"
name box2
password 239Aok24ma
remotename PPTP
require-mppe-128

Теперь запустите на втором клиенте следующее:

pppd call pptpserver
ip route add 10.0.0.0/8 dev ppp0

Вы также можете пропинговать первого клиента, так как пакеты будут проходить через сервер PPTP и маршрутизироваться с использованием правил iptables, которые мы разместили ранее:

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

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

Вы можете использовать его с Nginx, Squid, MySQL и любым другим приложением, о котором вы только можете подумать.

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