Установка VPN-сервера PPTP для FreeBSD
Зміст |
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
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просто видаліть або закоментуйте
set pptp self 149.154.10.10
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
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
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-підключення за замовчуванням стоїть прапорець Використовувати основний шлюз в віддаленої мережі і пропадати залишатися там, так як немає трансляції адрес.
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-протокол щоб виправити це.
sh /usr/share/examples/ipfw/change_rules.shде у вікні редактора vi який буде запущений через даний скрипт встановити потрібні правила і застосувати їх. При цьому якщо протягом 30 секунд не натиснуто y (відключився термінал), то правила не будуть встановлені і будуть відновлена попередня конфігурація.
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 1 showНа цьому установка і настройка закінчена.
# apt-get install pptpdвиконання цієї нехитрої команди встановить все необхідне ПО для організації VPN-тунелю, яке залишиться тільки налаштувати.
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 *
# 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власне все.