Записки IT специалиста
Данной статьей мы продолжим тему настройки коммутируемых соединений в среде Ubuntu Server. Сегодня рассмотрим настройку PPTP подключений, которые могут использоваться как для подключения к интернету, так и для организации корпоративных сетей. Несмотря на то, что материал рассчитан в первую очередь на системных администраторов, он будет полезен всем пользователям Linux.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Для работы Ubuntu Server в качестве PPTP-клиента необходимо установить пакет pptp-linux:
sudo apt-get install pptp-linux
Основные настройки пакета, применяемые ко всем PPTP соедниненям по умолчанию хранятся в /etc/ppp/options.pptp, в большинстве случаев менять их нет необходимости, однако вы можете добавить какие-то свои опции, общие для всех соединений.
Для настройки подключения создадим в /etc/ppp/peers файл настроек с его именем:
sudo touch /etc/ppp/peers/test-vpn
Откроем его и внесем следующее содержимое:
pty "pptp vpn.server.local --nolaunchpppd" #тип и адрес сервера
name vpnuser #логин
remotename TEST #имя соединения
require-mppe-128 #включаем поддержку MPPE
nodefaultroute #не создавать маршрут по умолчанию
unit 12 #номер ppp интерфейса
persist #переподключаться при обрыве
maxfail 10 #количество попыток переподключения
holdoff 15 #интервал между подключениями
file /etc/ppp/options.pptp
ipparam $TUNNEL
В нашем примере создано PPTP подключение для корпоративной сети, поэтому мы добавили опцию «не создавать маршрут по умолчанию», если вы настраиваете соединение для доступа в интернет, то нужно наоборот разрешить создание нулевого маршрута, для этого укажите опции:
defaultroute #создавать маршрут по умолчанию
replacedefaultroute #принудительно изменять маршрут по умолчанию
Опция «включаем поддержку MPPE» не является обязательной и требуется только тогда, когда сервер использует этот тип шифрования. Номер ppp интрефейса создает для подключения всегда один и тот же сетевой интерфейс, в нашем случае это будет ppp12.
Отдельно стоит остановиться на наборе опций для автоматического переподключения. Мы настоятельно советуем ограничить количество попыток (0 — неограничено) разумным числом и не ставить слишком маленький промежуток времени. Это позволит ограничить нагрузку на VPN-сервер в случае проблем с подключением (например нет денег на балансе или изменились учетные данные).
Если вы подключаетесь к доменной сети, то имя пользователя следует указывать следующим образом:
Теперь укажем авторизационные данные для нашего пользователя, для этого в файл /etc/ppp/chap-secrets добавим следующую строку:
которая предусматривает использование указанных учетных данных, где vpnpassword -пароль соединения, для удаленного соеднинения TEST (это имя мы указали в опции remotename). Для доменного пользователя строка будет выглядеть так:
"DOMAIN\\vpnuser" TEST "vpnpassword"
Теперь самое время проверить наше соединение. Первый раз лучше запустить его в интерактивном режиме, тогда все сообщения об ошибках и ходе подключения вы будете видеть прямо в консоли:
В консоли сервера также видим подключившегося клиента:
В дальнейшем управлять соединением можно при помощи команд pon и poff (подключить и отключить соответственно).
Чтобы автоматически поднимать соединение при запуске системы в файл /etc/network/interfaces добавим секцию:
auto tunnel
iface tunnel inet ppp
provider test-vpn
Для доступа в корпоративную сеть может понадобиться добавление статических маршрутов, это тоже можно делать автоматически, для этого в конец созданой секции добавим строку:
up route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.222
Мы привели реальный маршрут используемый в нашем случае, вы должны указать здесь свои данные, если они не известны — уточните их у системного администратора.
Перезапустим сеть и убедимся что все работает правильно:
sudo /etc/init.d/networking restart
Для получения списка маршрутов воспользуйтесь командой route, также можно пропинговать какой-нибудь внутренний хост.
При подключении к сети интернет через PPTP бывают ситуации, когда, несмотря на указанные опции, нулевой маршрут через туннель не устанавливается. В этом случае можно в конец соответсвующей секции в /etc/network/interfaces добавить:
up route del default
up route add default dev ppp12
где ppp12 — имя вашего ppp интерфейса.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Поднимаем VPN – PPTP сервер на Ubuntu
В этой статье я расскажу как поднять собственный PPTP сервер на Ubuntu. Почему именно PPTP? У каждого свои цели и задачи, кому-то нужен PPTP, кому-то L2TP/IPSec, кому-то IKEv2, а может и OpenVPN. Я постараюсь написать статьи по установке и настройке хотя бы двух протоколов VPN на Ubuntu и начну с PPTP. Все описанные действия производились на Ubuntu 14.04.5 LTS. Напоминаю, что дешевые VPS во Франции для запуска своего VPN вы можете посмотреть здесь.
Для установки понадобятся права root пользователя или sudo.
1. Устанавливаем необходимые пакеты:
После окончания установки, нам понадобится отредактировать несколько файлов. Для изменения файлов вы можете пользоваться любым удобным для вас способом, хоть nano, хоть визуальными редакторами и т.д.
Теперь вам необходимо определиться с локальной подсетью для клиентов VPN. Вы можете сделать себе подсеть из любой подсети, которая не маршрутизируется в интернете:
10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
2. Открываем файл /etc/pptpd.conf, находим и раскоментируем (если вдруг закоментированы) строки localip и remoteip, затем прописываем свою ip адресацию.
localip 172.16.0.1 remoteip 172.16.0.2-254
- localip – ip адрес из выбранной вами подсети, который будет являться локальным шлюзом для клиентов VPN.
- remoteip – пул ip адресов для раздачи клиентам VPN.
Если на вашей машине несколько внешних IP адресов, то вы можете указать конкретный IP, по которому будет доступно подключение к VPN серверу. В конце файла добавьте:
3. Открываем файл /etc/ppp/pptpd-options и добавляем в конце файла:
mtu 1400 mru 1400 auth require-mppe
В этом же файле при необходимости вы можете указать конкретные DNS, которые будут использоваться при подключении через VPN. Найдите и раскомментируйте строки ms-dns:
4. Открываем стандартный файл /etc/sysctl.conf, находим и раскомментируем строку:
5. Добавляем необходимые правила в iptables:
iptables -A INPUT -p gre -j ACCEPT iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Обратите внимание, что eth0 – имя вашего сетевого интерфейса. Вы можете узнать его с помощью команды ifconfig
Если вам необходимо, чтобы была локальная сеть между клиентами, подключенными к VPN, добавьте следующие правила в iptables:
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 172.16.0.0/24 -i ppp0 -j ACCEPT iptables --append FORWARD --in-interface eth0 -j ACCEPT
Обратите внимание, что 172.16.0.0/24 – локальная подсеть, которую вы себе выбрали, а ppp0 – имя pptp интерфейса.
Для сохранения iptables, выполните команду:
6. Пользователей для подключения к VPN серверу добавляем в файле /etc/ppp/chap-secrets
user1 pptpd password1 "*" user2 pptpd password2 "172.16.0.2"
- user1 – имя пользователя
- password1 – пароль пользователя
- “*” – локальный ip будет выдаваться из пула, указанного в файле /etc/pptpd.conf
- “172.16.0.2” – пользователю будет присвоен указанный ip адрес.
7. Перезапускаем сервис pptpd для применения новых настроек:
Ваш PPTP сервер на Ubuntu запущен!
P.S. Если вдруг вы столкнетесь с тем, что добавленные правила iptables пропадают после рестарта firewall или перезагрузки машины, то сделайте действия, описанные ниже.
1. Добавляем заново все правила, как описано в 5-м шаге.
2. Сохраняем правила в конфиг:
iptables-save > /etc/iptables.conf
3. Открываем файл /etc/network/interfaces и добавляем в самый конец:
pre-up /sbin/iptables-restore < /etc/iptables.conf
Теперь можете перезагрузить Firewall или всю машину и убедиться, что правила iptables сохраняются.
- Если ваши цели связаны с анонимностью и безопасностью, я крайне не рекомендую использовать PPTP. Лучше посмотрите в сторону OpenVPN или Wireguard.
- На новых системах уже нет возможности сохранять правила iptables способом, описанным выше. И вообще, желательно отказаться от iptables-save по той простой причине, что есть сервисы, которые сами добавляют свои правила в iptables после перезагрузки машины (например Docker) и могут возникнуть конфликты с уже сохраненными iptables-save через iptables-save правилами.
Поэтому проще делать следующим образом:
Сначала вы создаете iptables.sh и прописываете в него все собственные правила, например так:
#!/bin/sh iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ICMP iptables -A INPUT -p icmp -j ACCEPT # SSH iptables -A INPUT -s 5.5.5.5/32 -p tcp --dport 22 -j ACCEPT # Веб-сервер iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Zabbix Agent iptables -A INPUT -s 5.5.5.5/32 -p tcp --dport 10050 -j ACCEPT iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
Затем добавляете файлу права на запуск: chmod +x /root/iptables.sh и добавляете в крон:
@reboot root /root/iptables.sh >/dev/null 2>&1