установить расширение впн для браузера
Title: OpenVPN сервер: настройка, выбор VPS и скрытые угрозы
Description: Полный разбор: как поднять OpenVPN сервер, какие VPS не сливают логи и почему стандартный конфиг не спасет от ТСПУ. Гайд по информационной безопасности.
Архитектура приватности: почему «скачать сервер» недостаточно
Когда пользователь принимает решение openvpn скачать сервер, он часто руководствуется благими намерениями: обеспечить безопасность данных в общественных Wi-Fi сетях, получить доступ к домашнему NAS или обойти базовые гео-ограничения. Однако на этом этапе кроется первая ошибка. OpenVPN — это не «волшебная таблетка», а сложный программный пакет, требующий инфраструктуры. Сам по себе файл конфигурации или установщик серверной части бесполезен без выделенного IP-адреса и понимания того, как ваш трафик взаимодействует с провайдером.
В этой статье мы отойдем от поверхностных инструкций «в три клика» и разберем процесс создания собственной VPN-инфраструктуры с точки зрения информационной безопасности. Мы затронем вопросы юрисдикции хостингов, реальные угрозы со стороны систем глубокой инспекции пакетов (DPI/ТСПУ) и технические нюансы, о которых молчат в популярных туториалах.
Анатомия конфига: что вы на самом деле запускаете
Большинство пользователей воспринимают .ovpn файл как черный ящик. На деле это текстовый документ, определяющий правила игры между клиентом и сервером.
1. Протокол и порт. По умолчанию OpenVPN использует UDP 1194. Это быстро, но легко детектируется DPI. Переключение на TCP 443 маскирует трафик под HTTPS, но создает проблему «TCP over TCP», ведущую к падению скорости и разрывам соединений при потере пакетов.
2. Шифрование. Стандартный AES-256-CBC устаревает. Современный стандарт — AES-256-GCM или ChaCha20-Poly1305. GCM обеспечивает не только конфиденциальность, но и целостность данных (аутентификацию), избавляя от необходимости использовать отдельный HMAC-канал.
3. TLS Auth. Критически важный параметр tls-auth (или tls-crypt в новых версиях). Он добавляет статический ключ, который подписывает каждый пакет. Без этого ключа сервер просто отбрасывает входящий мусор. Это защищает от DOS-атак на порт и сканирования, но многие «готовые» скрипты установки его игнорируют.
Чего вам НЕ говорят в других гайдах
Раздел, который спасет ваши данные и нервы. Если вы настраиваете сервер сами, вы берете на себя риски, которые в коммерческих VPN несет провайдер.
1. Иллюзия анонимности на российском VPS
Если вы арендуете VPS у российского провайдера (даже если он позиционирует себя как «для IT») и оплачиваете ее с российской карты, ваша «анонимная» нода напрямую привязана к вашей личности. Более того, согласно законам РФ (пакет Яровой), хостинг-провайдеры обязаны хранить метаданные трафика и контент до 6 месяцев (или предоставлять его по запросу ФСБ в рамках СОРМ). Ваш «личный» сервер в ДЦ в Москве или Санкт-Петербурге так же прозрачен для органов, как и домашний роутер.
2. Проблема «TCP Meltdown»
Попытка запустить OpenVPN поверх TCP (чтобы обойти блокировку порта UDP) часто приводит к катастрофе. Если базовое соединение теряет пакет, TCP-протокол самого VPN останавливает передачу, чтобы дождаться ретрансмиссии. Но поверх этого работает еще один TCP-туннель, который тоже ждет. Возникает лавинообразная задержка, скорость падает до килобит в секунду, а пинг взлетает. Решение: использовать UDP и маскировку (obfsproxy) или переходить на WireGuard, если DPI позволяет.
3. Утечки через WebRTC и IPv6
Настройка server.conf часто упускает из виду IPv6. Если ваш VPS не имеет IPv6-адреса, но клиент имеет, трафик может пойти в обход туннеля. Также необходимо жестко отключать WebRTC в браузере или на уровне iptables на сервере, иначе ваш реальный IP «светится» через механизмы WebRTC даже при работающем VPN.
4. Ресурсоемкость шифрования
OpenVPN работает в пользовательском пространстве (user-space), а не в ядре. Это значит, что каждое шифрование пакета требует переключения контекста процессора. На дешевых VPS с 1 vCPU (часто это завуалированный Intel Xeon старого поколения) загрузка канала свыше 50-80 Мбит/с может вызвать 100% загрузку CPU, что приведет к лагам не только в VPN, но и на самом сервере.
Сравнение инфраструктуры для поднятия OpenVPN
Выбор «железа» для сервера важнее, чем выбор клиента. Сравним варианты размещения.
| Тип хостинга | Юрисдикция и риски | Скорость и стабильность | Анонимность оплаты | Скрытые угрозы |
| :--- | :--- | :--- | :--- | :--- |
| Домашний сервер (Белый IP) | РФ/СНГ. Полный контроль, но риск атак извне. | Зависит от аплинка провайдера. Высокий пинг до удаленных ресурсов. | Нулевая. Привязка к договору с провайдером. | DDoS-атаки на домашний IP. Раскрытие факта проживания. |
| Бюджетный RU VPS | РФ. Подпадание под СОРМ и 152-ФЗ. Логи хранятся. | Стабильная внутри страны. Блокировки DPI возможны. | Низкая. Требует паспортных данных или карты РФ. | Блокировка порта 1194 провайдером хостинга. |
| Offshore VPS (Нидерланды/Финляндия) | 14 Eyes. Риск сотрудничества с западными разведками. | Отличная до Европы/США. До РФ — 40-80 мс. | Средняя. Крипта, но KYC при больших суммах. | Жалобы на abuse (спам/атаки) могут привести к бану без возврата средств. |
| «Вечный» Free VPS / Shared | Неизвестно. Часто это взломанные машины или «мусорные» зоны. | Нестабильная. Оверселлинг (один CPU на 100 юзеров). | Высокая. Часто принимают только крипту или вообще без верификации. | Бэкдоры в образе ОС. Майнинг на ваших мощностях. Перехват трафика админом. |
| Облачные гиганты (AWS/GCP) | США. Жесткая верификация, привязка к банковской карте. | Максимальная. Магистральные каналы. | Низкая. Полная идентификация. | Блокировка аккаунта при подозрительной активности (VPN-трафик часто триггерит фрод-системы). |
Сценарии использования: где свой сервер реально нужен
1. Корпоративный доступ и удаленка
Сотрудник работает из коворкинга или кафе. Публичный Wi-Fi — рай для снифферов (Wireshark, Bettercap). Поднятый на сервере OpenVPN с принудительным шифрованием AES-256-GCM создает защищенный туннель до офиса.
Важно: Настроить Split Tunneling, чтобы корпоративный трафик шел через VPN, а YouTube и соцсети — напрямую, экономя ресурс сервера.
2. Обход DPI (ТСПУ) для доступа к заблокированным ресурсам
Российские ТСПУ (Технические средства противодействия угрозам) работают на уровне сигнатур и handshake.
* Простой OpenVPN: Детектируется по характерному рукопожатию и блокируется.
* OpenVPN + Scramble: Использование патчей или обфускации, которая «размазывает» сигнатуру протокола, делая его похожим на случайный шум или обычный TLS-трафик.
* Альтернатива: Использование нестандартных портов (например, 443 UDP) и настройка fragment и mssfix для обхода ограничений по размеру пакетов.
3. Защита торрент-трафика
Если вы используете торренты, ваш IP виден всем пирам. Свой VPN-сервер (желательно в офшоре, где нет DMCA и жестких логов) позволяет скрыть домашний IP.
Нюанс: Настройка iptables на сервере для запрета входящих соединений (кроме установленных) и обязательный Kill Switch на клиенте, чтобы при обрыве VPN торрент-клиент не «про светил» реальный IP.
Технические нюансы настройки под реалии РФ
Маскировка под HTTPS
Чтобы обходиться без «серых» схем, можно настроить OpenVPN на порту 443 (UDP или TCP).
Для UDP это работает, так как DPI часто не может отличить зашифрованный UDP-поток от QUIC (протокол Google), если правильно подобраны размеры пакетов.
Для TCP используйте tcp-client и tcp-server директивы, но помните о проблеме TCP Meltdown.
DNS-утечки
Никогда не используйте DNS провайдера внутри туннеля.
В конфиг сервера:
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 9.9.9.9"
Но этого мало. На клиенте (Windows/Linux) нужно запретить использование DNS вне туннеля через Group Policy или resolvconf, иначе при разрыве связи запросы уйдут к провайдеру в открытом виде.
Kill Switch на Linux
В Linux нет встроенной кнопки «Kill Switch». Его нужно реализовать через iptables.
Суть правил: запретить весь трафик, кроме того, что идет через интерфейс tun0 и локальную сеть.
Запрет всего
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Разрешаем туннель
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
Это гарантирует, что при падении OpenVPN интернет на машине исчезнет полностью, а не переключится на unprotected канал.
WireGuard или OpenVPN — что безопаснее и быстрее в 2026 году?
WireGuard значительно быстрее (работает в ядре Linux, минимум оверхеда) и современнее (код — всего ~4000 строк, что упрощает аудит). Однако OpenVPN гибче в обходе блокировок: его легче замаскировать под обычный TLS-трафик, и он лучше работает в условиях агрессивного DPI, если использовать обфускацию. Для скорости — WireGuard, для скрытности в «закрытых» сетях — OpenVPN.
Мой провайдер режет скорость на VPN. Это лечится?
Да. Проблема часто не в шифровании, а в MTU (Maximum Transmission Unit). Если пакет VPN + внутренний пакет превышает MTU канала провайдера (обычно 1500, но бывает и 1492 для PPPoE), происходит фрагментация или дроп. Решение: добавить в конфиг fragment 1300 и mssfix 1300. Также проверьте, не режет ли провайдер именно UDP-трафик на высоких скоростях (политики QoS).
Законно ли поднимать свой VPN-сервер для личного использования в РФ?
Сам факт использования VPN для доступа к своим ресурсам или защиты канала не запрещен. Однако, если ваш сервер будет использоваться для обхода блокировок Роскомнадзора, он может попасть в реестр запрещенных, и провайдеры начнут глушить его IP. Хостинг-провайдеры в РФ при получении требования РКН просто отключат вам сервер. Использование офшорных VPS снижает этот риск.
Почему OpenVPN «ест» батарею на смартфоне быстрее?
Причина в параметре keepalive. Если он настроен агрессивно (например, пинг каждые 5 секунд), радиомодуль телефона постоянно выходит из спящего режима. Оптимум: keepalive 10 60 или использование push "ping-restart 120". Также убедитесь, что используется протокол UDP, а не TCP, так как TCP-соединения требуют более частых подтверждений.
Как проверить, что мой сервер не «светит» реальный IP через утечки?
Используйте ресурсы вроде ipleak.net или browserleaks.com. Обязательно проверяйте не только IPv4, но и IPv6, а также DNS-запросы. Если вы видите DNS-серверы своего домашнего провайдера (например, 8.8.8.8 или локальные), значит, push-директивы в конфиге сервера не сработали или клиент их игнорирует.
Можно ли поднять OpenVPN на домашнем роутере?
Да, если роутер поддерживает OpenVPN Server (Keenetic, Asus с прошивкой Merlin, Mikrotik). Это удобно для доступа к домашней сети. Минус: вам нужен «белый» IP от провайдера, что стоит денег и раскрывает ваше местоположение. Для обхода блокировок это не подходит, так как ваш домашний IP все равно будет виден целевым сайтам.
Вывод
Запрос openvpn скачать сервер — это только начало пути, который ведет не к «волшебной кнопке», а к необходимости разбираться в сетевой инфраструктуре. Поднятие собственного сервера дает полный контроль над данными и отсутствие ограничений по трафику, но накладывает ответственность за безопасность конфигурации.
Главный урок: безопасность VPN определяется не логотипом на сайте, а юрисдикцией сервера, качеством шифрования и умением настроить обход DPI. Если вы не готовы тратить время на настройку iptables, аудит логов и выбор офшорного хостинга с оплатой в крипте — возможно, специализированные сервисы будут безопаснее, чем ваш «дырявый» самописный сервер. Но если вы технарь и хотите контролировать каждый байт — собственный OpenVPN остается золотым стандартом гибкости.
OpenVPN сервер: настройка, выбор VPS и скрытые угрозы
Когда пользователь принимает решение openvpn скачать сервер, он часто руководствуется благими намерениями: обеспечить безопасность данных в общественных Wi-Fi сетях, получить доступ к домашнему NAS или обойти базовые гео-ограничения. Однако на этом этапе кроется первая ошибка. OpenVPN — это не «волшебная таблетка», а сложный программный пакет, требующий инфраструктуры. Сам по себе файл конфигурации или установщик серверной части бесполезен без выделенного IP-адреса и понимания того, как ваш трафик взаимодействует с провайдером.
В этой статье мы отойдем от поверхностных инструкций «в три клика» и разберем процесс создания собственной VPN-инфраструктуры с точки зрения информационной безопасности. Мы затронем вопросы юрисдикции хостингов, реальные угрозы со стороны систем глубокой инспекции пакетов (DPI/ТСПУ) и технические нюансы, о которых молчат в популярных туториалах.
Анатомия конфига: что вы на самом деле запускаете
Большинство пользователей воспринимают .ovpn файл как черный ящик. На деле это текстовый документ, определяющий правила игры между клиентом и сервером.
1. Протокол и порт. По умолчанию OpenVPN использует UDP 1194. Это быстро, но легко детектируется DPI. Переключение на TCP 443 маскирует трафик под HTTPS, но создает проблему «TCP over TCP», ведущую к падению скорости и разрывам соединений при потере пакетов.
2. Шифрование. Стандартный AES-256-CBC устаревает. Современный стандарт — AES-256-GCM или ChaCha20-Poly1305. GCM обеспечивает не только конфиденциальность, но и целостность данных (аутентификацию), избавляя от необходимости использовать отдельный HMAC-канал.
3. TLS Auth. Критически важный параметр tls-auth (или tls-crypt в новых версиях). Он добавляет статический ключ, который подписывает каждый пакет. Без этого ключа сервер просто отбрасывает входящий мусор. Это защищает от DOS-атак на порт и сканирования, но многие «готовые» скрипты установки его игнорируют.
Чего вам НЕ говорят в других гайдах
Раздел, который спасет ваши данные и нервы. Если вы настраиваете сервер сами, вы берете на себя риски, которые в коммерческих VPN несет провайдер.
1. Иллюзия анонимности на российском VPS
Если вы арендуете VPS у российского провайдера (даже если он позиционирует себя как «для IT») и оплачиваете ее с российской карты, ваша «анонимная» нода напрямую привязана к вашей личности. Более того, согласно законам РФ (пакет Яровой), хостинг-провайдеры обязаны хранить метаданные трафика и контент до 6 месяцев (или предоставлять его по запросу ФСБ в рамках СОРМ). Ваш «личный» сервер в ДЦ в Москве или Санкт-Петербурге так же прозрачен для органов, как и домашний роутер.
2. Проблема «TCP Meltdown»
Попытка запустить OpenVPN поверх TCP (чтобы обойти блокировку порта UDP) часто приводит к катастрофе. Если базовое соединение теряет пакет, TCP-протокол самого VPN останавливает передачу, чтобы дождаться ретрансмиссии. Но поверх этого работает еще один TCP-туннель, который тоже ждет. Возникает лавинообразная задержка, скорость падает до килобит в секунду, а пинг взлетает. Решение: использовать UDP и маскировку (obfsproxy) или переходить на WireGuard, если DPI позволяет.
3. Утечки через WebRTC и IPv6
Настройка server.conf часто упускает из виду IPv6. Если ваш VPS не имеет IPv6-адреса, но клиент имеет, трафик может пойти в обход туннеля. Также необходимо жестко отключать WebRTC в браузере или на уровне iptables на сервере, иначе ваш реальный IP «светится» через механизмы WebRTC даже при работающем VPN.
4. Ресурсоемкость шифрования
OpenVPN работает в пользовательском пространстве (user-space), а не в ядре. Это значит, что каждое шифрование пакета требует переключения контекста процессора. На дешевых VPS с 1 vCPU (часто это завуалированный Intel Xeon старого поколения) загрузка канала свыше 50-80 Мбит/с может вызвать 100% загрузку CPU, что приведет к лагам не только в VPN, но и на самом сервере.
Сравнение инфраструктуры для поднятия OpenVPN
Выбор «железа» для сервера важнее, чем выбор клиента. Сравним варианты размещения.
| Тип хостинга | Юрисдикция и риски | Скорость и стабильность | Анонимность оплаты | Скрытые угрозы |
| :--- | :--- | :--- | :--- | :--- |
| Домашний сервер (Белый IP) | РФ/СНГ. Полный контроль, но риск атак извне. | Зависит от аплинка провайдера. Высокий пинг до удаленных ресурсов. | Нулевая. Привязка к договору с провайдером. | DDoS-атаки на домашний IP. Раскрытие факта проживания. |
| Бюджетный RU VPS | РФ. Подпадание под СОРМ и 152-ФЗ. Логи хранятся. | Стабильная внутри страны. Блокировки DPI возможны. | Низкая. Требует паспортных данных или карты РФ. | Блокировка порта 1194 провайдером хостинга. |
| Offshore VPS (Нидерланды/Финляндия) | 14 Eyes. Риск сотрудничества с западными разведками. | Отличная до Европы/США. До РФ — 40-80 мс. | Средняя. Крипта, но KYC при больших суммах. | Жалобы на abuse (спам/атаки) могут привести к бану без возврата средств. |
| «Вечный» Free VPS / Shared | Неизвестно. Часто это взломанные машины или «мусорные» зоны. | Нестабильная. Оверселлинг (один CPU на 100 юзеров). | Высокая. Часто принимают только крипту или вообще без верификации. | Бэкдоры в образе ОС. Майнинг на ваших мощностях. Перехват трафика админом. |
| Облачные гиганты (AWS/GCP) | США. Жесткая верификация, привязка к банковской карте. | Максимальная. Магистральные каналы. | Низкая. Полная идентификация. | Блокировка аккаунта при подозрительной активности (VPN-трафик часто триггерит фрод-системы). |
Сценарии использования: где свой сервер реально нужен
1. Корпоративный доступ и удаленка
Сотрудник работает из коворкинга или кафе. Публичный Wi-Fi — рай для снифферов (Wireshark, Bettercap). Поднятый на сервере OpenVPN с принудительным шифрованием AES-256-GCM создает защищенный туннель до офиса.
Важно: Настроить Split Tunneling, чтобы корпоративный трафик шел через VPN, а YouTube и соцсети — напрямую, экономя ресурс сервера.
2. Обход DPI (ТСПУ) для доступа к заблокированным ресурсам
Российские ТСПУ (Технические средства противодействия угрозам) работают на уровне сигнатур и handshake.
* Простой OpenVPN: Детектируется по характерному рукопожатию и блокируется.
* OpenVPN + Scramble: Использование патчей или обфускации, которая «размазывает» сигнатуру протокола, делая его похожим на случайный шум или обычный TLS-трафик.
* Альтернатива: Использование нестандартных портов (например, 443 UDP) и настройка fragment и mssfix для обхода ограничений по размеру пакетов.
3. Защита торрент-трафика
Если вы используете торренты, ваш IP виден всем пирам. Свой VPN-сервер (желательно в офшоре, где нет DMCA и жестких логов) позволяет скрыть домашний IP.
Нюанс: Настройка iptables на сервере для запрета входящих соединений (кроме установленных) и обязательный Kill Switch на клиенте, чтобы при обрыве VPN торрент-клиент не «про светил» реальный IP.
Технические нюансы настройки под реалии РФ
Маскировка под HTTPS
Чтобы обходиться без «серых» схем, можно настроить OpenVPN на порту 443 (UDP или TCP).
Для UDP это работает, так как DPI часто не может отличить зашифрованный UDP-поток от QUIC (протокол Google), если правильно подобраны размеры пакетов.
Для TCP используйте tcp-client и tcp-server директивы, но помните о проблеме TCP Meltdown.
DNS-утечки
Никогда не используйте DNS провайдера внутри туннеля.
В конфиг сервера:
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 9.9.9.9"
Но этого мало. На клиенте (Windows/Linux) нужно запретить использование DNS вне туннеля через Group Policy или resolvconf, иначе при разрыве связи запросы уйдут к провайдеру в открытом виде.
Kill Switch на Linux
В Linux нет встроенной кнопки «Kill Switch». Его нужно реализовывать через iptables.
Суть правил: запретить весь трафик, кроме того, что идет через интерфейс tun0 и локальную сеть.
Запрет всего
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Разрешаем туннель
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
Это гарантирует, что при падении OpenVPN интернет на машине исчезнет полностью, а не переключится на unprotected канал.
WireGuard или OpenVPN — что безопаснее и быстрее в 2026 году?
WireGuard значительно быстрее (работает в ядре Linux, минимум оверхеда) и современнее (код — всего ~4000 строк, что упрощает аудит). Однако OpenVPN гибче в обходе блокировок: его легче замаскировать под обычный TLS-трафик, и он лучше работает в условиях агрессивного DPI, если использовать обфускацию. Для скорости — WireGuard, для скрытности в «закрытых» сетях — OpenVPN.
Мой провайдер режет скорость на VPN. Это лечится?
Да. Проблема часто не в шифровании, а в MTU (Maximum Transmission Unit). Если пакет VPN + внутренний пакет превышает MTU канала провайдера (обычно 1500, но бывает и 1492 для PPPoE), происходит фрагментация или дроп. Решение: добавить в конфиг fragment 1300 и mssfix 1300. Также проверьте, не режет ли провайдер именно UDP-трафик на высоких скоростях (политики QoS).
Законно ли поднимать свой VPN-сервер для личного использования в РФ?
Сам факт использования VPN для доступа к своим ресурсам или защиты канала не запрещен. Однако, если ваш сервер будет использоваться для обхода блокировок Роскомнадзора, он может попасть в реестр запрещенных, и провайдеры начнут глушить его IP. Хостинг-провайдеры в РФ при получении требования РКН просто отключат вам сервер. Использование офшорных VPS снижает этот риск.
Почему OpenVPN «ест» батарею на смартфоне быстрее?
Причина в параметре keepalive. Если он настроен агрессивно (например, пинг каждые 5 секунд), радиомодуль телефона постоянно выходит из спящего режима. Оптимум: keepalive 10 60 или использование push "ping-restart 120". Также убедитесь, что используется протокол UDP, а не TCP, так как TCP-соединения требуют более частых подтверждений.
Как проверить, что мой сервер не «светит» реальный IP через утечки?
Используйте ресурсы вроде ipleak.net или browserleaks.com. Обязательно проверяйте не только IPv4, но и IPv6, а также DNS-запросы. Если вы видите DNS-серверы своего домашнего провайдера (например, 8.8.8.8 или локальные), значит, push-директивы в конфиге сервера не сработали или клиент их игнорирует.
Можно ли поднять OpenVPN на домашнем роутере?
Да, если роутер поддерживает OpenVPN Server (Keenetic, Asus с прошивкой Merlin, Mikrotik). Это удобно для доступа к домашней сети. Минус: вам нужен «белый» IP от провайдера, что стоит денег и раскрывает ваше местоположение. Для обхода блокировок это не подходит, так как ваш домашний IP все равно будет виден целевым сайтам.
Вывод
Запрос openvpn скачать сервер — это только начало пути, который ведет не к «волшебной кнопке», а к необходимости разбираться в сетевой инфраструктуре. Поднятие собственного сервера дает полный контроль над данными и отсутствие ограничений по трафику, но накладывает ответственность за безопасность конфигурации.
Главный урок: безопасность VPN определяется не логотипом на сайте, а юрисдикцией сервера, качеством шифрования и умением настроить обход DPI. Если вы не готовы тратить время на настройку iptables, аудит логов и выбор офшорного хостинга с оплатой в крипте — возможно, специализированные сервисы будут безопаснее, чем ваш «дырявый» самописный сервер. Но если вы технарь и хотите контролировать каждый байт — собственный OpenVPN остается золотым стандартом гибкости.
Question: Is the promo code for new accounts only, or does it work for existing users too? Worth bookmarking.
Nice overview. The explanation is clear without overpromising anything. It would be helpful to add a note about regional differences.
Appreciate the write-up; it sets realistic expectations about common login issues. The wording is simple enough for beginners.