Частые вопросы


Семь раз отмерь, один раз NATрежь

Ежедневно мы получаем самые разные вопросы о таком непонятном слове для большинства пользователей, как НАТ и тарифах виртуальных серверов (NAT-VPS) с ним связанных. Несмотря на достаточную распространенность такого механизма работы, знают о нем, в большинстве, только системные администраторы, хотя, скорее всего, читая данную статью, вы так или иначе пользуетесь данной технологией.

В этой статье мы простыми словами разберемся с особенностями работы, есть ли различие с «традиционными» виртуальными серверами и стоит ли оно вашего внимания.

Немного теории и при чем тут виртуальная реальность



Самая частая тема предпродажных обсуждений — «А будет ли у меня работать такое-то ПО на тарифах NAT?».
И этот вопрос уже изначально не совсем корректный. К работе программного обеспечения NAT имеет посредственное отношение. Всеми вычислениями занимается ваш виртуальный сервер. И слово «виртуальный» здесь не просто так. По определению, сервер (не виртуальный, а просто сервер, настоящий) — это специализированный компьютер, то есть он имеет реальный процессор, реальную оперативную память и другие необходимые существующие вещи, которые, грубо говоря, вы можете потрогать. И это дорого, дорого и избыточно. Например, для работы бота во вконтакте, аудиторию которого составляют ваши друзья и пара друзей друзей, достаточно несколько процентов мощностей целого сервера, а значит, что платить вы будете за целый сервер, а использовать только процент. Не выгодно.

Решить эту задачу призваны системы виртуализации. Не вдаваясь в подробности (всё-таки, основная тема статьи это NAT), создаются виртуальные машины, управление которыми возлагается на специальную служебную программу — гипервизор. Виртуальные машины вместе с гипервизором выполняются на физическом сервере, причем на одном таком сервере могут выполняться несколько виртуальных машин, работающих под управлением одинаковых или разных операционных систем и совместно использующих вычислительные ресурсы. При этом, созданным таким способом виртуальным машинам не всегда дано знать, что они на самом деле не настоящие.



Большинства ПО заточено именно под работу на реальных процессорах. Именно от системы виртуализации, которая отвечает за создание виртуального сервера (а значит и за имитацию работы реального процессора), зависит, будет работать ваше ПО корректно или нет.
На тарифах NAT мы используем LXC-виртуализацию.

Как видим, NAT не является главным фактором корректности работы вашего ПО. Если оно работает с LXC — значит и на тарифах NAT-VPS с LXC оно будет работать.


В каждый дом — по NAT



Теперь, когда мы немного поняли непосредственно про виртуальный сервер, поговорим о NAT и наших тарифах, которые можно купить за цену всего от 45 рублей в месяц.

Появлением данной технологии мы обязаны глобальной нехватке IPv4-адресов, ведь он (NAT) помогает в какой-то мере решить эту проблему для рядовых пользователей.
Посмотрите, как вы получаете доступ к Интернету с ваших устройств. С большой долей вероятности у вас дома стоит специализированное устройство (модем), к которому подключается и ваш компьютер, и телефон, и другие устройства (даже умный чайник не останется в стороне).

В сети Интернет же все устройства у вас идентифицируется одним IPv4-адресом. Но как в таком случае телефон получает свой контент, а ПК — свой, если адрес доставки один? 


Для того, чтобы для каждого устройства вам не было необходимости использовать (в условиях глобальной нехватки, читай как покупать) уникальный адрес, NAT (работаюший на стороне модема и ваших устройств) отвечает за использование несколькими устройствами одного адреса, присваивая внутренний локальный адрес каждому такому устройству.

Каждое устройство внутри сети имеет свой адрес типа 192.168.x.x, запросы с которых обрабатывает наш модем (он же — маршрутизатор) и отправляет уже в Интернет с общего IPv4-адреса (на самом деле есть еще нюансы, но в нашем случае для нас достаточно такого объяснения для понимания принципа работы).

Наши тарифы NAT-VPS работают по такому же принципу.



Вашему виртуальному серверу присваивается «серый» (то есть, не видный из Интернета) адрес. В пределах него вы можете запускать любое ПО и занимать все доступные порты. Например, вы установили ssh-сервер для удаленного подключения к вашему виртуальному серверу и он, как правило, запустился у вас на порту 22. Но как теперь получить к нему доступ, если в нашей сети есть еще десяток машин, которые используют 22 порт, как маршрутизатору понять, что именно на ваш 22 порт внутри сети отправлять трафик из Интернета?

Это проблема решается пробросом какого-либо уникального порта с общего IP-адреса на ваш внутренний. Например, для вашего порта 22 мы выделяем внешний порт 10200, а вашему соседу, для его порта 22, выделяем внешний порт 10300.
Теперь у нас есть так называемая карта портов. Допустим, внешний адрес нашего сервера это 55.55.55.55, адрес за NAT вашего виртуального сервера это 192.168.10.2, а вашего соседа — 192.168.10.3.

