SSTP python server
Last updated
Was this helpful?
Last updated
Was this helpful?
Установка SSTP VPN на примере Ubuntu 16.04
На базе SSTP сервера
Подготовка
Установите 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