Вдоволь наигравшись с DigitalOcean, используя информацию в статье «Облака — ещё дешевле», прежде всего хочу поблагодарить tangro за качественный материал и поделиться с сообществом своими наработками.
Итак, допустим, что у нас есть образ и droplet на DigitalOcean.
Добавим в загрузку скрипт, который будет обновлять IP адрес в файле настроек PPTP и iptables.
Далее сделаем скрипт исполняемым файлом и добавим в автозагрузку:
Тут много лишнего кода, и метод, наверное, не самый лучший. Но оно работает.
Не забываем обновить image!
Дополнительные настройки PPTP для Ubuntu
Ставим NodeJS и клонируем вот этот репозитарий к себе.
В файле config.json пишем имя droplet, имя образа и ваш ключ API (брать тут).
После этого:
Эта «поделка» создаст droplet с указанным именем из указанного image, спросив регион и размер из списка доступных для данного образа регионов.
В новые регионы, извините, image переносить придется самостоятельно. Тут уж только вам решать.
Если droplet с таким именем существует — он будет удален.
После того, как скрипт удалит droplet, он скорее всего ничего не напишет.
После того, как создаст droplet, скрипт, выведет IP адрес нового droplet.
Droplet начнет нормально работать (приблизительно) через 2 минуты после окончания работы скрипта.
Данным скриптом можно автоматически управлять любым droplet, созданным из любого image, нет никакой привязки именно к PPTP.
Содержание
- Что бы не изменять конфиг PPTP сервера после каждого включения
- Решение возможных проблем при настройке PPTP на Ubuntu
- Решение возможных проблем при настройке PPTP на роутере
- Что бы не заниматься развертыванием/удалением droplet`а вручную
Итак, допустим, что у нас есть образ и droplet на DigitalOcean.
Чтобы не изменять конфиг PPTP сервера после каждого включения
Добавим в загрузку скрипт, который будет обновлять IP адрес в файле настроек PPTP и iptables.
/etc/init.d/pptpsd
#!/bin/bash
ip=`ifconfig eth0 | grep 'inet addr' | awk {'print $2'} | sed s/.*://`
start() {
cat > /etc/network/if-pre-up.d/iptables <<END2
#!/bin/sh
ip=\`ifconfig eth0 | grep 'inet addr' | awk {'print \$2'} | sed s/.*://\`
cat > /etc/iptables.conf <<END
# Generated by iptables-save v1.4.21 on Tue Jan 27 09:27:18 2015
*filter
:INPUT ACCEPT [288923:122111673]
:FORWARD ACCEPT [526803:377139302]
:OUTPUT ACCEPT [354423:281345292]
-A FORWARD -s 10.1.0.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
COMMIT
# Completed on Tue Jan 27 09:27:18 2015
# Generated by iptables-save v1.4.21 on Tue Jan 27 09:27:18 2015
*nat
:PREROUTING ACCEPT [15494:1053442]
:INPUT ACCEPT [255:13359]
:OUTPUT ACCEPT [37:2128]
:POSTROUTING ACCEPT [37:2128]
-A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Jan 27 09:27:18 2015
END
iptables-restore < /etc/iptables.conf
END2
chmod +x /etc/network/if-pre-up.d/iptables
/etc/network/if-pre-up.d/iptables
# 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
/etc/init.d/pptpd restart
}
stop() {
echo "stop"
}
status() {
echo "stat"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: {start|stop|restart}"
exit 1
;;
esac
exit $?
Далее сделаем скрипт исполняемым файлом и добавим в автозагрузку:
chmod +x /etc/init.d/pptpsd
sudo update-rc.d pptpsd defaults
Тут много лишнего кода, и метод, наверное, не самый лучший. Но оно работает.
Не забываем обновить image!
Решение возможных проблем при настройке PPTP на Ubuntu
Дополнительные настройки PPTP для Ubuntu
Ubuntu
Решение возможных проблем при настройке PPTP на роутере
Роутер
Удалить в файле /etc/ppp/pptpd-options все строки, кроме:
И обновить image, чтобы потом не удивляться, почему настройки не сохраняются.
В настройках роутера выбрать «PPTP/Russia-PPTP» (все производители пишут немного по своему).
ms-dns 8.8.8.8
ms-dns 8.8.4.4
И обновить image, чтобы потом не удивляться, почему настройки не сохраняются.
В настройках роутера выбрать «PPTP/Russia-PPTP» (все производители пишут немного по своему).
Чтобы не заниматься развертыванием/удалением droplet вручную
Ставим NodeJS и клонируем вот этот репозитарий к себе.
В файле config.json пишем имя droplet, имя образа и ваш ключ API (брать тут).
После этого:
npm install
node ./index.js
Эта «поделка» создаст droplet с указанным именем из указанного image, спросив регион и размер из списка доступных для данного образа регионов.
В новые регионы, извините, image переносить придется самостоятельно. Тут уж только вам решать.
Если droplet с таким именем существует — он будет удален.
После того, как скрипт удалит droplet, он скорее всего ничего не напишет.
После того, как создаст droplet, скрипт, выведет IP адрес нового droplet.
Droplet начнет нормально работать (приблизительно) через 2 минуты после окончания работы скрипта.
Данным скриптом можно автоматически управлять любым droplet, созданным из любого image, нет никакой привязки именно к PPTP.