Существует несколько способов сжечь книгу. И мир полон людей, бегущих с зажженными спичками.
«Звук бегущих ног», Рей Бредбери
Лирическое вступление
Наиболее устойчивые системы — децентрализованные и, к счастью, интернет из их числа. Своим появлением эта технология изменила всё. Никогда ранее не было возможно так просто обмениваться знаниями и новостями, иметь свободный доступ к практически любой точке земного шара. Это позволяет любому мнению быть услышанным — и это прекрасно и очень важно.
К сожалению, кроме людей созидающих знания, есть люди запрещающие знания. Запрещать знания — попросту глупо: знание есть знание, у него нет никакой моральной подоплеки, но оно, определенно, может быть кому-то не выгодно. И потому жгли людей, потом книги, теперь же они открыли для себя интернет. Но с интернетом такой фокус уже не пройдет. Потому что нам на помощь спешит VPN — виртуальные тоннели, с помощью которых мы будем выходить в интернет, например, из Амстердама, на самом же деле потягивая чаек из натурального русского самовара.
Установка сервера PPTP
Для начала потребуется сервер, находящийся в той точке мира, через которую вы хотите выходить в сеть, с установленным на него Docker и утилитой Docker Compose. Для этого можно использовать виртуальные сервера от Amazon или DigitalOcean — путь от регистрации до работающего сервера займет несколько минут.
Создайте директорию /docker-apps/pptpd и разместите в ней следующие файлы.
# /docker-apps/pptpd/pptpd.conf
option /etc/ppp/pptpd-options
pidfile /var/run/pptpd.pid
localip 192.168.127.1
remoteip 192.168.127.100-199
# /docker-apps/pptpd/pptpd-options
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4
В этом файле описаны данные, которые потребуются для подключения к нашему серверу:
# /docker-apps/pptpd/chap-secrets
username1 * password1 *
username2 * password2 *
И, наконец, конфигурация для запуска демона в контейнере Docker:
# /docker-apps/pptpd/docker-compose.yml
pptpd:
image: astartsky/pptpd
ports:
- 1723:1723
volumes:
- ./pptpd.conf:/etc/pptpd.conf
- ./pptpd-options:/etc/ppp/pptpd-options
- ./chap-secrets:/etc/ppp/chap-secrets
privileged: true
net: host
restart: always
На настройках запуска этого контейнера стоит остановиться поподробнее.
К сожалению, Docker на данный момент умеет форвардить с сетевого интерфейса хоста на виртуальный сетевой интерфейс контейнера только протоколы TCP и UDP. Так как протокол PPTPD также использует GRE для передачи данных, требуется запускать этот контейнер с сетью в режиме «host». Это означает, что контейнер будет использовать родной сетевой интерфейс своего хоста, а не виртуальный собственный — следовательно, форвардинг не потребуется вовсе. Не самое красивое решение, поэтому будем надеяться, что Docker скоро научится форвардить GRE тоже.
Торжественный запуск
cd /docker-apps/pptpd/
docker-compose up -d
Ура!