Как настроить VPN с помощью PPTP
Введение
Один из часто задаваемых нашими пользователями вопросов - как добавить другой IP-адрес к их серверу. Вы можете назначить свой приватный IP-адрес Вашему дроплету путем создания VPN-туннеля. Для построения своей собственной виртуальной частной сети (VPN) или присвоения SSL-сертификата этому IP-адресу существует несколько вариантов. Из всех возможных вариантов наиболее оптимальным является выбор между PPTP и OpenVPN. Point-To-Point Tunneling Protocol (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
:
Здесь сlient
- это имя пользователя (логин), server
- тип сервиса (в нашем примере - pptpd), secret
- пароль, а в IP addresses
указывается, какие 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 - Настройка форвардинга (Forwarding)
Очень важно включить форвардинг 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-сервер также работает и как роутер.
Если Вы хотите установить ограничение на то, какие сервера могут соединяться с Вашими дроплетами, Вы можете задать правило для IP-таблиц, которое ограничивает 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-сервер. В следующей команде необходимо использовать имя, которое Вы дали файлу с пирами (peers) в директории /etc/ppp/peers/
. Поскольку в нашем примере мы назвали этот файл pptpserver
, наша команда выглядит следующим образом:
pppd call pptpserver
Вы должны увидеть успешное подключение в логах PPTP-сервера:
На Вашем PPTP-клиенте настройте маршрутизацию на Вашу приватную сеть через интерфейс ppp0:
ip route add 10.0.0.0/8 dev ppp0
Ваш интерфейс ppp0 должен быть настроен, что можно проверить путем запуска 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-сервер и перенаправляться по правилам ip-таблиц, которые мы задали ранее:
Такая настройка позволит Вам создать Вашу собственную виртуальную частную сеть:
Если Вы хотите, чтобы все ваши устройства общались безопасно в рамках одной сети, это наиболее быстрый способ сделать это.
Вы можете использовать такой подход совместно с Nginx, Squid, MySQL и любыми другими приложениями.
Поскольку трафик внутри сети шифруется 128-битным шифрованием, PPTP меньше нагружает процессор, чем OpenVPN, но все же обеспечивает дополнительный уровень безопасности Вашего трафика.
8 Comments