readme: remove ___

This commit is contained in:
bol-van 2024-11-03 16:56:39 +03:00
parent 1987209613
commit 4559169e78

View File

@ -2,13 +2,11 @@
# Multilanguage README # Multilanguage README
___
[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.en.md) [![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.en.md)
[![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.md) [![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.md)
## Зачем это нужно ## Зачем это нужно
___
Автономное средство противодействия DPI, которое не требует подключения каких-либо сторонних серверов. Может помочь Автономное средство противодействия DPI, которое не требует подключения каких-либо сторонних серверов. Может помочь
обойти блокировки или замедление сайтов http(s), сигнатурный анализ tcp и udp протоколов, например с целью блокировки обойти блокировки или замедление сайтов http(s), сигнатурный анализ tcp и udp протоколов, например с целью блокировки
VPN. VPN.
@ -21,16 +19,12 @@ VPN.
## Быстрый старт ## Быстрый старт
___
> *Linux/openwrt:* docs/quick_start.txt > *Linux/openwrt:* docs/quick_start.txt
> >
>*Windows:* docs/quick_start_windows.txt >*Windows:* docs/quick_start_windows.txt
## Как это работает ## Как это работает
___
В самом простейшем случае вы имеете дело с пассивным DPI. Пассивный DPI может читать трафик из потока, может инжектить В самом простейшем случае вы имеете дело с пассивным DPI. Пассивный DPI может читать трафик из потока, может инжектить
свои пакеты, но не может блокировать проходящие пакеты. Если запрос "плохой", пассивный DPI инжектит пакет RST, свои пакеты, но не может блокировать проходящие пакеты. Если запрос "плохой", пассивный DPI инжектит пакет RST,
опционально дополняя его пакетом http redirect. Если фейк пакет инжектится только для клиента, в этом случае можно опционально дополняя его пакетом http redirect. Если фейк пакет инжектится только для клиента, в этом случае можно
@ -61,8 +55,6 @@ https://geneva.cs.umd.edu/papers/geneva_ccs19.pdf
## Что сейчас происходит в России ## Что сейчас происходит в России
___
Раньше, до внедрения повсеместных систем ТСПУ, использовался зоопарк различных DPI у провайдеров. Какие-то были Раньше, до внедрения повсеместных систем ТСПУ, использовался зоопарк различных DPI у провайдеров. Какие-то были
активными, какие-то пассивными. Сейчас время простых iptables окончательно ушло. Везде активный DPI ТСПУ, но кое-где активными, какие-то пассивными. Сейчас время простых iptables окончательно ушло. Везде активный DPI ТСПУ, но кое-где
могут оставаться невыключенными дополнительные старые DPI из зоопарка. В этом случае приходится обходить сразу несколько могут оставаться невыключенными дополнительные старые DPI из зоопарка. В этом случае приходится обходить сразу несколько
@ -73,7 +65,6 @@ DPI. Все больше становится внереестровых бло
## Как это реализовать на практике в системе linux ## Как это реализовать на практике в системе linux
___
Если кратко, то варианты можно классифицировать по следующей схеме : Если кратко, то варианты можно классифицировать по следующей схеме :
1) Пассивный DPI, не отправляющий RST серверу. Помогут индивидуально настраиваемые под провайдера команды iptables. На 1) Пассивный DPI, не отправляющий RST серверу. Помогут индивидуально настраиваемые под провайдера команды iptables. На
@ -162,8 +153,6 @@ offload соединения, которые должны попасть на tp
## Особенности применения ip6tables ## Особенности применения ip6tables
___
ip6tables работают почти точно так же, как и ipv4, но есть ряд важных нюансов. В DNAT следует брать адрес --to в ip6tables работают почти точно так же, как и ipv4, но есть ряд важных нюансов. В DNAT следует брать адрес --to в
квадратные скобки. Например : квадратные скобки. Например :
@ -175,8 +164,6 @@ NFQUEUE работает без изменений.
## Особенности применения nftables ## Особенности применения nftables
___
Более подробно преимущества и недостатки nftables применительно к данной системе описаны в docs/nftables_notes.txt Если Более подробно преимущества и недостатки nftables применительно к данной системе описаны в docs/nftables_notes.txt Если
коротко, то в nftables невозможно работать с большими ip листами на системах с малым количеством RAM. Остальные коротко, то в nftables невозможно работать с большими ip листами на системах с малым количеством RAM. Остальные
рассматриваемые здесь функции могут быть перенесены на nftables. рассматриваемые здесь функции могут быть перенесены на nftables.
@ -193,8 +180,6 @@ ___
## Когда это работать не будет ## Когда это работать не будет
___
* Если подменяется DNS. С этой проблемой легко справиться. * Если подменяется DNS. С этой проблемой легко справиться.
* Если блокировка осуществляется по IP. * Если блокировка осуществляется по IP.
* Если соединение проходит через фильтр, способный реконструировать TCP соединение, и который следует всем стандартам. * Если соединение проходит через фильтр, способный реконструировать TCP соединение, и который следует всем стандартам.
@ -209,8 +194,6 @@ ___
## nfqws ## nfqws
___
Эта программа - модификатор пакетов и обработчик очереди NFQUEUE. Для BSD систем существует адаптированный вариант - Эта программа - модификатор пакетов и обработчик очереди NFQUEUE. Для BSD систем существует адаптированный вариант -
dvtws, собираемый из тех же исходников (см. bsd.txt). dvtws, собираемый из тех же исходников (см. bsd.txt).
@ -299,7 +282,6 @@ dvtws, собираемый из тех же исходников (см. bsd.txt
### АТАКА ДЕСИНХРОНИЗАЦИИ DPI ### АТАКА ДЕСИНХРОНИЗАЦИИ DPI
___
Суть ее в следующем. После выполнения tcp 3-way handshake идет первый пакет с данными от клиента. Там обычно `GET / ...` Суть ее в следующем. После выполнения tcp 3-way handshake идет первый пакет с данными от клиента. Там обычно `GET / ...`
или TLS ClientHello. Мы дропаем этот пакет, заменяя чем-то другим. Это может быть поддельная версия с безобидным, но или TLS ClientHello. Мы дропаем этот пакет, заменяя чем-то другим. Это может быть поддельная версия с безобидным, но
валидным запросом http или https (вариант `fake`), пакет сброса соединения (варианты `rst`, `rstack`), разбитый на части валидным запросом http или https (вариант `fake`), пакет сброса соединения (варианты `rst`, `rstack`), разбитый на части
@ -468,7 +450,6 @@ mark нужен, чтобы сгенерированный поддельный
4-6 - на случай ретрансмиссии или запроса длиной в несколько пакетов (TLSClientHello с kyber, например) 4-6 - на случай ретрансмиссии или запроса длиной в несколько пакетов (TLSClientHello с kyber, например)
### КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ ### КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ
___
В параметре dpi-desync можно указать до 3 режимов через запятую. В параметре dpi-desync можно указать до 3 режимов через запятую.
0 фаза предполагает работу на этапе установления соединения. Может быть `synack` или `syndata`. 0 фаза предполагает работу на этапе установления соединения. Может быть `synack` или `syndata`.
@ -478,7 +459,7 @@ ___
Может быть полезно, когда у провайдера стоит не один DPI. Может быть полезно, когда у провайдера стоит не один DPI.
### РЕЖИМ SYNACK ### РЕЖИМ SYNACK
___
В документации по geneva это называется "TCB turnaround". Попытка ввести DPI в заблуждение относительно В документации по geneva это называется "TCB turnaround". Попытка ввести DPI в заблуждение относительно
ролей клиента и сервера. ролей клиента и сервера.
!!! Поскольку режим нарушает работу NAT, техника может сработать только если между атакующим устройством !!! Поскольку режим нарушает работу NAT, техника может сработать только если между атакующим устройством
@ -506,19 +487,19 @@ ip6tables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT
Остальные режимы тоже не сработают. Если поймете, что вам synack не нужен, обязательно верните правило дропа INVALID. Остальные режимы тоже не сработают. Если поймете, что вам synack не нужен, обязательно верните правило дропа INVALID.
### РЕЖИМ SYNDATA ### РЕЖИМ SYNDATA
___
Тут все просто. Добавляются данные в пакет SYN. Все ОС их игнорируют, если не используется TCP fast open (TFO), Тут все просто. Добавляются данные в пакет SYN. Все ОС их игнорируют, если не используется TCP fast open (TFO),
а DPI может воспринять, не разобравшись есть там TFO или нет. а DPI может воспринять, не разобравшись есть там TFO или нет.
Оригинальные соединения с TFO не трогаются, поскольку это их точно сломает. Оригинальные соединения с TFO не трогаются, поскольку это их точно сломает.
Без уточняющего параметра добавляются 16 нулевых байтов. Без уточняющего параметра добавляются 16 нулевых байтов.
### ВИРТУАЛЬНЫЕ МАШИНЫ ### ВИРТУАЛЬНЫЕ МАШИНЫ
___
Изнутри VM от virtualbox и vmware в режиме NAT не работают многие техники пакетной магии nfqws. Изнутри VM от virtualbox и vmware в режиме NAT не работают многие техники пакетной магии nfqws.
Принудительно заменяется ttl, не проходят фейк пакеты. Необходимо настроить сеть в режиме bridge. Принудительно заменяется ttl, не проходят фейк пакеты. Необходимо настроить сеть в режиме bridge.
### CONNTRACK ### CONNTRACK
___
nfqws оснащен ограниченной реализацией слежения за состоянием tcp соединений (conntrack). nfqws оснащен ограниченной реализацией слежения за состоянием tcp соединений (conntrack).
Он включается для реализации некоторых методов противодействия DPI. Он включается для реализации некоторых методов противодействия DPI.
conntrack способен следить за фазой соединения : SYN,ESTABLISHED,FIN, количеством пакетов в каждую сторону, conntrack способен следить за фазой соединения : SYN,ESTABLISHED,FIN, количеством пакетов в каждую сторону,
@ -573,7 +554,7 @@ window size итоговый размер окна стал максимальн
Если соединение выпало из conntrack и задана опция `--dpi-desync-cutoff`, `dpi desync` применяться не будет. Если соединение выпало из conntrack и задана опция `--dpi-desync-cutoff`, `dpi desync` применяться не будет.
### РЕАССЕМБЛИНГ ### РЕАССЕМБЛИНГ
___
nfqws поддерживает реассемблинг некоторых видов запросов. nfqws поддерживает реассемблинг некоторых видов запросов.
На текущий момент это TLS и QUIC ClientHello. Они бывает длинными, если в chrome включить пост-квантовую На текущий момент это TLS и QUIC ClientHello. Они бывает длинными, если в chrome включить пост-квантовую
криптографию tls-kyber, и занимают как правило 2 или 3 пакета. kyber включен по умолчанию, начиная с chromium 124. криптографию tls-kyber, и занимают как правило 2 или 3 пакета. kyber включен по умолчанию, начиная с chromium 124.
@ -593,7 +574,7 @@ chrome рандомизирует фингерпринт TLS. SNI может о
а последний пакет разбивается на 2 сегмента. В итоге имеем фейк в начале и 3 реальных сегмента. а последний пакет разбивается на 2 сегмента. В итоге имеем фейк в начале и 3 реальных сегмента.
### ПОДДЕРЖКА UDP ### ПОДДЕРЖКА UDP
___
Атаки на udp более ограничены в возможностях. udp нельзя фрагментировать иначе, чем на уровне ip. Атаки на udp более ограничены в возможностях. udp нельзя фрагментировать иначе, чем на уровне ip.
Для UDP действуют только режимы десинхронизации `fake`, `hopbyhop`, `destopt`, `ipfrag1`, `ipfrag2`, `udplen`, `tamper`. Для UDP действуют только режимы десинхронизации `fake`, `hopbyhop`, `destopt`, `ipfrag1`, `ipfrag2`, `udplen`, `tamper`.
Возможно сочетание `fake`, `hopbyhop`, `destopt` с `ipfrag2`, `fake`, `fakeknown` с udplen и tamper. Возможно сочетание `fake`, `hopbyhop`, `destopt` с `ipfrag2`, `fake`, `fakeknown` с udplen и tamper.
@ -613,7 +594,7 @@ ___
По умолчанию fake наполнение - 64 нуля. Можно указать файл в `--dpi-desync-fake-unknown-udp`. По умолчанию fake наполнение - 64 нуля. Можно указать файл в `--dpi-desync-fake-unknown-udp`.
### IP ФРАГМЕНТАЦИЯ ### IP ФРАГМЕНТАЦИЯ
___
Современная сеть практически не пропускает фрагментированные tcp на уровне ip. Современная сеть практически не пропускает фрагментированные tcp на уровне ip.
На udp с этим дело получше, поскольку некоторые udp протоколы могут опираться на этот механизм (IKE старых версий). На udp с этим дело получше, поскольку некоторые udp протоколы могут опираться на этот механизм (IKE старых версий).
Однако, кое-где бывает, что режут и фрагментированный udp. Однако, кое-где бывает, что режут и фрагментированный udp.
@ -670,7 +651,7 @@ options ip6table_raw raw_before_defrag=1
Хук должен быть с приоритетом 101 или выше. Хук должен быть с приоритетом 101 или выше.
### МНОЖЕСТВЕННЫЕ СТРАТЕГИИ ### МНОЖЕСТВЕННЫЕ СТРАТЕГИИ
___
`nfqws` способен по-разному реагировать на различные запросы и применять разные стратегии дурения. `nfqws` способен по-разному реагировать на различные запросы и применять разные стратегии дурения.
Это реализовано посредством поддержки множества профилей дурения. Это реализовано посредством поддержки множества профилей дурения.
Профили разделяются в командной строке параметром `--new`. Первый профиль создается автоматически. Профили разделяются в командной строке параметром `--new`. Первый профиль создается автоматически.
@ -705,7 +686,6 @@ L7 протокол становится известен обычно посл
Конкретно - Windows и ядра Linux, собранные без nftables и ipset модулей ядра. Например, в android нет ipset. Конкретно - Windows и ядра Linux, собранные без nftables и ipset модулей ядра. Например, в android нет ipset.
## tpws ## tpws
___
tpws - это transparent proxy. tpws - это transparent proxy.
``` ```
@ -952,7 +932,7 @@ TCP_USER_TIMEOUT. Под таймаутом подразумевается вр
Поддерживается только на Linux и MacOS. Поддерживается только на Linux и MacOS.
### МНОЖЕСТВЕННЫЕ СТРАТЕГИИ ### МНОЖЕСТВЕННЫЕ СТРАТЕГИИ
___
Работают аналогично `nfqws`, кроме некоторых моментов. Работают аналогично `nfqws`, кроме некоторых моментов.
Нет параметра `--filter-udp`, поскольку `tpws` udp не поддерживает. Нет параметра `--filter-udp`, поскольку `tpws` udp не поддерживает.
Методы нулевой фазы (`--mss`) могут работать по хостлисту в одном единственном случае: Методы нулевой фазы (`--mss`) могут работать по хостлисту в одном единственном случае:
@ -967,7 +947,6 @@ ___
Смотрите вывод `--debug`, чтобы убедиться в правильности настроек. Смотрите вывод `--debug`, чтобы убедиться в правильности настроек.
## Способы получения списка заблокированных IP ## Способы получения списка заблокированных IP
___
!!! nftables не могут работать с ipset-ами. Собственный аналогичный механизм требует огромного количество RAM !!! nftables не могут работать с ipset-ами. Собственный аналогичный механизм требует огромного количество RAM
!!! для загрузки больших листов. Например, для загона 100K записей в nfset не хватает даже 256 Mb. !!! для загрузки больших листов. Например, для загона 100K записей в nfset не хватает даже 256 Mb.
@ -1065,7 +1044,6 @@ ipfw таблицы в отличие от ipset могут содержать
LISTS_RELOAD=- отключает перезагрузку листов. LISTS_RELOAD=- отключает перезагрузку листов.
## ip2net ## ip2net
___
Утилита ip2net предназначена для преобразования ipv4 или ipv6 списка ip в список подсетей Утилита ip2net предназначена для преобразования ipv4 или ipv6 списка ip в список подсетей
с целью сокращения размера списка. Входные данные берутся из stdin, выходные выдаются в `stdout`. с целью сокращения размера списка. Входные данные берутся из stdin, выходные выдаются в `stdout`.
@ -1117,7 +1095,6 @@ ip2net фильтрует входные данные, выкидывая неп
Не надо делать такое: 5000000/10000000. 1/2 - гораздо лучше. Не надо делать такое: 5000000/10000000. 1/2 - гораздо лучше.
## mdig ## mdig
___
Программа предназначена для многопоточного ресолвинга больших листов через системный DNS. Программа предназначена для многопоточного ресолвинга больших листов через системный DNS.
Она берет из stdin список доменов и выводит в stdout результат ресолвинга. Ошибки выводятся в stderr. Она берет из stdin список доменов и выводит в stdout результат ресолвинга. Ошибки выводятся в stderr.
@ -1140,7 +1117,6 @@ mdig --family=6 --dns-make-query=rutracker.org | curl --data-binary @- -H "Conte
``` ```
## Фильтрация по именам доменов ## Фильтрация по именам доменов
___
Альтернативой ipset является использование tpws или nfqws со списком доменов. Альтернативой ipset является использование tpws или nfqws со списком доменов.
Оба демона принимают неограниченное количество листов include (`--hostlist`) и exclude (`--hostlist-exclude`). Оба демона принимают неограниченное количество листов include (`--hostlist`) и exclude (`--hostlist-exclude`).
@ -1185,7 +1161,6 @@ tpws и nfqws решают нужно ли применять дурение в
Если после запуска демона RAM под завязку или случаются oom, значит нужно отказаться от таких больших списков. Если после запуска демона RAM под завязку или случаются oom, значит нужно отказаться от таких больших списков.
## Режим фильтрации autohostlist ## Режим фильтрации autohostlist
___
Этот режим позволяет проанализировать как запросы со стороны клиента, так и ответы от сервера. Этот режим позволяет проанализировать как запросы со стороны клиента, так и ответы от сервера.
Если хост еще не находится ни в каких листах и обнаруживается ситуация, похожая на блокировку, Если хост еще не находится ни в каких листах и обнаруживается ситуация, похожая на блокировку,
@ -1259,7 +1234,6 @@ linux, но через раз приобретает статус INVALID в con
Можно вести `ipset/zapret-hosts-user.txt`, `ipset/zapret-hosts-user-exclude.txt`. Можно вести `ipset/zapret-hosts-user.txt`, `ipset/zapret-hosts-user-exclude.txt`.
## Проверка провайдера ## Проверка провайдера
___
Перед настройкой нужно провести исследование какую бяку устроил вам ваш провайдер. Перед настройкой нужно провести исследование какую бяку устроил вам ваш провайдер.
@ -1418,7 +1392,6 @@ curl: (28) Connection timed out after 2002 milliseconds
``` ```
## Выбор параметров ## Выбор параметров
___
Файл `/opt/zapret/config` используется различными компонентами системы и содержит основные настройки. Файл `/opt/zapret/config` используется различными компонентами системы и содержит основные настройки.
Его нужно просмотреть и при необходимости отредактировать. Его нужно просмотреть и при необходимости отредактировать.
@ -1659,7 +1632,6 @@ IFACE_WAN6="henet ipsec0"
`IFACE_LAN="eth0 eth1 eth2"` `IFACE_LAN="eth0 eth1 eth2"`
## Прикручивание к системе управления фаерволом или своей системе запуска ## Прикручивание к системе управления фаерволом или своей системе запуска
___
Если вы используете какую-то систему управления фаерволом, то она может вступать в конфликт Если вы используете какую-то систему управления фаерволом, то она может вступать в конфликт
с имеющимся скриптом запуска. При повторном применении правил она могла бы поломать настройки iptables от zapret. с имеющимся скриптом запуска. При повторном применении правил она могла бы поломать настройки iptables от zapret.
@ -1714,7 +1686,6 @@ nfset-ы принадлежат только одной таблице, след
а значит нужно синхронизироваться с применением/снятием правил со стороны zapret скриптов. а значит нужно синхронизироваться с применением/снятием правил со стороны zapret скриптов.
## Вариант custom ## Вариант custom
___
custom скрипты - это маленькие shell программы, управляющие нестандартными режимами применения zapret custom скрипты - это маленькие shell программы, управляющие нестандартными режимами применения zapret
или частными случаями, которые не могут быть интегрированы в основную часть без загромождения и замусоривания кода. или частными случаями, которые не могут быть интегрированы в основную часть без загромождения и замусоривания кода.
@ -1785,7 +1756,6 @@ zapret_custom_firewall_nft поднимает правила nftables.
типа наличия/отсутствия ipv6, является ли система роутером, имена интерфейсов, ...Хелперы это учитывают. Вам нужно сосредоточиться лишь на фильтрах `{ip,nf}tables` и параметрах демонов. типа наличия/отсутствия ipv6, является ли система роутером, имена интерфейсов, ...Хелперы это учитывают. Вам нужно сосредоточиться лишь на фильтрах `{ip,nf}tables` и параметрах демонов.
## Простая установка ## Простая установка
___
`install_easy.sh` автоматизирует ручные варианты процедур установки (см manual_setup.txt). `install_easy.sh` автоматизирует ручные варианты процедур установки (см manual_setup.txt).
Он поддерживает OpenWRT, linux системы на базе systemd или openrc и MacOS. Он поддерживает OpenWRT, linux системы на базе systemd или openrc и MacOS.
@ -1820,7 +1790,6 @@ ___
## Простая установка на openwrt ## Простая установка на openwrt
___
Работает только если у вас на роутере достаточно места. Работает только если у вас на роутере достаточно места.
@ -1841,7 +1810,6 @@ ___
## Установка на openwrt в режиме острой нехватки места на диске ## Установка на openwrt в режиме острой нехватки места на диске
___
Требуется около 120-200 кб на диске. Придется отказаться от всего, кроме `tpws`. Требуется около 120-200 кб на диске. Придется отказаться от всего, кроме `tpws`.
@ -1898,7 +1866,6 @@ ___
## Android ## Android
___
Без рута забудьте про nfqws и tpws в режиме transparent proxy. tpws будет работать только в режиме `--socks`. Без рута забудьте про nfqws и tpws в режиме transparent proxy. tpws будет работать только в режиме `--socks`.
@ -1982,7 +1949,6 @@ Wifi сеть - обычно `wlan0`.
## Мобильные модемы и роутеры huawei ## Мобильные модемы и роутеры huawei
___
Устройства типа E3372, E8372, E5770 разделяют общую идеологию построения системы. Устройства типа E3372, E8372, E5770 разделяют общую идеологию построения системы.
Имеются 2 вычислительных ядра. Одно ядро выполняет vxworks, другое - linux. Имеются 2 вычислительных ядра. Одно ядро выполняет vxworks, другое - linux.
@ -2038,18 +2004,15 @@ curl: (7) Failed to connect to www.ru port 80: Host is unreachable
## FreeBSD, OpenBSD, MacOS ## FreeBSD, OpenBSD, MacOS
___
Описано в docs/bsd.txt Описано в docs/bsd.txt
## Windows ## Windows
___
Описано в docs/windows.txt Описано в docs/windows.txt
## Другие прошивки ## Другие прошивки
___
Для статических бинариков не имеет значения на чем они запущены: PC, android, приставка, роутер, любой другой девайс. Для статических бинариков не имеет значения на чем они запущены: PC, android, приставка, роутер, любой другой девайс.
Подойдет любая прошивка, дистрибутив linux. Статические бинарники запустятся на всем. Подойдет любая прошивка, дистрибутив linux. Статические бинарники запустятся на всем.
@ -2112,7 +2075,6 @@ Openwrt является одной из немногих относительн
## Обход блокировки через сторонний хост ## Обход блокировки через сторонний хост
___
Если не работает автономный обход, приходится перенаправлять трафик через сторонний хост. Если не работает автономный обход, приходится перенаправлять трафик через сторонний хост.
Предлагается использовать прозрачный редирект через socks5 посредством `iptables+redsocks`, либо `iptables+iproute+vpn`. Предлагается использовать прозрачный редирект через socks5 посредством `iptables+redsocks`, либо `iptables+iproute+vpn`.
@ -2121,7 +2083,6 @@ ___
## Почему стоит вложиться в покупку VPS ## Почему стоит вложиться в покупку VPS
___
VPS - это виртуальный сервер. Существует огромное множество датацентров, предлагающих данную услугу. VPS - это виртуальный сервер. Существует огромное множество датацентров, предлагающих данную услугу.
На VPS могут выполняться какие угодно задачи. От простого веб сайта до навороченной системы собственной разработки. На VPS могут выполняться какие угодно задачи. От простого веб сайта до навороченной системы собственной разработки.