UNLim24 - якісний хостинг, VDS/VPS сервера, захист від ddos атак Хостинг, VDS/VPS сервера

Установка 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 
власне все.