Linux: свой собственный VPN-сервер на CentOS

В эпоху жесткого контроля за рунетом многие пользователи столкнулись(или столкнутся) с проблемой доступности некоторых ресурсов. Я только ЗА внедрение технологий, позволяющие безопасно и без страха за родных жить в стране. И я полностью поддерживаю госпожу Яровую. Реально ведь работает! Только не понятно, почему первые сайты, попавшие под «санкции», были всевозможные ресурсы p2p-сетей. И не важно, есть ли там запрещенный контент вообще. Пираты и всё! Один михалков попросил – правительство сделало. Но власти не остановились на достигнутом и октябре в первом же чтении была принята поправка федерального закона «Об информации, информационных технологиях». «Ну и ладно!» - думали многие пользователи до 01.11.2017, используя популярные VPN-серверы, анонимайзеры и так полюбившийся американским спецслужбам браузер Тор. Что дальше? Чисто теоретически заблокировать получится лишь плагины-анонимайзеры ко всем популярным браузерам ибо VPN, как сервис закрыть не получится, а Тор и клиенты к сервисам-анонимайзерам за пределами возможностей площадки М9. Штрафы за использование запрещенных средств установлены лишь на провайдеров, которые итак прогосударственные и выполняют требования очень быстро. «Физиков» ПОКА не трогают.
К чему ликбез? Пора заводить персональные VPN-туннели. Стоимость аренды VPS-серверов за пределами РФ не большая, а пользы в них все больше и больше. Для начала я взял стандартный тип туннеля – PPTP с протоколом MS-CHAP v2 и 128-ми битным шифрованием трафика. Его проще всего настроить в Windows, т.к. не требует установки дополнительного ПО.
Итак приступим к установке и настройке собственного VPN-сервера:
yum install pptpd -y
Сразу включим IP-маршрутизацию:
cp /etc/sysctl.conf /etc/sysctl.conf.old; echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf; sysctl -p
Приступим к основным настройкам pptpd:
cp /etc/pptpd.conf /etc/pptpd.conf.old; mcedit /etc/pptpd.conf

#Данный параметр включен по умолчанию и отвечает обращение к файлу с основными настройками:
option /etc/ppp/pptpd-options
#Запись небольшого лога по факту подключения и отключения пользователей:
logwtmp
#Укажем IP-адрес нашего сервера в создаваемой виртуальной сети:
localip 10.0.0.1
#И выделяем некий диапазон IP-адресов, назначаемых клиентам. Через мой сервер «бегать» будут всего 4 устройства, поэтому я выделил 4 адреса(ибо нефиг!)
remoteip 10.0.0.10-13

Продолжаем с более «тонким» настройкам нашего сервиса:
cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.old; mcedit /etc/ppp/options.pptpd

#Название сервиса:
name pptpd
#Запретим использование старых протоколов:
refuse-pap
refuse-chap
refuse-mschap
#Разрешаем к использованию MS-CHAP v2:
require-mschap-v2
#Указываем требование к шифрованию:
require-mppe-128
#Предоставим клиентам DNS-серверы гугла:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
# Блокируем соединения к «псевдо-терминалам»:
lock
# Отключаем BSD-компрессию, т.к. анализировать свой же трафик мы не будем:
nobsdcomp
# Также отключаем компрессию Вана Якобсона ибо машин на старых ОС не предвидится да и анализ собственного трафика меня все еще не интересует:
novj
novjccomp
# Отключаем вывод диагностических и отладочных сообщений. Включим, если что-то пойдет не так:
nologfd
# Прерываем подключения, которые не используются 2,5 часа
idle 8888

Далее приступим к настройкам авторизации пользователей:
cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.old; mcedit /etc/ppp/chap-secrets

#Для автоматического назначения IP-адреса пользователя tralyalya
tralyalya pptpd "password" *
#Если есть необходимость жесткой привязки IP-адреса к пользователю blablabla пишем:
blablabla pptpd "password" 10.0.0.11

Скорректируем права и владельца файла:
chmod 600 /etc/ppp/chap-secrets &&a chown root:root /etc/ppp/chap-secrets

Перезапускаем службу и разрешаем ее автозагрузку:
systemctl restart pptpd.service; systemctl enable pptpd.service

На всякий случай уточним порт pptpd(по умолчанию он 1723):
netstat -nlptu | grep pptpd

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT; iptables -A INPUT -p gre -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; service iptables save && systemctl restart iptables

Готово! =)

Запись опубликована в рубрике Заметки