User Tools

Site Tools


Sidebar


Здравствуйте!

Меня зовут Михаил!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Моя специализация - виртуализация!

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (910) 911-96-23

linux_faq:pptp_vpn_server_in_openvz_container

Поднимаем 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

Enter your comment. Wiki syntax is allowed:
N C B B T
 
linux_faq/pptp_vpn_server_in_openvz_container.txt · Last modified: 2015/11/21 19:58 by mike