Отправляет email-рассылки с помощью сервиса Sendsay

Про хостинг

  Все выпуски  

Про хостинг Простая настройка VPN PPTP на любом сервере или VDS с XEN или KVM с системой CentOS


Не спрашивайте зачем, но возникла необходимость поднять очень много виртуальный машин для VPN доступа и выхода через них в сети Internet.

Плюс решение это должно быть не дорогим, кроссплатформенным и без труда настраиваться на клиентских девайсах.

Если смотреть в сторону не дорогого, то это однозначно VDS сервер. Цена на рынке начинается от 150 рублей. Но VDS сервер VDS серверу рознь, не каждый подойдет.

Что нам предлагает рынок?! В основном я встречал решения на OpenVZ, их порядка 80% из предложений на рынке, дальше идут XEN и KVM(QEMU) решения, их около 15%, немного встречается экзотики типа VMWare, и даже нашел особо упоротых ребят с извращенным JAIL под FreeBSD.

Ну да не суть, скажу сразу, OpenVZ нам не подойдет, потому что практически все хостеры на данной технологии не пробрасывают ppp в контейнеры, JAIL – даже страшно представить, VMWare подходит, но будет жутко дорого.

И да, самые приемлемые и вменяемые решения это решения на XEN и KVM(QEMU). Понимая как работают данные виды виртуализации, можно смело предположить что с ppp на виртуалках проблем не будет.

Теперь перейдем к выбору дистрибутива системы. Тут как говорится – на вкус и цвет. Я остановил свой выбор на CentOS 6. Соответственно и скрипт автонастройки писался под нее любимую.

Дальше, с виртуализацией определились. Теперь сам VPN. Тут вариантов уже не так много, но все такие есть из чего выбрать. Это и OpenVPN (годный продукт), и L2TP, и PPTP.

Хоть OpenVPN и хорош, но не для этой задачи. Будем считать что ставить дополнительный софт клиенту крайне нельзя. Поэтому отпадает. Остаются PPTP и L2TP. Они по умолчанию представлены на 95% устройств из коробки, как системные службы, уверен, даже на вашей микроволновке есть как минимум PPTP. Но и тут не все так гладко! Кажется, вот он, выбор очевиден, L2TP! Хороший быстрый и защищенный протокол, ан нет. Не все роизводители девайсов и ОС готовы осуществлять аккаунтинг только по логину и паролю (Mac OS X привет!), подавай им IPSEC, а это уже несколько выходит за рамки понимания процесса настройки девайса домохозяйкой. Отказываемся…

Остается PPTP, который с шифрованием подходит для решения поставленной задачи.

Хорошо, но мы-то помним, что серверов нам нужно развернуть over9000. Читатель скажет, puppet или chief тебе в помощь, и только в путь ставить pptp.

Но это не наш метод. Разбираться с кукбуками, настройками, дебагами чтобы поставить последовательно кучу серверов не захотелось, поэтому я решил написать скрипт автонастройки pptp.

Для начала расскажу что делает скрипт.

Скрипт для начала флушит цепочки файрволла, выкашивает системные pptp и ppp, после обновляет систему и ставит нужные нам pptp и ppp пакеты.

После установки пакетов скрипт вкорячиваем модули ядра и начинает править конфиги pptp.

После правки конфигов скрипт заводит одного пользователя с логином vpnи случайно сгенерированным паролем. Затем скрипт правит iptables, закидывает туда необходимы правила для NAT, разрешает GRE, сохраняет правила и добавляет нужные службы в автозагрузку сервера.

В финале работы скрипты выводит в консоль сообщение о том что все ОК, получите логин и пароль от вашего VPN сервера.

Как видите – ничего сложного. П большому счету для поднятия VPN PPTP сервера нам потребуется залогиниться на сервер, wget-ом качнуть скрипт, сделать его исполняемым, и запустить. Дальше, жутко высирая в консоль, скрипт установит PPTP сервер чуть менее чем за минуту.

Ну и чтобы не быть голословным, прикладываю сам скрипт:

#########################################################
# Script name: pptp-install.sh          		#
# Author: VMCLOUD LLC Team				#
# Author URL: https://vmcloud.su/			#
# Description: PPTP server auto install Script 		#
# WARNING: !!! CentOS only!!!   		        #
# License: GNU General Public License v2 or later       #
# License URI: http://www.gnu.org/licenses/gpl-2.0.html #
#########################################################

iptables --flush POSTROUTING --table nat
iptables --flush FORWARD

yum remove -y pptpd ppp
rm -rf /etc/pptpd.conf
rm -rf /etc/ppp

rpm -Uvh http://ftp-stud.hs-esslingen.de/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y -v update
yum -y -v install pptpd ppp dkms kernel_ppp_mppe make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers

modprobe ip_gre
modprobe ip_nat_pptp
modprobe ip_conntrack_pptp


mknod /dev/ppp c 108 0 
echo 1 > /proc/sys/net/ipv4/ip_forward 
echo "mknod /dev/ppp c 108 0" >> /etc/rc.local
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local
echo "localip 172.16.36.1" >> /etc/pptpd.conf
echo "remoteip 172.16.36.2-254" >> /etc/pptpd.conf
echo "ms-dns 8.8.8.8" >> /etc/ppp/options.pptpd
echo "ms-dns 8.8.4.4" >> /etc/ppp/options.pptpd

pass=`openssl rand 6 -base64`
if [ "$1" != "" ]
then pass=$1
fi

echo "vpn pptpd ${pass} *" >> /etc/ppp/chap-secrets

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -I INPUT -i eth0 -p gre -j ACCEPT
iptables -I INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -I FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -I FORWARD -i eth0 -o ppp+ -j ACCEPT

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

service iptables save
service iptables restart

chkconfig iptables on
chkconfig pptpd on
service pptpd start

echo "VPN service is installed, your VPN username is vpn, VPN password is ${pass}"

Собственно юзаем, после опубликую постоянную ссылку на этот скрипты, для curl и wget скачивания.

P.S. И да, вы правильно поняли, покупаете виртуалку за 150 рублей, запускаете в этот скрипт, получаете готовые логин и пароль, настраиваете на своем ПК VPN соединение, и вы ходите в интернет не со своего офисного/домашеного ip адреса.

P.P.S. Скрипт естественно предоставлен в ознакомительных целях, используете на свой страх и риск, и не говорите что я вас не предупреждал, мои маленькие любители по-шифроваться :)

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru


В избранное