PPTP (англ. Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.
PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля.
- Подключаемся к серверу по SSH с правами root.
- Добавляем в систему репозиторий PPTP.
Код
rpm -Uvh http://pptpclient.sourceforge.net/yum/stable/rhel5/pptp-release-current.noarch.rpm
Для CentOS 6:
Код
rpm -Uvh http://pptpclient.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
Устанавливаем PPTPd командой:
Для CentOS:
Код
yum -y install pptpd
Для Debian используется стандартный репозиторий:
Код
apt-get install pptpd
Открываем файл /etc/pptpd.conf любым текстовым редактором и в его конце добавляем:
Код
localip 10.10.1.1
remoteip 10.10.1.100-200
bcrelay eth0
remoteip 10.10.1.100-200
bcrelay eth0
Где:
- localip — IP виртуального сетевого интерфейса ppp0. Не нужно прописывать сюда внешний IP сервера, или IP других сетевых интерфейсов сервера;
- remoteip — диапазон клиентских адресов в количестве ста. Вы можете указать любое приемлемое значение;
- bcrelay eth0 — позволит передавать VPN клиентам широковещательные пакеты внутренней сети.
Код
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noipx
mtu 1400
mru 1400
ms-dns 8.8.4.4
noipx
mtu 1400
mru 1400
Создание NAT-правил для iptables
PPTP работает через TCP-порт 1723, он должен быть открыт. Например:
Код
nano run-iptables.sh
В него вставляем:
Код
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.10.0.0/24 -i ppp0 -j ACCEPT #подсеть, которая выставлена в /etc/pptpd.conf
iptables --append FORWARD --in-interface eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.10.0.0/24 -i ppp0 -j ACCEPT #подсеть, которая выставлена в /etc/pptpd.conf
iptables --append FORWARD --in-interface eth0 -j ACCEPT
Сохраняем, выходим.
Далее:
Код
chmod +x run-iptables.sh
./run-iptables.sh
service pptpd restart
./run-iptables.sh
service pptpd restart
Проверяем:
Код
netstat -alpn | grep :1723
Если получаем нечто похожее, значит все работает как надо.
Настройка пользователей
Имена пользователей и их пароли хранятся в файле /etc/ppp/chap-secrets. Поэтому добавить пользователя можно следующими способами:
В CentOS командой:
Код
vpnuser add username password
В Debian прямое добавление в файл chap-secrets:
Открываем файл любым текстовым редактором, например, nano:
Код
nano /etc/ppp/chap-secrets
Добавляем в файл через пробел следующие параметры:
Код
user1 pptpd password *
user2 pptpd password 10.10.1.100
user2 pptpd password 10.10.1.100
user1 получит свободный IP из указанного в /etc/pptpd.conf диапозона, а за user2 закреплен выделенный адрес.
Настройка форвардинга (Forwarding)
Очень важно включить форвардинг IP на Вашем PPTP-сервере. Это позволит Вам пересылать пакеты между публичным IP и приватными IP, которые Вы настроили при помощи PPTP.
Отредактируйте /etc/sysctl.conf.
Добавив следующую строку:
Код
net.ipv4.ip_forward = 1
Для применения изменений выполните команду:
Код
sysctl -p
Запуск PPTPd
Запуск pptp-сервера выполняется командой:
Код
service pptpd start
Если необходимо, чтобы pptpd запускался при старте системы в CentOS, выполняем команду:
Код
chkconfig --level 345 pptpd on