Настройка VPN на VPS, pptp под управлением Centos
1. Установка PPTP
Устанавливаем PPTP-сервер:
rpm -Uvh http://pptpclient.sourceforge.net/yum/stable/rhel5/pptp-release-current.noarch.rpm
yum -y install pptpd
2. Настройка PPTP-сервера
Разрешаем форвард пакетов, в файле /etc/sysctl.conf меняем значение net.ipv4.ip_forward с 0 на 1. Обновляем параметры командой:
sysctl -p
Добавляем в файл /etc/pptpd.conf, адрес шлюза и список адресов выдаваемых клиентским компьютера.
localip 192.168.1.1 # адрес шлюза
remoteip 192.168.1.200-250 # список выдаваемых адресов
Переходим к конфигурационному файлу /etc/ppp/options.pptpd
# имя сервера - используется для аутентификации
name pptpd
# Список протоколов проверки пароля
- refuse-pap# Не зашифрованный пароль PAP
- refuse-chap # Протокол проверки пароля CHAP
- refuse-mschap# Протокол проверки пароля MS-CHAP
- require-mschap-v2# Протокол проверки пароля MS-CHAP v2
- require-mppe-128 # Использовать MPPE128 шифрование при проверке пароля MS-CHAP v2
- ms-dns 192.168.1.2 # По умолчанию параметр закомментирован, используется для передачи параметров локального DNS-сервера клиентскому ПК
- ms-wins 192.168.1.2 # По умолчанию параметр закомментирован, используется для передачи параметров локального WNS-сервера клиентскому ПК
Добавляем пользователей. Для PAP-аутентификации используется файл /etc/ppp/pap-secrets, для CHAP/MSCHAP – /etc/ppp/chap-secrets. Оба файла имеют по сути одинаковую структуру.
vpnuser add login password
После этого в файле /etc/ppp/chap-secrets должен появиться пользователь с логином login и паролем password.
Включаем в автозагрузку и запускаем сервис pptpd
chkconfig pptpd on
service pptpd start
3. Настройка IPTABLES
Для разных случаев настройка iptables отличается. В данном случае приведено описание базового варианта.
eth0 – смотрит в инетрнет;
eth1 – локальная сеть;
По умолчанию установлено OUTPUT ACCEPT (исходящий трафик разрешен), FORWARD DROP (форвардинг пакетов запрещен), INPUT DROP (входящий трафик запрещен).
Разрешаем входящие подключения на TCP порт 1723 и по протоколу GRE через внешний интерфейс eth0:
iptables -A INPUT -i eth0 -p gre -j ACCEPT
iptables -A INPUT -i eth0 -m tcp -p tcp --dport 1723 -j ACCEPT
service iptables save
При создании каждого подключения pptp создается виртуальный интерфейс ppp, этому интерфейсу присваивается внутренний адрес VPN-клиента. Когда клиент один все просто – пара разрешающих правил и все готово, но когда клиентов становится больше остаются два варианта: либо смягчить правила разрешив доступ со всех интерфейсов ppp и всего пула remoteip в локальную сеть и обратно, либо создавать и удалять правила динамически.
Для закрытия подключения создайте файл скрипта /etc/ppp/ip-down.local, он автоматически будет запускаться перед удалением интерфейса ppp при отключении клиента:- #!/bin/sh
- PPTP_IF=$1 # Имя виртуального интерфейса ppp
- PPTP_ADDR=$5 # Внутренний IP адрес клиента
- LOCAL_NET_IF="eth1" # Локальный интерфейс нашего сервера удаляем правила созданные скриптом ip-up.local
- iptables -D FORWARD -i ${PPTP_IF} -s ${PPTP_ADDR} -o ${LOCAL_NET_IF} -j ACCEPT
- iptables -D FORWARD -i ${LOCAL_NET_IF} -d ${PPTP_ADDR} -o ${PPTP_IF} -j ACCEPT
- iptables -D INPUT -i ${PPTP_IF} -j ACCEPT
4. Заключение.
PPTP проста в настройке и при установке. Она не требует от пользователя никаких знаний и навыков в ИТ сфере, для ее подключения, которое организовывается на основе стандартного программного обеспечения ОС.
Основным недостатком является слабая защищенность и плохая устойчивость против атак.





