Поднимаем PPTP VPN сервер в контейнере OрenVZ
Сам умный скрипт взят отсюда: http://www.putdispenserhere.com/pptp-debian-ubuntu-openvz-setup-script/
Но там не указаны некоторые подготовительные мероприятия. Во первых - на выключенном контейнере надо разрешить использование iptables и дать права на устройство ppp. Создаем контейнер. У меня это Ubuntu 14.04 minimal. Не запускаем его, а на хосте OpenVZ (в моем случае CentOS 6.6) делаем так: Подгружаем модули:
modprobe tun && modprobe ppp-compress-18 && modprobe ppp_mppe && modprobe ppp_deflate && modprobe ppp_async && modprobe pppoatm && modprobe ppp_generic && modprobe ip_gre
И добавляем в /etc/rc.modules:
/sbin/modprobe tun /sbin/modprobe ppp-compress-18 /sbin/modprobe ppp_mppe /sbin/modprobe ppp_deflate /sbin/modprobe ppp_async /sbin/modprobe pppoatm /sbin/modprobe ppp_generic /sbin/modprobe ip_gre
Даем необходимые права контейнеру:
vzctl set CTID --netfilter full --save vzctl set CTID --capability net_admin:on --save
Запускаем контейнер, создаем в нем устройство ppp и даем на него права:
vzctl start CTID vzctl exec CTID mknod /dev/ppp c 108 0 vzctl set CTID --devices c:108:0:rw --save
Теперь заходим в контейнер, скачиаем или создаем скрипт и выполняем его:
vzctl enter CTID wget https://raw.github.com/cwaffles/ezpptp/master/ezpptp.sh chmod +x ezpptp.sh && ./ezpptp.sh
Вот текст скрипта:
#!/bin/bash # Interactive PoPToP install script for an OpenVZ VPS # Tested on Debian 5, 6, and Ubuntu 11.04 # April 2, 2013 v1.11 # http://www.putdispenserhere.com/pptp-debian-ubuntu-openvz-setup-script/ echo "######################################################" echo "Interactive PoPToP Install Script for an OpenVZ VPS" echo echo "Make sure to contact your provider and have them enable" echo "IPtables and ppp modules prior to setting up PoPToP." echo "PPP can also be enabled from SolusVM." echo echo "You need to set up the server before creating more users." echo "A separate user is required per connection or machine." echo "######################################################" echo echo echo "######################################################" echo "Select on option:" echo "1) Set up new PoPToP server AND create one user" echo "2) Create additional users" echo "######################################################" read x if test $x -eq 1; then echo "Enter username that you want to create (eg. client1 or john):" read u echo "Specify password that you want the server to use:" read p # get the VPS IP ip=`ifconfig venet0:0 | grep 'inet addr' | awk {'print $2'} | sed s/.*://` echo echo "######################################################" echo "Downloading and Installing PoPToP" echo "######################################################" apt-get update apt-get -y install pptpd echo echo "######################################################" echo "Creating Server Config" echo "######################################################" cat > /etc/ppp/pptpd-options <<END 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 END # setting up pptpd.conf echo "option /etc/ppp/pptpd-options" > /etc/pptpd.conf echo "logwtmp" >> /etc/pptpd.conf echo "localip $ip" >> /etc/pptpd.conf echo "remoteip 10.1.0.1-100" >> /etc/pptpd.conf # adding new user echo "$u * $p *" >> /etc/ppp/chap-secrets echo echo "######################################################" echo "Forwarding IPv4 and Enabling it on boot" echo "######################################################" cat >> /etc/sysctl.conf <<END net.ipv4.ip_forward=1 END sysctl -p echo echo "######################################################" echo "Updating IPtables Routing and Enabling it on boot" echo "######################################################" iptables -t nat -A POSTROUTING -j SNAT --to $ip # saves iptables routing rules and enables them on-boot iptables-save > /etc/iptables.conf cat > /etc/network/if-pre-up.d/iptables <<END #!/bin/sh iptables-restore < /etc/iptables.conf END chmod +x /etc/network/if-pre-up.d/iptables cat >> /etc/ppp/ip-up <<END ifconfig ppp0 mtu 1400 END echo echo "######################################################" echo "Restarting PoPToP" echo "######################################################" sleep 5 /etc/init.d/pptpd restart echo echo "######################################################" echo "Server setup complete!" echo "Connect to your VPS at $ip with these credentials:" echo "Username:$u ##### Password: $p" echo "######################################################" # runs this if option 2 is selected elif test $x -eq 2; then echo "Enter username that you want to create (eg. client1 or john):" read u echo "Specify password that you want the server to use:" read p # get the VPS IP ip=`ifconfig venet0:0 | grep 'inet addr' | awk {'print $2'} | sed s/.*://` # adding new user echo "$u * $p *" >> /etc/ppp/chap-secrets echo echo "######################################################" echo "Addtional user added!" echo "Connect to your VPS at $ip with these credentials:" echo "Username:$u ##### Password: $p" echo "######################################################" else echo "Invalid selection, quitting." exit
Все. Если ваш PPTP VPN аходится за NAT, то пробрасываем к нему GRE и PPTP - порты 47 UDP и 1723 TCP
Discussion