PPTP

Материал из Webko Wiki
Перейти к навигации Перейти к поиску

Point-to-Point Tunneling Protocol (PPTP) — метод реализации виртуальной частной сети. PPTP использует канал контроля над туннелями TCP и GRE для инкапсуляции PPP-пакетов.

Установка и настройка

yum install pptpd

Настройка производится в файле /etc/pptpd.conf. Пример:

vim /etc/pptpd.conf
# Обратитесь к man pptpd.conf для получения подробной информации о настройке

# Файл опций, который будет передан в pppd вместо стандартного /etc/ppp/options
# В данном примере: /etc/ppp/options.pptpd
option /etc/ppp/options.pptpd

# IP-адрес сервера в локальной сети (замените своим)
# В данном примере: 192.168.1.2
localip 192.168.1.2

# Диапазон адресов для клиентов PPTP-сервера (замените по своему усмотрению)
# В данном примере клиенты будут получать IP-адреса в диапазоне 192.168.1.234-238 и 192.168.1.245
remoteip 192.168.1.234-238,192.168.1.245
listen xxx.xxx.xxx.xxx

После чего отредактируйте файл опций /etc/ppp/options.pptpd. Пример:

vim /etc/ppp/options.pptpd
# Обратитесь к man pppd чтобы увидеть полный список доступных опций и их описание.

name pptpd         # Название локальной системы для целей авторизации
refuse-pap         # Отказывать авторизацию пирам, использующим PAP
refuse-chap        # Отказывать авторизацию пирам, использующим CHAP
refuse-mschap      # Отказывать авторизацию пирам, использующим MS-CHAP
require-mschap-v2  # Требовать авторизацию с использованием MS-CHAPv2
require-mppe-128   # Требовать использование MPPE с 128-битным шифрованием
proxyarp           # Добавлять запись в системную таблицу ARP
lock               # Обеспечить блокирование для монопольного доступа к последовательному устройству
nobsdcomp          # Отключить сжатие BSD-Compress
novj               # Отключить сжатие Вана Якобсона для заголовков
novjccomp          # Отключить сжатие идентификатора соединения
nolog              # Отличить логирование в файл
ms-dns 8.8.8.8     # Указываем первичный адрес DNS-сервера для клиентов Microsoft Windows
ms-dns 8.8.4.4     # Указываем вторичный адрес DNS-сервера для клиентов Microsoft Windows

Далее вам необходимо создать пользователей для авторизации в файле /etc/ppp/chap-secrets:

vim /etc/ppp/chap-secrets
# <Имя> <Название сервера> <Пароль> <IP-адреса>
user2    pptpd    123    *

Теперь вы сможете авторизоваться, используя имя "user2" и пароль "123" под любым IP-адресом. Далее необходимо включить форвардинг пакетов:

vim /etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward=1

Теперь примените все изменения, сделанные в конфигурационных файлах sysctl:

# sysctl --system


Настройка межсетевого экрана iptables

Ниже представлен пример конфигурации iptables для настройки межсетевого экрана.

# Пропускать все пакеты с интерфейсов ppp*, например ppp0
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A OUTPUT -o ppp+ -j ACCEPT

# Пропускать входящие соединения на порт 1723 (PPTP)
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT 

# Пропускать все пакеты GRE
iptables -A INPUT -p 47 -j ACCEPT
iptables -A OUTPUT -p 47 -j ACCEPT

# Включить форвардинг IPРешение проблем

iptables -F FORWARD
iptables -A FORWARD -j ACCEPT

# Включить NAT для интерфейсов eth0 и ppp*
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o ppp+ -j MASQUERADE

Решение проблем

Ошибка 619 на стороне клиента

Найдите и удалите (или закомментируйте) опцию logwtmp в файле /etc/pptpd.conf. С включенной опцией используется wtmp для записи лога подключений и отключений клиента.

pptpd[xxxxx]: Long config file line ignored

Добавьте пустую строку в конец файла /etc/pptpd.conf.

ppp0: ppp: compressor dropped pkt

Если при подключении клиента выводится это сообщение, добавьте скрипт /etc/ppp/ip-up.d/mppefixmtu.sh со следующим содержимым:

#!/bin/sh
CURRENT_MTU="`ip link show $1 | grep -Po '(?<=mtu )([0-9]+)'`"
FIXED_MTU="`expr $CURRENT_MTU + 4`"
ip link set $1 mtu $FIXED_MTU

После чего не забудьте сделать его исполняемым:

# chmod 755 /etc/ppp/ip-up.d/mppefixmtu.sh

или добавить в /etc/ppp/ip-up

ifconfig $1 mtu 1400