• Почему для восстановления 3G надо перезагружать телефон?

    @yaror
    10 лет в мобильном телекоме
    Это был крик души, или действительно интересны технические подробности? )

    Если кратко, то причина вполне техническая, и звучит она "экономии для".
    Далее должна быть фраза типа "снижая расходы на дополнительное оборудование, мы добиваемся снижения стоимости наших услуг". Как инженер, я не могу судить, сколько именно в ней правды, но логика подсказывает, что какая-то корреляция быть действительно должна.

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

    @yaror
    10 лет в мобильном телекоме
    В IoT блокчейн предлагается использовать для обновления прошивок и обновления настроек устройств.

    Защищённые мессенджеры/чаты - они уже есть.
    Ответ написан
    Комментировать
  • Как защитить от ddos по tcp/udp?

    @yaror
    10 лет в мобильном телекоме
    Без вышестоящего провайдера всё равно не обойтись.

    Объясню почему: допустим, ваш умный файрвол DDoS обнаружил, левый трафик зарезал, и до серверов он не дошёл.
    Но канал-то всё равно забит с той стороны!
    Нужен какой-то способ сообщить провайдеру "Вот этих ко мне не пускай, режь прямо у себя!"

    Как вариант автоматизации этого, предлагаю глянуть в сторону BGP Flowspec.
    Учитывая, что BGP Flowspec может быть поднят и между операторами связи, появляется возможность задушить DoS на межоператорских стыках, а то и прямо у источника.
    Ответ написан
    Комментировать
  • Варианты блокировка контента на уровне провайдера?

    @yaror
    10 лет в мобильном телекоме
    Уж очень общий вопрос.
    Примерно как "приведите пример автомобиля". Приводим: от Оки до БелАЗа.
    Обычно вопрос более детальный: "На чём можно возить от одного до трёх человек по построенным по ГОСТ дорогам со скоростью до 100 км/ч".

    Или, может быть, в этом вопрос и состоит - оценить возможные масштабы?
    Ну, тогда аналог Оки - это программное, собранное на коленке решение под линукс: iptables + squid + mitmproxy.

    А если нужно что-то операторского класса по надёжности либо пропускной способности (аналог: от полуторки до БелАЗа), можно глянуть на решения:
    - Cisco SCE / ASR5xxx
    - Sandvine
    - Procera
    - Huawei SIG
    - Ericsson SSR
    - Allot
    Ответ написан
    Комментировать
  • Что такое "тайм аут соединения" в обычной "звонилке"?

    @yaror
    10 лет в мобильном телекоме
    У одной из стороны проблемы со связью?

    Скорее всего, именно так.

    Дело в том, что канал голосовой связи что в проводной, что в мобильной сети, особенно если задействовано несколько операторов связи, может "собираться" достаточно долго - если правильно помню, речь идёт о десятках секунд.
    Чтобы звонящий, пока собирается канал, тишины в трубке не пугался, его родная АТС начинает играть в трубку длинные гудки сразу же.

    А потом какому-то устройству посереди будущего канала связи показалось, что канал собирается уж слишком долго, и оно шлёт всем остальным сигнал "Мне надоело ждать. разбираем канал обратно".
    Ответ написан
  • Как это работает "без интернета"?

    @yaror
    10 лет в мобильном телекоме
    Ну да, именно что отдельная сетевая инфраструктура.
    Местами поверх существующей, местами вообще отдельное оборудование.

    Входящее в состав этой сети оборудование не участвует в глобальной ip-маршрутизации.

    Там свои, независимые от интернета планы адресации: свои принципы выделения ip-адресации, свои организации, отвечающие за выделение BGP AS.
    В общем, это свой маленький отдельный интернетик - только для своих.
    А протоколы все те же, дабы ничего нового не придумывать.

    Примером много: и тот же Swift, ГАС Выборы, и ведомственные сети, и связывающая мобильных операторов связи друг с другом сеть IPX/GRX.

    Собственно, это - в широком смысле огромный, как гоеграфически, так и топологически, VPN с многими тысячами узлов.
    А что тут удивительного?
    Ответ написан
    Комментировать
  • BGP - как работает при балансировке?

    @yaror
    10 лет в мобильном телекоме
    Тут смотря как стоит задача.
    Если необходимо балансировать трафик между провайдерами, то от асимметрии никуда не денешься.

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

    Для упрощения возможного дебага, я бы рекомендовал одного из провайдеров выбрать основным, второго - резервным, и ухудшить анонсы в сторону резервного - либо удлинив AS Path, либо отдав туда более крупно нарезанные сети. Можно, конечно, ещё с MED поиграть...

    Внутри своей же сети для выбора основного пути, опять же, можно глянуть в сторону:
    - распиленного пополам default route (очень здорово и без дополнительных телодвижений расползутся по IGP-протоколам, по OSPF тому же)
    - удлинения AS Path на резервном линке
    - local preference
    Ответ написан
    Комментировать
  • Как подключить коммутатор к другому коммутатору?

    @yaror
    10 лет в мобильном телекоме
    Это зависит от того, что там, за Dlink DES-1024A, и как устроена Ваша сеть.
    Вообще, Ваши коммутатору настройке не подлежат: они неуправляемые.

    Если:
    1. Ваши устройства получают ip-адреса по DHCP, и
    2. За Dlink DES-1024A находится Ваш маршрутизатор, эти ip-адреса выдающий любому желающему, и
    3. На Вашем маршутизаторе настроены NAT и политики доступа "Ip-адреса, выдаваемые по DHCP, пускать куда угодно"

    То проблем при каскадном включении "sip-телефон + компьютер" -> D-link DGS-1005A -> Dlink DES-1024A быть не должно.

    Невыполнение любого из этих трёх условий уже потребует что-то делать руками.
    Ответ написан
    1 комментарий
  • Настройка vlan-ов в juniper?

    @yaror
    10 лет в мобильном телекоме
    примерно так:

    # переводим интефейс в транковый режим
    set interface fe-0/0/7 vlan-tagging

    # заводим подынтерфейсы с нужными VLAN-ID и адресацией
    set interface fe-0/0/7.1 vlan-id 1 family inet address какой-там-ip-адрес-в-VLAN-1
    set interface fe-0/0/7.30 vlan-id 30 family inet address какой-там-ip-адрес-в-VLAN-30
    Ответ написан
  • Это mitm атака провайдера?

    @yaror
    10 лет в мобильном телекоме
    Вообще, в Казахстане, говорят, HTTPS MITM есть:
    https://habrahabr.ru/post/303736/
    Было бы интересно пообщаться с казахскими коллегами - чем там всё кончилось?

    Но в данном конкретном случае, полагаю, всё проще:
    Из казахского чегототамнадзора во Вконтакте приходит требование заблокировать некую группу на территории Республики Казахстан.
    Вконтакте ссориться с казахами по такому мелкому поводу не хочет, и где-то в глубине настроек Вконтакта напротив этой группы ставится метка "Если GeoIP покажет, что пользователь зашёл с казахского ip-адреса, группу ему не показывать".

    Через Тор же всё работает потому, что в таком случае Вконтакте увидит Ip-адрес абстрактного Зимбабве, а из Зимбабве таких запросов не приходило.
    Ответ написан
    4 комментария
  • Какой основной принцип отправки пакетов IP на конкретный узел (хост) сети Интернет?

    @yaror
    10 лет в мобильном телекоме
    Я правильно понимаю, что:
    - есть некая Mesh-сеть (все-со-всеми), предназначенная для обмена некими сообщениями
    - канал связи между узлами - прямое TCP-соединение
    - в случае обрыва прямого соединения, должна обеспечиваться возможность транзитного прохождения сообщения
    - количество узлов может быть очень большим - возможно, тысячи узлов

    Верно?

    Тогда есть смысл реализовать схему маршрутизации, аналогичную принятой в BGP.
    Я отойду от специфически сетевой терминологии и постараюсь передать суть.

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

    В момент установления нового соединения между узлами, каждый из них сообщает новому соседу как своё имя, так и список известных ему других узлов с наиболее коротким транзитным путём до каждого из них.

    Пример:
    Узел "Вася" подключается к узлу "Петя".
    В момент подключения, "Вася" сообщает:
    Я "Вася". Я знаю, как добраться до:
    - "Вася", кратчайший путь: ""
    - "Коля", кратчайший путь: "Вася"
    - "Настя", кратчайший путь: "Вася, Коля" (Возможно, есть ещё более длинный маршрут, но нам достаточно сообщить наиболее короткий)

    "Петя" делает следующее:
    - отдаёт Васе аналогичный список известных ему узлов с маршрутами до них
    - отбрасывает полученные от "Васи" маршруты, в кратчайшем пути до которых нашёл свой имя (во избежание петель маршрутизации)

    Для того, чтобы понять, в какое соединение отправить сообщение для Насти, Пете достаточно из известных ему маршрутов до неё выбрать тот, у которого маршрут короче.

    Потенциальные грабли, которые стоит учесть:
    1. Не забывать сообщать соседям об изменении своей таблицы маршрутизации:
    - при пропадании соседа
    - при появлении нового соседа
    - если для какого-то возможного получателя изменился наиболее короткий маршрут
    2. Не забывать отбрасывать маршруты, в которых нашёл самого себя
    3. Поскольку из-за некорректной работы некоторых узлов "закольцовывание" всё равно возможно, необходим аналогичный TTL механизм, ограничивающих количество транзитных узлов, которое может пройти сообщение перед своим уничтожением.
    Ответ написан
    5 комментариев
  • Можно ли настроить доступ к дискам только из виртуальной системы и запретить из основной?

    @yaror
    10 лет в мобильном телекоме
    Предполагаю, что речь идёт о чём-то вроде VirtualBox или VmWare Player.
    А что, если наворотить что-то подобное с помощью Shared Folders?

    1. Создать отдельного пользователя VM, под которым будут запускаться ВМ'ки
    2. Создать отдельную папку, и запретить к ней любой доступ всем пользователям, включая системных, кроме пользователя VM.
    3. В настройках ВМ добавить эту папку как Shared Folder.
    4. Запускать ВМ только из-под пользователя VM.

    Не оно ли?
    Ответ написан
    Комментировать
  • Как связать клиенты с клиентом в разных сетях?

    @yaror
    10 лет в мобильном телекоме
    Здесь, всё-таки, придётся лезть теорию.

    В общем виде, технология называется TCP Hole Punching: https://en.wikipedia.org/wiki/TCP_hole_punching

    Работает она так:
    Есть маршрутизатор с внешним ip-адресом 1.2.3.4 и спрятанной за ним сетью 192.168.0.0/24.
    Допустим, находящееся за NAT устройство с Ip-адресом 192.168.0.100 решило вылезти в Интернет и подключиться к серверу с ip-адресом 5.6.7.8 к порту 8080.
    Устройство поднимает TCP-соединение: со стороны устройства пара ip-адрес:порт будет, допустим, 192.168.0.100: 1111, а со стороны принимающей стороны 5.6.7.8:8080.
    Маршрутизатор, пропуская сквозь себя эти пакеты, подменяем ip-адрес и, что важно, порт спрятанного за ним устройства: на, предположим, 1.2.3.4:7890.

    Если на маршрутизаторе включен TCP Hole Punching, то он начинает преобразовывать пары адрес-порт 192.168.0.100: 1111 -> 1.2.3.4:7890 не только для соединений, исходящих изнутри, но и для входящих соединений снаружи.
    Это значит, что, начиная с момента установки соединения "изнутри наружу", запрос на TCP-соединение из интернета к 1.2.3.4:7890 будет прокинут маршрутизатором до спрятанного устройства, и дойдёт до 192.168.0.100: 1111.

    Получается, клиентская сторона для приёма соединений из-за NAT должна подготовиться следующим образом:
    1. Установить соединение с каким-то узлом в Интернет. Вообще неважно с кем: нам надо просто "пробить дырку" в NAT для приёма входящих соединений. Установив соединение, мы запоминаем source port.
    2. Создаём Listening socket на порту, запомненном в предыдущем шаге. Теперь мы можем принимать входящие соединения из интернет!

    И всё бы здорово, но возникает следующий вопрос: номер порта, на котором мы слушаем, маршрутизатор подменит совершенно непредсказуемым образом.
    Если мы хотим установить прямое соединение с устройством, которое тоже находится за NAT, как нам узнать, к какой публичной паре Ip-адрес:порт нам цепляться? Ведь каждый раз номер порта может непредсказуемо меняться!

    Ответ здесь один: нужен посредник - что-то типа каталога. Сервер с публичным ip-адресом, на котором можно зарегистрироваться. Ну никак без него!

    Работать это может так:
    1. Есть каталог с ip-адресом, допустим, 11.12.13.14, принимающий входящие соединения на порту 80.

    2. Устройство А с ip-адресом 192.168.0.100, находящееся за NAT 1.2.3.4, готовится к приёму входящих соединений. Оно устанавливает TCP-соединение с каталогом:
    192.168.0.100:1111 ===> 11.12.13.14:80.
    NAT A в проходящих сквозь него ip-пакетах преобразует ip-адрес и номер порта для спрятанного за ним устройства, и запоминает это соответствие:
    192.168.0.100:1111 <-> 1.2.3.4:1112.
    С точки зрения каталога, он принял такое входящее TCP-соединение:
    1.2.3.4:1112 ===> 11.12.13.14:80, ибо реальную адресацию устройства A ему узнать просто неоткуда. Ну и ладно: всё и так прекрасно работает!

    3. Устройство B с ip-адресом 192.168.2.200, находящееся за NAT 5.6.7.8, устанавливает TCP-соединение с каталогом:
    192.168.2.200:2221 ===> 11.12.13.14:80.
    NAT B в проходящих сквозь него ip-пакетах преобразует ip-адрес и номер порта для спрятанного за ним устройства, и запоминает это соответствие:
    192.168.2.200:2221 <-> 5.6.7.8:2222.

    4. Устройство B спрашивает у каталога: "А кто к тебе ещё подключен?"
    Каталог ответчает: "Да вот есть один такой, 1.2.3.4:1112"

    5. Устройство B устанавливает TCP-соединение с полученным от каталога ресурсом:
    192.168.2.200:9876 ===> 1.2.3.4:1112

    NAT B подменяет и запоминает ip-адрес и номер порта устройства B: 192.168.2.200:9876 -> 5.6.7.8:4321

    Соответственно, на NAT A прилетает запрос на установление соединения:
    5.6.7.8:4321 ===> 1.2.3.4:1112

    NAT A смотрит в таблицу NAT-трансляций, видит там знакомый номер порта, и подставляет из таблицы ip-адрес и номер порта устройства A: 1.2.3.4:1112 -> 192.168.0.100:1111

    6. Устройство A получает запрос на подключение:
    5.6.7.8:4321 ===> 192.168.0.100:1111

    Собственно, в зависимости от требований, сервер каталога можно:
    1. Написать самому
    2. А можно не изобретать велосипед, и воспользоваться готовыми реализациями того же протокола STUN
    Ответ написан
    Комментировать
  • Как назначить ip адрес, если он уже занят?

    @yaror
    10 лет в мобильном телекоме
    Забрать обратно - уже никак. Как минимум, придётся ждать, пока истечёт срок жизни.

    Если важно, чтобы конкретный ip-адрес назначался конкретному устройству, можно:
    1. Посмотреть MAC-адрес устройства и в настройках DHCP-сервера явно прописать соответствие MAC -> IP, или
    2. В настройках DHCP-сервера изменить диапазон автоматически выдаваемых ip-адресов так, чтобы желаемый IP-адрес в него не попадал, и на устройстве прописать желаемый IP-адрес вручную
    Ответ написан
    Комментировать
  • Какой объем широковещательного трафика в GPRS/3G сетях?

    @yaror
    10 лет в мобильном телекоме
    10.0.0.0/8 - это адресный пул.
    Однако, каждый абонент живёт в отдельном Point-to-point-тоннеле.

    Вообще, ip-броадкаста в мобильном интернете нет за ненадобностью.
    Есть что-то вроде мультикаста (MBMS, прости Господи), который полностью управляется оператором и работает строго в одну сторону: из специального узла сети в сторону абонента.

    Поэтому:
    1. То, что несколько разных корпоративных клиентов оказались не просто в одной ip-подсети (это ещё ладно бы), а ещё и увидели друг друга - это, конечно, безобразие, стыд и позор.

    2. То, что traceroute показывает один хоп, тоже нормально: ip-пакет из одного ppp-тоннеля в другой вполне можно переложить и без уменьшения TTL, а зациклить ip-пакет не даст проверка на совпадение source ip address и собственно ip-адреса, выделенного абоненту.

    3. Запинговать/зафлудить кого-либо насмерть теоретически можно, но при условии, что uplink-канал отправителя шире, чем downlink жертвы (например, если флудить из более новой технологии пользователя более старой: 3G -> GSM или LTE -> GSM). Однако, нагадить всем разом не получится, гадить придётся поштучно и с постоянным страхом получить по ушам за хулиганство от оператора.
    Ответ написан
    4 комментария
  • Как сделать оповещение о перестроение маршрута до устройства?

    @yaror
    10 лет в мобильном телекоме
    А что устройство вообще умеет?
    Посылать SNMP Trap'ы?
    BFD?
    Отвечать на пинги?

    Может быть, каналам 1 и 2 могут быть назначены разные ip-адреса?
    Ответ написан
  • Как работает CDN?

    @yaror
    10 лет в мобильном телекоме
    Ну, вообще-то, одному DNS-имени может соответствовать и несколько ip-адресов...

    А вообще, варианты, сходу:
    1. Кто мешает DNS-серверу отвечать разными ip-адресами на основании GeoIP-данных отправителя DNS-запроса?

    2. А почему бы не завести "сортировщик" запросов, полагаясь на средства самого HTTP?
    Пусть пользователь пытается загрузить некий файл my-cool-cnd.net/file. Тогда:
    2.1. HTTP-сервер, поднятый на my-cool-cnd.net, через GeoIP видит, что пользователь находится в Европе и отвечает HTTP-кодом 307 Temporary Redirect, Location: europe.my-cool-cnd.net/file
    Что важно, на my-cool-cnd.net никаких файлов может не быть вовсе - только скрипт-редиректор.
    2.2. Пользователь радостно загружает europe.my-cool-cnd.net/file

    3. Вообще дикий вариант, который, тем не менее, иногда используется: каждый региональный узел CDN по BGP анонсирует один и тот же ip-адрес. В таком случае, с какого именно узла CDN пойдёт загрузка, решается силами ip-маршрутизации, исходя из принципа выбора AS Path минимальной длины.
    Ответ написан
    3 комментария
  • Как организовать приватные диалоге в "чате" на java?

    @yaror
    10 лет в мобильном телекоме
    Ввести понятие идентификатора пользователя и соответствующее ему поле.
    Если сервер во входящем сообщении это поле увидел, сообщение он перешлёт не всем разом, а только указанному пользователю.
    Ответ написан
    1 комментарий
  • Как работают сотовые вышки?

    @yaror
    10 лет в мобильном телекоме
    Не имея информации о произошедшем, могу, тем не менее, на основании личного опыта, предположить следующее:

    Вариант 1: Источник проблем со связью с кабелем на самом деле не связан. Проблема может носить намного более сложный, хитрый и неуловимый характер, но, поскольку публике что-то срочно надо объяснить, сказали, как в том анекдоте про папу - пианиста в борделе: перебитый кабель.

    Вариант 2: Кабель действительно перебит, а резервного канала могло и не быть.
    Я, наверное, циничную вещь скажу, но цель существования любой фирмы - зарабатывание денег. А деньги сэкономленные - это деньги заработанные.
    Фильм "Бойцовский клуб" и работу главного героя помните?
    Берём предполагаемую при отказе канала связи сумму убытков L, вероятность отказа P и стоимость построения отказоустойчивого канала связи C.
    Если L * P >= C, канал будет зарезервирован.
    Если L * P < C, резерва не будет
    Ответ написан
    1 комментарий
  • Микротик: как дублировать трафик по разным каналам связи?

    @yaror
    10 лет в мобильном телекоме
    Дмитрий Александров : bounding, судя по документации, не решит вопрос резервирования трафика; полосу расширит, это да.

    Этим давно и успешно занимаются в Industrial Ethernet:
    wwwlehre.dhbw-stuttgart.de/~rentschler/Publication...

    А вот в ip-сетях это направление, похоже, только зарождается:
    https://tools.ietf.org/html/draft-popovic-iprp-00

    С другой стороны, если поднять OVPN-стык поверх собранной multipath SCTP-ассоциации...
    SCTP умеет, во-первых, использовать несколько endpoint-ов одновременно через разные каналы связи, а во-вторых, по сравнению с TCP, намного резвее отрабатывает потерю и выполняет ретрансмиссию пакетов.
    Ответ написан