PPTP
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