UNLim24 - quality hosting, VDS/VPS servers, protection against ddos attacks Hosting, VDS/VPS servers

Установка VPN-сервера PPTP для FreeBSD, Linux

Установка VPN-сервера PPTP для FreeBSD

Инсталляция проводилась на чистый сервер на шаблоне программного обеспечения KVM-FreeBSD-8.2-i386-minimal. На него был установлен сервер mpd5 (Multi-link PPP daemon), выход в интернет будет осуществляться через этот сервер используя трансляцию адресов (NAT) с компьютера под управлением Windows Vista.
Работать MPD будет только на виртуальном сервере с виртуализацией KVM или на выделенном сервере.
Преимущество использвания MPD перед сервером OpenVPN в том, что не требуется установка дополнительного ПО на клиентские компьютеры и их настройках гораздо проще - требуется ввести в настройках подключения только адрес сервера и логин и пароль.

Содержание

VPN-сервер MPD5 на FreeBSD 9.2-RELEASE

Установка MPD5

Подключитесь к серверу по протоколу SSH и установите дерево портов
portsnap fetch extract
После того как порты будут установлены необходимо произвести установку mpd5
cd /usr/ports/net/mpd5
make install clean
Опции на стадии configure (вернуться к ним можно потом можно используя команду make config) оставьте по-умолчанию (все галочки сняты)
После успешной компиляции следует его настроить
Скопируйте файл примера конфигурации в реальный конфиг
cp /usr/local/etc/mpd5/mpd.conf.sample /usr/local/etc/mpd5/mpd.conf
и отредактируйте его в текстовом редакторе
vi /usr/local/etc/mpd5/mpd.conf
В самом начала есть секция которая начинается с параметра default:
default:
load dialup
Изменим load dialup на load pptp_server
Затем отредактируем секцию pptp_server в этом же файле:
Здесь задаются адреса, выдаваемые VPN-клиентам (тут можно указать внешние IP) в виде
set ippool add pool1 <первыйIPдиапазона> <последнийIPдиапазона>
Например так:
set ippool add pool1 192.168.1.50 192.168.1.99
пул адресов который назначается клиентам (тут можно указать внешние IP). У меня используются уже адреса из сети 192.168.1.0/24 так как я подключен к интернет через ADSL-модем и он выдает такой адрес (большинство использует эту сеть по-умолчанию). Меняем на другую сеть для частных IP-адресов (из RFC 1918)
set ippool add pool1 172.17.0.2 172.17.0.50
Далее внесите также правки изменив на свои адреса адрес который будет являться шлюзом и DNS-сервером
set ipcp ranges 172.17.0.1/32 ippool pool1
set ipcp dns 172.17.0.1
Строку
set ipcp nbns 192.168.1.4
просто удалите или закомментируйте
Укажите также адрес на котором будем принимать подключения - реальный IP-адрес вашего VDS-сервера
set pptp self 149.154.10.10

