Настройка хоста
Загрузка необходимых модулей
Добавьте следующие модули в файл /etc/modules:
sudo nano /etc/modules
ppp-compress-18 ppp_mppe ppp_deflate ppp_async pppoatm ppp_generic ip_gre nf_nat_pptp
Включение IP Forwarding
В файле /etc/sysctl.conf раскомментируйте строку:
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
Примените изменения:
sudo sysctl -p
Проброс GRE и PPTP (если сервер за NAT)
Необходимо пробросить протокол GRE и порт 1723/TCP на IP-адрес LXC-контейнера.
Добавьте правила в конфигурацию ferm:
sudo nano /etc/ferm/ferm.conf
# REAL IP
@def $myip = (XXX.XXX.XXX.XXX/32);
# LXC PPTP IP
@def $pptpip = (XXX.XXX.XXX.XXX/32);
@def &FORWARD($proto, $dstaddr, $port, $dest, $dport) = {
table filter chain FORWARD daddr $dest proto $proto dport $port ACCEPT;
table nat chain PREROUTING daddr $dstaddr proto $proto dport $port DNAT to "$dest:$dport";
}
@def &FORWARD_PROT($proto, $dstaddr, $dest) = {
table filter chain FORWARD daddr $dest proto $proto ACCEPT;
table nat chain PREROUTING daddr $dstaddr proto $proto DNAT to "$dest";
}
# PPTP redirect
&FORWARD(tcp, $myip,1723, $pptpip,1723);
&FORWARD(udp, $myip,47, $pptpip,47);
&FORWARD_PROT(gre, $myip, $pptpip);
Примените правила:
sudo service ferm reload
Добавление устройства в LXC-контейнер
Определение параметров устройства
sudo ls -ls /dev/ppp
Пример вывода:
crw------- 1 root root 108, 0 /dev/ppp
Разрешение доступа к устройству
sudo nano /var/lib/lxc/[container_name]/config
lxc.cgroup.devices.allow = c 108:0 rwm
Настройка контейнера
Установка пакетов
apt-get install wget nano iptables
Настройка rc.local
nano /etc/rc.local
#!/bin/sh -e exit 0
Создание systemd-сервиса
nano /etc/systemd/system/rc-local.service
[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target
Активация сервиса
touch /etc/rc.local chmod +x /etc/rc.local systemctl enable rc-local systemctl start rc-local.service systemctl status rc-local.service
Инициализация устройства PPP
nano /etc/rc.local
mknod /dev/ppp c 108 0 chmod 0666 /dev/ppp service pptpd restart
Установка PPTP-сервера
wget https://ruii.ru/scripts/pptp.sh
Ответьте на вопросы скрипта, затем перезагрузите контейнер.
Включение отладки
nano /etc/ppp/options
debug
Перезапуск сервисов:
service rsyslog restart service pptpd restart
TAGS: PPTP, LXC, VPN, Linux, PPP, GRE, iptables