Обход ограничение на раздачу мобильного интернета
Сейчас сложилась такая тенденция, что некоторые провайдеры мобильной связи ограничивают возможность раздачи интернета с устройства. Это свойственно семейным тарифам, которые включают в себя домашний интернет и телевидение.В данной статье рассказывается, как это недоразумение устранить. Статья носит исключительно академический характер.
И так, что нам понадобится. Смартфон с функцией раздачи интернета (internet sharing), компьютер с macOS, и все. Получать рут-доступ к смартфону не понадобится. Все делается буквально одной командой в терминале.
Для начала совсем немного теории. Как вообще операторы определяют, что устройство подключено через шлюз смартфона? В структуре пакета протокола IP (Internet Protocol) есть поле TTL (Time To Live) с целочисленным значением. Когда пакет данных покидает устройство, поле TTL устанавливается в определенное значение, например, 128. При каждом прохождении очередного маршрутизатора (коим также является и наш смартфон с точки зрения ноутбука), данное значение уменьшается на 1. То есть, наш смартфон, передавая пакет, отправленный с макбука, передаст этот пакет на роутер провайдера с TTL=127. И вот здесь провайдер и понимает, что пакет прошел уже один роутер, а значит, имеет место факт раздачи интернета.
Как с этим бороться?
К счастью, в macOS это делается всего одной командой терминала.
Но для начала нужно определить, какой TTL у нашего смартфона.
1. Для этого подключаемся как обычно к хотспоту нашего смартфона, и идем в настройки сети, чтобы узнать IP-адрес нашего шлюза (смартфона).
2. Ищем наш текущий IP адреc, который был присвоен роутером смартфона нашему макбуку.

Допустим, это 172.20.10.7
Тогда адрес шлюза в большинстве случаев будет 172.20.10.1 (последнее число меняется на 1)
3. Далее выполняем пинг шлюза.
$ ping 172.20.10.1 PING 172.20.10.1 (172.20.10.1): 56 data bytes 64 bytes from 172.20.10.1: icmp_seq=0 ttl=64 time=2.165 ms 64 bytes from 172.20.10.1: icmp_seq=1 ttl=64 time=10.146 ms 64 bytes from 172.20.10.1: icmp_seq=2 ttl=64 time=3.050 ms 64 bytes from 172.20.10.1: icmp_seq=3 ttl=64 time=1.994 ms
получаем значение TTL=64.
4. Далее прибавляем единицу к этому значению и выполняем команду
sudo sysctl net.inet.ip.ttl=65 net.inet.ip.ttl: 65 -> 65
команда требует ввода админ пароля.
И после этого интернет на макбуке должен появиться.
История создания данного продукта возвращает меня на 5 лет назад во времена, когда я только начал входить в мир Apple технологий, а именно — мигрировать на операционную систему Mac OS X. Как и для многих пенреход был связан с некоторыми неудобставми из-за отсутствия привычных программ и элементов управления системой. Одним из недоразуменей стало отсутствие аналога кнопки Пуск для запуска программ путем выбора из списка. Честно говоря, до сих пор не уверен, что я правильно запускаю программы в OS X (для этого я использую Spotlight). И вот, спустя несколько лет я решил устранить этот недостаток.
Эту заметку мне захотелось написать после нескольких неприятных моментов, связанных с утратой работоспособности моего мак-компьютера. После очередного системного обновления Maverick макбук перестал загружаться. Серый экран с яблоком и индикатор загрузки и дальше ни в какую. Я думал, что уже не столкнусь с таким никогда — времена хакинтоша давно позади. Некоторое время я был очень подавлен и не мог осознать реальность. Сразу вспомнил про вербальный режим загрузки (Cmd-V при включении питания). Запустил в этом самом verbose-режиме загрузку и вот что увидел в конце:
Сегодня хотел бы записать на память один нетривиальный процесс, касающийся внедрения механизма Apple Push Notification Service, который осуществляет рассылку коротких сообщений на устройства пользователей приложений в AppStore. И хотел бы я записать последовательность действий, производимых при создании и установки SSL Push Certificate, без которого не будет работать серверная часть, рассылающая пуши. Также если останется место, напишу, как реализовать самый простецкий push-сервер на php. Сама функция Push Notification очень полезна для оповещения пользователей о новых событиях в системе. Такие монстры, как Skype, Google, WhatsApp используют технологию push, чтобы осуществлять вызов абонентов или уведомлять о новых сообщениях на манер, как это делает стандартное приложение PhoneApp. 


Хочу поделиться с вами своей радостью в связи с торжеством человеческого разума. Таких моментов в жизни крайне мало (в моей так точно), поэтому это так и радует :)…
Озадачился я недавно проблемой сбора различной статистики в iTunesConnect. В большей степени хотелось иметь быстро доступную и что важнее, полную статистику скачиваний. Портал iTunesConnect дает возможность просматривать и скачивать недельные sales reports за последние три месяца, а дневные за последний месяц. Таким образом, со временем часть статистики теряется, что не есть хорошо. Решение напрашивается само: создать некий механизм, который будет ежедневно собирать данные и сохранять их в базу. Далее уже можно всякие красивости наводить типа визуализации/аналитики. Ко всему прочему, можно попутно сохранять текущее состояние приложений, что может быть полезно, если какие-либо приложения в состоянии Waiting For Review.