Эта статья - результат адаптации вот этой - PPTP VPN сервер в контейнере LXC на Ubuntu 16.04
Добавляем устройство ppp в профиль или контейнер LXD
Добавление профиля и устройства в него:
sudo lxc profile create device_ppp sudo lxc profile device add device_ppp dev_ppp unix-char path=/dev/ppp
И назначаем профиль контейнеру:
sudo lxc profile assign pptp device_ppp,default
Тут важно, что нужно перечислить все профили, назначаемые контейнеру.
Добавление устройства непосредственно в контейнер
В этом случае профиль можно не создавать.
sudo lxc config device add <ctname> dev_ppp unix-char path=/dev/ppp
iptables на хосте
В /etc/sysctl.conf включать net.ipv4.ip_forward=1 не обязательно.
У меня все заработало и с закомментированной строкой net.ipv4.ip_forward=1 на хосте.
Настройка контейнера
Устанавливаем то что нужно:
sudo apt-get install wget nano iptables iptables-persistent
Скачиваем скрипт для быстрой настройки PopTop - он акутален для Ubuntu 18.04:
wget https://raw.github.com/cwaffles/ezpptp/master/ezpptp.sh
В скрипте упоминается адаптер venet, однако в lxc он перeименовывается в eth0, поэтому:
sed -i 's/venet0:0/eth0/g' ezpptp.sh chmod +x ezpptp.sh & sudo ./ezpptp.sh
Отвечаем на вопросы скрипта, перезагружаем контейнер и проверяем. Если ваш PPTP VPN аходится за NAT, то пробрасываем к нему GRE и PPTP - порты 47 UDP и 1723 TCP
Включаем сервис:
sudo systemctl enable pptpd
В файлике /etc/pptpd.conf нужно прописать localip. В результате он будет выглядеть так:
option /etc/ppp/pptpd-options logwtmp localip 192.168.77.133 remoteip 10.1.0.1-100
Настраиваем iptables в контейнере
Без iptables клиенту будет доступен только сам контейнер. Для того, чтобы работала сеть нужно создать правило iptables.
sudo iptables -t nat -A POSTROUTING -j SNAT --to **VPNServer-IP-Address** sudo iptables-save | sudo tee /etc/iptables/rules.v4
Включаем debug pptpd
Poptop сыпет логи в syslogd в daemon.debug. Поэтому в Ubuntu 16.04 нужно отредактировать файлик /etc/rsyslog.d/50-default.conf или добавить новый в этой же диреткории и дописать туда:
daemon.debug /var/log/pptpd.log
В файлик /etc/ppp/options нужно добавить
debug
А затем перезапустить rsyslogd и pptpd:
sudo service rsyslog restart sudo service pptpd restart
Discussion