Теперь, когда вы отправляете запрос на адрес 55.55.55.55:10200, маршрутизатор понимает, что его надо адресовать вашей машине с адресом 192.168.10.2 на порт 22. В это же время, другой клиент может подключаться на свою машину по адресу 55.55.55.55:10300 и машрутизатор перенаправит запрос на его машину с адресом 192.168.10.3:22.

Все эти сложности привели к тому, что и вы, и все клиенты сервера используют один общий IP-адрес, тем самым не платя за его аренду. В целом, это единственный плюс технологии NAT в сфере виртаульных серверов.
Именно поэтому данная технология не так сильно распространена, ведь лишние 140-250 рублей в месяц делают вашу (да и жизнь хостера, ведь с NAT много заморочек и для хостера, но в этой статье не об этом) жизнь проще. Однако, не стоит списывать ее со счетов. Ведь любая экономия — это экономия. Множеству проектов можно 1 раз настроить порты, а лишние 140-250 рублей не будут уходить с вашего кошелька каждый месяц. А это от 1680 до 3000 рублей в год, что сравнимо с годовой стоимостью среднего VPS-сервера.

С какими проблемами вы можете столкнуться на NAT-VPS и как их решить



- Некоторое ПО работает только со стандартными портами.
Если вы столкнулись с такой проблемой, это проблема только этого ПО. Существует множество сценариев, когда необходимый сервис целенаправленно запускается не на стандартном порту, либо использует несколько, это не редкость и работа за NAT лишь один из таких случаев. В нормальном ПО у вас всегда будет возможность указать нестандартный порт для подключения.

- Сложности настройки веб-сервера.
Каждый сервис, работающий в Интернете, использует какой-то порт. В случае с вебом это, как правило, порт 80. Он есть всегда, но браузеры заботливо его скрывают для вашего удобства. А вот в случае с NAT ваш 80й порт будет на общем адресе иметь вид далёкий от этого числа. И условный порт 10301 браузер уже будет показывать в адресной строке и ваши посетители должны будут его вводить в адресной строке. С IP-адреса порт убрать нельзя (ведь он сообщает нашему маршрутизатору, на какую машину ему отправлять трафик, помните?), а вот с доменного имени - можно. Для этого мы предоствляем вам прокси-сервер, который принимает запрос на общий порт 80, а по имени домена уже понимает с какого виртуального сервера отдавать контент. Для проксирования домена вам необходимо обратиться в нашу поддержку.

- Сложности с установкой SSL.
В связи с использованием проксирования, ваш локальный SSL-сертификат за NAT не будет иметь влияния на прокси-сервер, ведь прокси-сервер это по сути зеркало — оно просто показывает ваш контент, не давая вашему серверу «пощупать» и нормально идентифицировать посетителя, только показать контент запрошенный прокси-сервером (а не напрямую посетителем) и принять уже он прокси-сервера информацию о посетителе, такая вот работа через посредника.
Эту проблему можно решить на нашей стороне, однако, это лишние затраты и усилия, и на данный момент это невостребованная функция, ведь она имеет стороннее рабочее решение. А решение на нашей стороне увеличит стоимость для всех, даже для тех, кто этот самый веб-сервер и SSLне устанавливал на свой виртуальный сервер — это не очень хорошо.
Для решения этой проблемы используйте сервис CloudFlare (думаю, для владельцев сайтов этот сервис не нуждается в представлении) — добавьте ваш домен и установите значение SSL Flexible. Теперь CloudFlare будет получать информацию от вас по http, а отдавать посетителю уже через https.



- Невозможность принимать UDP-трафик.
Адрес общий, и у каждого клиента на этом адресе могут быть недоброжелатели. С помощью UDP можно без особых усилий вызвать перерыв в обслуживании адреса, засорить интернет-канал. Мы не можем этого допустить, так как на одном адресе запущено множество проектов, приостановка работы которых недопустима. Поэтому, в целях безопасности, UDP-трафик полностью отключен. По факту, вы сможете установить ПО с ним на сервер, но работать оно будет только между виртуальными машинами за NAT. Выйти в интернет и получить что-то из вне оно не сможет. К счастью, большинство ПО умеют работать и по другим протоколам типа TCP.

Так хорошо за NAT или нет?



Как видим, использование NAT-VPS экономит ваши средства, но добавляет ряд решаемых (в 99% случаев) сложностей. Если вас они не пугают, то NAT-VPS это отличный вариант для вашего проекта. При возникновении каких-то сложностей, наша служба поддержки будет рада вам помочь в любое время суток по любому каналу связи.
Тарифы NAT начинаются от 45 рублей в месяц, вы можете посмотреть все тарифные планы (в том числе и с выделенными IP) здесь:
https://hostetski.ru/panel/billing.php?do=tarifs&vid=vds