Закортіло підняти VPN-сервер, з яким змогли б працювати всі пристрої (Android, Windows) тому, що старий добрий VPN піднятий на базі Cisco працював виключно через спеціальний додаток-клієнт. Нам хотілося працювати просто і без стороннього ПО, нехай навіть і просто запускається на стороні клієнта без всяких установок. Рішення було знайдено досить швидко, а головне безкоштовно. Для основи сервера була обрана Ubuntu Server 14.04 LTS, а в якості демона VPN був обраний pptpd. Процес установки Ubuntu я описувати не буду тому, що це простіше ніж здається. Всі дії проводилися на віртуальній машині, в якій з булочок було тільки наявність двох мережних адаптерів, а все інше на розсуд. Після встановлення та оновлення системи приступаємо до роботи над VPN-сервером. Для початку встановимо все що потрібно (на всякий випадок: ви або вже під рутом як і я, або все робите від рута через sudo). Встановимо pptpd:
apt-get install pptpd
Дозволяємо IP-forwarding. Для цього редагуємо файл /etc/sysctl.conf і в ньому або расскоментіруем, або додаємо наступний рядок, а якщо її немає:
Для прийняття змін до терміналі командуємо:
Правимо файл /etc/pptpd.conf і наводимо його до наступного вигляду:
option / etc / ppp / pptpd-options
logwtmp
localip 172.16.10.1
remoteip 172.16.10.10-100
localip 172.16.10.1
remoteip 172.16.10.1-100
Далі редагуємо файл / etc / ppp / chap-secrets:
user1 pptpd password «*»
user2 pptpd password «172.16.10.15»
Редагуємо файл / etc / ppp / pptpd-options:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
noipx
mtu 1400
mru 1400
Перезавантажуємо pptp сервер:
service pptpd restart
netstat -alpn | grep: 1 723
Якщо отримуємо щось схоже на те, що показано нижче, то все працює як треба.
# Netstat -alpn | grep: 1 723
tcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN 1756 / pptpd
Створюємо правила NAT для iptables:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables-save
Якщо хочемо, щоб клієнти бачили один одного в локальній мережі і могли обмінюватися файлами, то прописуємо наступні правила:
iptables -table nat -append POSTROUTING -out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables -append FORWARD -in-interface eth0 -j ACCEPT
На цьому все! Profit!