Изменения в файле конфигурации в diff-формате (diff mpd.conf.sample mpd.conf):
31c31
<       load dialup
---
>       load pptp_server
184c184
<       set ippool add pool1 192.168.1.50 192.168.1.99
---
>       set ippool add pool1 172.17.0.2 172.17.0.50
193,195c193,194
<       set ipcp ranges 192.168.1.1/32 ippool pool1
<       set ipcp dns 192.168.1.3
<       set ipcp nbns 192.168.1.4
---
>       set ipcp ranges 172.17.0.1/32 ippool pool1
>       set ipcp dns 172.17.0.1
220c219
<         set pptp self 1.2.3.4
---
>         set pptp self 149.154.10.10
Теперь отредактируйте файл паролей и добавьте пользователей:
vi /usr/local/etc/mpd5/mpd.secret
vpnuser password
vpnuser1 password1
Можно также указывать статический внешний адрес добавив его 3м параметром в строке так:
vpnuser1 password1 <внешнийIPдляПользователя1>
vpnuser2 password2 <внешнийIPдляПользователя2>
Также поправьте права на файлы для большей безопасности c 644 на 600 (владелец файлов root:wheel)
chmod 600 /usr/local/etc/mpd5/*
Добавьте mpd в автозапуск в файл /etc/rc.conf
echo 'mpd_enable=YES' >> /etc/rc.conf
и пропишите туда же необходимые опции:
echo 'mpd_flags="-b"' >> /etc/rc.conf
echo 'gateway_enable="YES"' >> /etc/rc.conf
Запустите VPN-сервер:
/usr/local/etc/rc.d/mpd5 start

Настройка DNS-сервера

Нам понадобится DNS-сервер на VDS чтобы использовать его для разрешения имен сайтов в IP адреса.
Отредактируйте файл конфигурации named:
vi /etc/namedb/named.conf
и закомментируйте символами // строку или удалите
listen-on       { 127.0.0.1; };
и добавьте
allow-recursion { 127.0.0.1; 172.17.0.0/24;};
После чего добавьте в автозапуск и запустите
echo "named_enable=YES" >> /etc/rc.conf && /etc/rc.d/named start

Первоначальная проверка работоспособности

В принципе можно уже пробовать подключаться со своего компьютера к VPN-серверу - создайте подключение к удаленному рабочему месту со всеми настройками по-умолчанию и подключитесь.
С вашего компьютера должны работать команды ping 172.17.0.1, nslookup yandex.ru, вы сможете подключится по ssh к адресу 172.17.0.1
C:\>ping 172.17.0.1

Обмен пакетами с 172.17.0.1 по с 32 байтами данных:
Ответ от 172.17.0.1: число байт=32 время=100мс TTL=64
Ответ от 172.17.0.1: число байт=32 время=100мс TTL=64
Ответ от 172.17.0.1: число байт=32 время=100мс TTL=64
Ответ от 172.17.0.1: число байт=32 время=101мс TTL=64

Статистика Ping для 172.17.0.1:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 100мсек, Максимальное = 101 мсек, Среднее = 100 мсек

C:\>nslookup yandex.ru
Server:  UnKnown
Address:  172.17.0.1

Неофициальный ответ:
Name:    yandex.ru
Addresses:  213.180.193.11
          213.180.204.11
          77.88.21.11
          87.250.250.11
И на самом сервере будет видно командой ifconfig поднятный тунель.
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396
inet 172.17.0.1 --> 172.17.0.2 netmask 0xffffffff
Все пакеты будут отправляться в туннель (так как в настройках TCP/IP-протокола в windows в свойствах VPN-подключения по-умолчанию стоит флажок Использовать основной шлюз в удаленной сети и пропадать оставаться там, так как нет трансляции адресов.

Настройка NAT

Теперь следует настроить NAT для трансляции IP-адресов чтобы можно выходить в интернет через VPN-сервер
Используйте для этого штатный ipfw nat. Добавьте в /etc/rc.conf следующие строки
echo 'gateway_enable=YES' >> /etc/rc.conf
echo 'firewall_enable=YES' >> /etc/rc.conf
echo 'firewall_type="/etc/firewall.conf"' >> /etc/rc.conf
И, собственно, сам firewall - отредактируйте /etc/firewall.conf чтобы он содержал строки
nat 1 config if re0 reset same_ports
add nat 1 ip from any to any via re0
add allow ip from any to any
Теперь включите forward между интерфейсами и перечитайте правила firewall
sysctl net.inet.ip.forwarding=1
nohup /etc/rc.d/ipfw restart &
Внимание. Если вы где-либо ошиблись в firewall, то будет правило по-умолчанию deny from any и вам придется подключаться к локальной консоли VDS-сервера через VNC-протокол чтобы исправить это.
Поэтому можно воспользоваться скриптом change_rules.sh для установки правил
sh /usr/share/examples/ipfw/change_rules.sh
где в окне редактора vi который будет запущен через данный скрипт установить нужные правила и применить их. При этом если в течение 30 секунд не будет нажато y (отключился терминал), то правила не будут установлены и будут восстановлена предыдущая конфигурация.
Если все успешно, то подключившись по VPN к серверу вы увидете что пакеты в интернет отправляются через него
C:\>tracert ya.ru

Трассировка маршрута к ya.ru [77.88.21.3]
с максимальным числом прыжков 30:

  1   155 ms   100 ms   102 ms  172.17.0.1
  2   102 ms   102 ms   102 ms  gw.webdc.ru [188.120.247.254]
  3   104 ms   101 ms   101 ms  xe200-40.webdc.ru [92.63.108.89]
  4   103 ms   104 ms   103 ms  msk-ix-m10.yandex.net [193.232.246.93]
  5   104 ms   102 ms   105 ms  l3-s3500-marionetka.yandex.net [213.180.213.76]
  6     *        *        *     Превышен интервал ожидания для запроса.
  7   104 ms   104 ms   105 ms  www.yandex.ru [77.88.21.3]

Посмотреть также работу ipfw nat можно командой
 ipfw nat 1 show
На этом установка и настройка закончена.

Установка VPN-сервера PopTop на Debian-6-i386-minimal

Инсталляция проводилась на чистый сервер c шаблоном ПО KVM-Debian-6-i386-minimal. На него был установлен сервер PopTop, выход в интернет проводится осуществляться через этот сервер используя трансляцию адресов (NAT) с компьютера под управлением Windows 7 и Ubuntu.
Работать PopTop будет только на виртуальном сервере с виртуализацией KVM или на выделенном сервере.
Преимущество использования PopTop перед сервером OpenVPN в том, что не требуется установка дополнительного ПО на клиентские компьютеры и их настройках гораздо проще - требуется ввести в настройках подключения только адрес сервера и логин и пароль.

Установка VPN-сервера

С установкой ПО в Debian все просто
# apt-get install pptpd
выполнение этой нехитрой команды установит все необходимое ПО для организации VPN-туннеля, которое останется только настроить.
Для начала отредактируем /etc/pptpd.conf, приведя его к следующему виду
option /etc/ppp/pptpd-options # файл опций
logwtmp # логирование pptp-сессий в wtmp
localip 172.16.0.1 # внутренний IP VPN-сервера
remoteip 172.16.0.2-5 # внтуренние IP клиентов
теперь файл с опциями /etc/ppp/pptpd-options
name pptpd # имя туннеля
refuse-pap # отвергать авторизацию PAP
refuse-chap # отвергать авторизацию CHAP
refuse-mschap # отвергать авторизацию MSCHAP
require-mschap-v2 # требовать вторую версию авторизации MSCHAP
require-mppe-128 # требовать 128-битное шифрование
ms-dns 8.8.8.8 # адрес DNS-сервера, лучше указать IP VDS
logfile /var/log/pptpd.log # куда писать логи
lock # ставить лочку
nobsdcomp # отключить компрессию bsd
дальше нужно завести юзера, которым мы будем авторизовываться, можно даже нескольких в /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client	server	secret			IP addresses
user	pptpd	password	*

Настройка NAT

C VPN-сервером все, теперь надо сделать так, чтобы пакеты из нашей приватной сети могли попадать в интернет и обратно, для этого включаем форвардинг пакетов
# echo 1 > /proc/sys/net/ipv4/ip_forward
и настраиваем трансляцию IP-адресов
# iptables -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE 
# iptables -A POSTROUTING -o ppp0 -j SNAT --to-source 172.16.0.1 
собственно все.