SSTP python server
https://github.com/maxqfz/SSTP
Установка SSTP VPN на примере Ubuntu 16.04
На базе SSTP сервера https://github.com/sorz/sstp-server
Подготовка
Установите python3 версии не ниже 3.4.4
sudo apt-get install python3
Установите pip3
sudo apt-get install -y python3-pip
Установите pppd
sudo apt-get install ppp
Установите openssl
sudo apt-get install openssl
Генерация SSL-сертификата и ключа
На данном этапе есть возможность получить изначально доверенный сертификат, если привязать IP-адрес сервера к домену, либо сгенерировать свой сертификат для IP-адреса сервера и добавить его в раздел доверенных на своей системе.
Получение доверенного сертификата для домена
Для начала привяжите IP-адрес Вашего сервера к домену, путём добавления A-записи в DNS домена.
Далее следует установить приложение certbot:
Теперь, осталось лишь выпустить сертификат для нашего домена командой sudo certbot certonly --standalone -d example.com
.
Генерация своего сертификата
Для того, чтобы сгенерировать SSL-сертификат и ключ, необходимо выполнить следующую команду: openssl req -newkey rsa:2048 -nodes -keyout privkey.pem -x509 -days 365 -out cert.pem
Все параметры можете оставить пустыми, кроме параметра Common Name - здесь необходимо указать внешний IP-адрес Вашего VPN-сервера.
После этого следует скопировать сертификат на компьютеры клиентов, которые будут подключаться к VPN-серверу и установить его в раздел "Доверенные корневые центры сертификации".
Установка и настройка sstpd-server
Установите sstp-server с помощью pip3: pip3 install sstp-server
Также его можно установить напрямую из GitHub создателя: pip3 install git+https://github.com/sorz/sstp-server.git
Создайте конфигурационный файл /etc/ppp/options.sstpd с помощью команды nano /etc/ppp/options.sstpd
и добавьте в него следующее содержимое:
Теперь необходимо создать файл с данными для входа. Для этого выполните команду nano /etc/ppp/chap-secrets
и укажите ваши данные для входа в формате логин сервер пароль IP-адреса
, например:
Создайте конфигурационный файл sstp-server командой nano /etc/sstpd.ini
и добавьте в него следующее содержимое:
Осталось лишь запустить наш сервер командой sudo nohup sstpd -f /etc/sstpd.ini & > sstpd.log
VPN сервер запущен! Теперь нужно настроить доступ в интернет для клиентов.
Настройка доступа в интернет через VPN
Для того, чтобы у клиентов заработал интернет, необходимо выполнить несколько пунктов:
Для начала нужно включить перенаправление трафика, отредактировав файл /etc/sysctl.conf
nano /etc/sysctl.conf
Добавьте или раскомментируйте строку
net.ipv4.ip_forward=1
После этого необходимо запустить команду
sysctl -p
для применения изменений.
Также следует добавить следующие правила IPTABLES:
Теперь у Вас есть свой SSTP VPN сервер с доступом к интернету!
Демонизация
Чтобы VPN-сервер запускался каждый раз при запуске компьютера, следует создать файл службы. Это делается путём создания файла в папке systemd nano /etc/systemd/system/sstpd.service
со следующим содержимым:
После этого осталось включить автозапуск службы командой systemctl enable sstpd.service
и запустить VPN-сервер командой systemctl start sstpd.service
.
Рекомендации
Рекомендуется запретить ping к серверу: Одноразово это можно сделать командой echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
. Для отключения насовсем:
Отредактируйте файл /etc/sysctl.conf
nano /etc/sysctl.conf
Добавьте или раскомментируйте строку
net.ipv4.icmp_echo_ignore_all=1
После этого необходимо запустить команду
sysctl -p
для применения изменений.
Для автоматического обновления сертификата (если используется certbot
) следует добавить в планировщик crontab -e
данную строку 0 4 * * 1 certbot renew && systemctl restart sstpd
.
Также рекомендуется сменить размер MTU путём добавления в конфигурационный файл /etc/ppp/options.sstpd
строчки mru 1396
Last updated