Задать вопрос
  • Посредством чего блокирует сайт мой провайдер?

    @yaror
    10 лет в мобильном телекоме
    Поскольку резолвинг DNS происходит корректно, промышленно готовых вариантов остаётся три:

    1. Провайдерский DPI: наверняка он уже есть у всех провайдеров в том или ином виде.
    Логически DPI обычно включается в разрыв линка между ядром и NAT.
    Физически зачастую тоже.
    Кроме обычных шейпинга и подсчёта трафика per-subscriber, там реализован набор ALG (Application Layer Gateway), которые представляют из себя, фактически, прозрачные прокси для типичных протоколов: HTTP, FTP, DNS и т.д.
    Как правило, ALG умеют не только реагировать на определённые значения полей, но и вмешиваться в процесс передачи данных.
    Количество ALG зависит от навороченности DPI; в Procera даже World of Warcraft есть )
    Ну а уж подмена HTTP-страницы - пожалуй, самая используемая функция HTTP ALG.

    2. Наколенное решение раз:
    Описано у none7
    Завести у себя в сети сервер с ip-адресами, совпадающими с Ip-адресами Вконтакта (ну, или NAT'ить все запросы к нему на сервер-заглушку, что примерно то же самое) - вполне себе решение, если надо заблокировать сервис целиком, а не отдельные страницы на нём.
    Но если вдруг ваши политики наберутся дурости у наших, и список блокируемых ресурсов начнёт расти, провайдеры взвоют этот вариант поддерживать )

    3. Наколенное решение два:
    На самом деле, в России есть свой список блокируемых ресурсов (т.н. список Роскомнадзора) с сотнями тысяч URL.

    Выяснилось, что таким количеством записей множество провайдерских DPI попросту давится, поэтому эта задача зачастую решается следующим образом: заводятся отдельные серверы, подключаемые непосредственно к провайдерским BR (Border router'ам).

    Задачи серверов:
    - заглотить список блокируемых ресурсов, выдрать оттуда имена доменов и разрезолвить их в ip-адреса; адресов получается несколько десятков тысяч
    - полученные адреса через OSPF или BGP сливаются в BR. BR - он большой, спокойно держит BGP Full View, поэтому 10-20-50k лишних префиксов для него - капля в море

    Получается, что весь трафик в сторону ip-адресов, на которых находится хотя бы одна заблокированная страница, теперь льётся на эти серверы.
    Казалось бы, фиг какой сервер всё это переварит, но их можно плодить десятками: срабатывает ECMP/Load Balancing на уровне маршрутизации, и трафик размазывается между серверами примерно поровну.

    На самих серверах Linux, а в Linux - squid в transparent mode и iptables )
    Соответственно:
    - tcp port 80 силами iptables отправляется в сквид, где каждый запрошенный абонентом URL ищется в списке блокированных ресурсов
    - в tcp port 443 проверяется SNI чтобы понять, пропускать трафик дальше, или резать к такой-то матери
    - весь остальной трафик (и пинги, угу) пропускается насквозь без изменения
    Ответ написан
    1 комментарий
  • Как переключить IP-адрес на второй сервер при недоступности первого если они в разных ДЦ?

    @yaror
    10 лет в мобильном телекоме
    А ещё есть страшный способ, которым, тем не менее, успешно пользуются Content Delivery Networks - все эти ваши видеохостинги.

    Идея заключается в том, чтобы с разных ДЦ по BGP отдавать один и тот же ip-адрес.
    Таким образом, время полного гарантированного восстановления сервиса примерно равно времени сходимости BGP. Обычно это происходит быстрее, чем протухание записи в кэшах DNS-серверов.

    За этим адресом в обоих ДЦ, кстати, вполне можно спрятать имеющие связность с обоими ДЦ балансировщики, а спрятанные за балансировщиками сервисы раскидать по выделенным для конкретных ДЦ серым сетям.
    Ответ написан
    3 комментария
  • TCP. Можно ли ужимать ReceiveTimeout со стороны сервера до миллисекунд?

    @yaror
    10 лет в мобильном телекоме
    Согласен с res2001 .
    Данные, для которых критична оперативность доставки, следует отправлять по UDP.
    Или, если настолько критично поддержание сессии и нет желания реализовывать сессии самостоятельно, то по SCTP.

    Выкручивание же таймаутов TCP до околонулевых значений приведёт, наоборот, к тому, что при малейшем возмущении на пути прохождения трафика начнутся постоянные ретрансмиты, и передача данных встанет вообще.
    Не предназначен TCP для оперативной, в реальном времени, передачи данных! Его задача - гарантированно доставить данные хоть когда-нибудь.
    Ответ написан
    Комментировать
  • Что случится, если при TCP-соединении у отправителей совпадут порт и IP?

    @yaror
    10 лет в мобильном телекоме
    Если совпадут все пять значений (src ip, src port, dst ip, dst port, protocol), то пакеты, относящиеся к двум разным соединениям, перепутаются, перемешаются, и сам чёрт ногу сломит в том, что получится.

    Но!
    Инициатор соединения (либо NAT) Src port выбирает не просто случайный, а так, чтобы пятёрка полей (src ip, src port, dst ip, dst port, protocol) в таблице соединений не повторилась.
    Вот и всё!

    Действительно, как инициатор соединения, так и NAT могут переиспользовать пару (src ip, src port) для других соединений. В NAT это называется Endpoint Independent Mapping и служит для экономии адресного пула. Вдобавок, и ряд сервисов (та же ICQ) ведёт себя странно, видя несколько соединений с разными (src ip, src port), но под одной учётной записью.

    Но, поскольку как минимум одно значение из тройки (dst ip, dst port, protocol) уникальное, относящиеся к разным соединениям пакеты не перемешиваются.
    Ответ написан
    1 комментарий
  • Как провайдер знает, когда я использую torrent?

    @yaror
    10 лет в мобильном телекоме
    1. Детекция торрентов
    Для этого операторы связи, как правило, используют одно из решений DPI (Deep Packet Inspection) - железку, которая способна залезть в уровень L7 модели OSI и понять, что же это такое.

    Нешифрованные протоколы (HTTP, FTP), и DPI видит и разбирает без проблем.
    В случае же торрентов и некоторых стриминг-сервисов приходится использовать эвристику: косвенные признаки, худо-бедно свойственные детектируемому сервису.
    Кроме обычных протокола (TCP/UDP), ip-адресов и номеров портов в ход идут:
    - типичные последовательности байтов
    - численные и временные характеристики трафика (в духе "сначала три пакета по 70 байт, потом пауза 100-350 мс, потом передача со скоростью 100-200 кбит/с")

    2. HTTPS
    В уровне TLS, начиная с версии 1.1, в последнее время используемого в HTTPS для шифрования, существует расширение SNI (Server Name Indication), в полях которого в открытом виде передаётся доменное имя сайта.
    Собственно, там имя сайта оператор подсмотреть и может, хотя полного URL и содержимого страниц, не имея закрытого ключа сайта, он так и не узнает.
    Ответ написан
    Комментировать
  • Какое устройство с поддержкой BGP поставить на границу сети?

    @yaror
    10 лет в мобильном телекоме
    Не, ну это точно не сюда.
    Надо сесть и составить ТЗ, в котором будут:
    1. Примерная схема сети (пусть даже на уровне пять квадратов: два провайдера, сам маршрутизатор, руководство, отдел продаж)
    2. Примерная нагрузка в Мбит/с и тысячах пакетов в секунду (посмотрите, сколько ваша сеть создаёт сейчас и возьмите запас раза в 4, а то и в 10)
    3. Если есть возможность, посмотрите на существующем маршрутизаторе количество количество tcp-соединений, и тоже возьмите запас
    4. Количество BGP-префиксов (пообщайтесь с провайдерами, надо ли Вам BGP Full View?)
    5. Со всем этим приходите к двум-трём местным официальным продавцам/интеграторам за спецификацией и коммерческим предложением. Через них же лучше и брать, ибо цена относительно официально объявленной производителем GPL-цены может упасть в разы.

    Не забудьте потребовать, чтобы в спецификации была указана максимально достижимая аппаратная производительность и ёмкость, она обычно описывается для трёх разных случаев: small packets, large packets и IMIX (распределение, примерно соответствующее усреднёному абонентскому трафику).

    Кстати, я бы к Juniper тоже посоветовал присмотреться.
    Ответ написан
    Комментировать
  • Почему не все серверы пишутся на Node js?

    @thingInSelf
    Создатель Node.js: «Для серверов я не могу представить другой язык кроме Go»
    Ответ написан
    Комментировать
  • Как изменить геолокацию домена/хостинга?

    @thingInSelf
    Только вот завести свой сайт в Китае не так просто.
    См. на Хабре специальные статьи на эту тему.
    Ответ написан
    Комментировать
  • Как вам redmine?

    @thingInSelf
    Допиливать нужно под себя.
    Но в целом хорошая штука.
    Ответ написан
    Комментировать
  • Какой язык программирования выбрать под конкретную задачу?

    @thingInSelf
    Боюсь, шеф просто не представляет сколько это бабла.
    Когда узнает, то вот этого его "готов оплатить" быстренько испарится.

    Делать на 1С. Она под это и заточена.
    И даже на 1С это будет не быстро и не дешево - если вы в ней не профи.

    В других языках - вам придется не прикладную задачу решать,
    а попутно еще решить миллион сопутствующих задач, что попросту неэффиктивная трата чужих денег.
    Ответ написан
    Комментировать
  • Как сейчас с питоном на windows 10?

    @thingInSelf
    Python прекрасно работает под Windows.
    Безо всяких Linux SubSystem.

    Ограничение только одно:
    под Линуксами легко компилируются бинарные пакеты Питона.
    Под Виндой они тоже компилируются. Но гораздо проще скачать их в бинарном виде, уже собранные под Винду.

    Вот и вся разница.

    Если же речь идет о написании серверного ПО, то операционная система, под которой вы будете это делать, не имеет никакого значения.
    Все равно, если не хотите иметь гемморой при раскатывания на продакшн - отлаживать нужно внутри точно такой же (не десктопной, а серверной версии), - а это можно делать с помощью Vagrant под Windows, под Linux, под MacOSX.
    Ответ написан
    Комментировать
  • Как перенести все данные с одного сервера на другой, в случае падения первого?

    @thingInSelf
    После жесткого падения ОС - никак, в общем случае.
    Ну разве что подключиться удаленной консолью, внешней по отношению к ОС - такие предоставляют хостеры, если у вас там VDS
    Ответ написан
    Комментировать
  • Можно ли сделать интернет-стартап не будучи ИТ-специалистом?

    @thingInSelf
    При наличие гигантской финансовой подушки - да.
    Просто заказать.

    Чтобы самому (и дешевле и лучше) - вам нужен сооснователь-специалист.
    Ответ написан
    Комментировать
  • Проблема с хостингом timeveb. Пишет нет места, занято всего около 10% от общего, что может быть?

    @thingInSelf
    Писать в тех. поддержку хостера в таких случаях надо.
    Это и есть их работа.
    Ответ написан
    Комментировать
  • Как создать скрипт, который нажимает на кнопки на странице?

    @thingInSelf
    Selenium
    Ответ написан
    Комментировать
  • Как бесплатно узнать все домены владельца?

    @thingInSelf
    У меня везде whois или скрыт или фальшивые данные.
    Если владелец не любит прятаться - найдете.
    Иначе - никак.
    Ответ написан
    Комментировать
  • Как пробиться на фрилансе без вложений или найти удаленку?

    @thingInSelf
    Добавить забыл: но почти ничего не знаю, не профи.
    Ответ - никак.
    Точнее - за копейки.
    Ответ написан
    1 комментарий
  • Как организовать международный прием платежей с минимумом налогов?

    @thingInSelf
    Если взять Китай - там совсем специфические платежные системы. Карты Visa, как в Европе - не приветствуются.
    Если взять Европу и США - напротив, будет через VISA.
    И т.д.
    На весь мир не получится - придется подстраиватсья под каждую крупную страну.
    Можно взять интегрированное решение, типа XSola, но за свой сервис они закономерно хотят денежку. Которая ну намного-намного больше ваших вожделенных 6%
    Ответ написан
    1 комментарий