pptp на шлюзе

Понадобилось подключить очередной внешний кабинет сотрудникам. На этот раз от «Цифра 1». И эти мелкие пакостники выбрали свой джедайский путь, реализовав доступ через мелкомягкий VPN сервер. Более того, «специалист» на той стороне даже не понимал, что ходить и настраивать подключение на каждом ПК по их «инструкции для windows 7» не вариант, что бывает такая штука, как шлюз и линуксы. Впрочем, в цифре все такие странные, наверное.

 

Итак, на шлюзе делаем клиентское подключение по pptp и раздаём в локалку.

Устанавливаем pptp-linux
sudo apt-get install pptp-linux

Создаём и редактируем файл настроек подключения
sudo nano /etc/ppp/peers/cifra1

pty "pptp server_ip --nolaunchpppd"
name "username"
remotename cifra1
require-mppe-128 #обязательно указываем этот параметр шифрования
nodefaultroute
unit 12
persist
maxfail 10
holdoff 60
file /etc/ppp/options.pptp

Указываем пароль для подключения, внеся его в chap-secrets

sudo nano /etc/ppp/chap-secrets
"username" cifra1 "password"

Проверяем подключение
sudo pon cifra1 nodetach debug

Должен подняться интерфейс ppp12 (через параметр unit в настройках выше можно менять его номер)

В дальнейшем достаточно использовать

sudo pon cifra1

Добавляем ручками маршрут

sudo ip route add server_ip dev ppp12

Теперь пинги, wget или прочие команды должны показывать доступность сервера, в зависимости от допустимого трафика.

А вот дальше были долгие проблемы выяснить, почему трафик со шлюза идёт, а из локалки нет. Пока не разобрался, что нужно для pptp и gre отдельно модули указать, не выходило — gre не хочет по-умолчанию натиться.

Подгружаем модули. Вроде можно поменьше их указать, но я взял эти.
modprobe nf_nat_pptp
modprobe ip_conntrack_pptp
modprobe ip_nat_pptp
modprobe nf_nat_proto_gre
modprobe nf_conntrack_pptp
modprobe nf_conntrack_proto_gre

Разрешаем форвардинг между внутренним интерфейсом и вновь поднятым.

iptables -A FORWARD -i ppp12 -o $INT -m state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INT -o ppp12 -j ACCEPT

Завершаем включением маскарадинга. Пришлось сделать именно MASQUERADE, потому что локальный адрес для ppp12 выдавался динамический.
iptables -t nat -A POSTROUTING -o ppp12 -j MASQUERADE

 

И всё, из локалки, в том числе сквозь внутренние шлюзы, всё забегало.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

двадцать − 3 =