В прошлом году тётя отдала мне свой оригинальный iBook G3 Clamshell — и он пополнил мою коллекцию старых Mac.(примеч.1)
На нём была карта AirPort — аксессуар Apple за $99, с которого началась эпоха Wi-Fi. iBook G3 стал первым потребительским ноутбуком со встроенными Wi-Fi-антеннами и, пожалуй, самым доступным способом подключить компьютер к беспроводной сети 802.11.
В этой статье я хочу рассказать о воплощении своей давней идеи развернуть у себя локальный dial-up-провайдер.
Что может быть лучше, чем сделать это через Wi-Fi?
Стоп, что?
Сегодня Wi-Fi обычно раздаёт интернет, пришедший по оптике или кабелю, со скоростями в мегабитах и даже гигабитах в секунду.
Но в 1999 году, когда вышел AirPort, Wi-Fi обеспечивал максимум 11 Мбит/с. А в реальных условиях — скорее вдвое меньше.
В базовой станции AirPort были разъём Ethernet 10BASE-T — для редких счастливчиков с широкополосным доступом — и dial-up-модем на 56 Кбит/с. Большинство пользователей беспроводных сетей в 1999 году всё ещё подключались через AOL или другого провайдера коммутируемого доступа.
Несколько лет назад я купил подержанную базовую станцию AirPort первого поколения для другого проекта, который так и не состоялся. Поэтому в этот #MARCHintosh я решил проверить, смогу ли поднять собственный локальный dial-up-провайдер на Raspberry Pi и совместить скорость dial-up с Wi-Fi 802.11b.
Железо
Обычную аналоговую телефонную сеть — POTS — непросто имитировать. Просто соединить один модем с другим не получится. Поэтому помимо модема для моего «провайдера на Pi» мне понадобится имитатор телефонной линии.
К слову: я мог бы собрать и небольшую собственную мини-АТС на базе VoIP-оборудования, но оставлю это для будущего проекта… Планы уже есть 🙂
Для своего провайдера я выбрал такое оборудование:
-
Одноплатный компьютер ($40): Raspberry Pi 3, 4 или 5(примеч.2)
-
Имитатор телефонной линии ($120): Viking DLE-200B Two-Way Line Simulator
-
Модем ($45): StarTech.com 56K USB Dial-up Modem
Также может понадобиться несколько телефонных кабелей. Подключите USB-модем к одноплатному компьютеру, а затем соедините модем и имитатор телефонной линии телефонным кабелем.
После этого подключите другой компьютер — в моём случае iBook G3 — ко второму телефонному гнезду имитатора.
Я перевёл DIP-переключатель №3 в положение UP, чтобы уменьшить громкость: так модемам удаётся развивать чуть большую скорость.
При такой схеме, если вы не меняли остальные настройки DLE-200B по умолчанию, поднятие линии любым из модемов вызовет несколько сигналов вызова на другой линии — пока удалённая сторона не ответит или не проигнорирует вызов.
Если хотите добавить в схему немного ретроантуража, как сделал я, подключите дисковый телефон. Разъём Line подключите к имитатору телефонной линии, а Data — к модему Raspberry Pi.
При такой схеме, когда компьютер дозванивается до провайдера, телефон будет громко звонить, пока модем провайдера не ответит на вызов. Очень удобно для отладки!
Софт
На Raspberry Pi понадобятся две Linux-утилиты: mgetty и PPP.
-
mgetty («modem get tty») будет принимать вызовы через модем и согласовывать параметры соединения с удалёнными модемами. После установки соединения он передаст его PPP.
-
PPP — протокол двухточечного соединения — аутентифицирует удалённый компьютер, а затем настроит сетевой мост между двумя машинами. В итоге удалённый компьютер будет работать так, словно подключён к локальной сети.
Не буду углубляться во все детали: вместо этого сошлюсь на свой проект Pi ISP, где лежит плейбук Ansible, который сам всё настраивает.
В этом репозитории я также рекомендую два ресурса, из которых многое узнал о работе dial-up в Linux:
-
вики Doge Microsystems о dial-up-серверах;
-
документацию Webmin по PPP Dialin Server.
Если склонировать мой проект pi-isp, а затем запустить плейбук Ansible на Raspberry Pi или любом другом компьютере под управлением Debian, система автоматически начнёт ожидать сигнал вызова на линии — при условии, что модем уже подключён.
Если дозвониться с другого модема, можно посмотреть, как демон PPP согласовывает соединение, через sudo journalctl -fu mgetty. Номер набирать не нужно: если вы используете DLE-200B, как я, достаточно дождаться одного сигнала вызова.
Mar 26 15:32:35 dialpi pppd[15926]: PAM Account OK for dialMar 26 15:32:35 dialpi pppd[15926]: pam_unix(ppp:session): session opened for user dial(uid=1001) by (uid=0)Mar 26 15:32:35 dialpi pppd[15926]: PAM Session opened for user dialMar 26 15:32:35 dialpi pppd[15926]: user dial logged in on tty ttyACM0 intf ppp0Mar 26 15:32:35 dialpi pppd[15926]: PAP peer authentication succeeded for dialMar 26 15:32:35 dialpi pppd[15926]: Peer dial authenticated with PAP
Можно даже остановить mgetty и запустить minicom -D /dev/ttyACM0, чтобы вручную работать с модемом через AT-команды — например, отправить ATA, чтобы ответить на вызов.
Интернет на скорости 33,6 Кбит/с
В большинстве случаев мне удавалось установить соединение на скорости 33,6 Кбит/с. Иногда модемы не могли нормально согласовать параметры соединения. Проблема решалась настройкой максимальной допустимой скорости через команду AT+MS в init-chat: в конфигурации моего плейбука Ansible для этого есть удобный параметр.
Это максимум, которого можно добиться по аналоговой телефонной линии. Чтобы выйти на 56 Кбит/с, нужна цифровая инфраструктура, и даже она не гарантирует успеха. The Serial Port собирает цифровой dial-up-провайдер на первоклассном винтажном оборудовании для телефонных систем — и у них тоже возникли проблемы с тем, чтобы преодолеть 44 Кбит/с.
На скорости 28,8 Кбит/с или ниже соединение, скорее всего, будет стабильнее.
Но 33,6 Кбит/с вполне хватает, чтобы снова почувствовать dial-up конца 1990-х:
И да, всего 2,8 КБ/с… Я сразу вспомнил, как ждал ночи, дозванивался с компьютера и ставил скачиваться на всю ночь очередную shareware-программу. Днём(примеч.3) так рисковать было нельзя: кто-нибудь, обычно сестра, мог снять трубку, чтобы позвонить подруге. Большинство загрузок после обрыва нормально не возобновлялись.
На старом компьютере почти ни один современный сайт, включая тот, который вы читаете сейчас, не откроется. Старые браузеры вроде Internet Explorer или Netscape Communicator не умеют работать с актуальными TLS-сертификатами — не говоря уже о поддержке криптографических алгоритмов, необходимых для этого.
Но у моего провайдера на Pi есть козырь в рукаве: Macproxy Classic. Это локальный прокси-сервер, который работает между старым компьютером и современным Интернетом, преобразуя сайты в упрощённую структуру, с которой способны справиться ретрокомпьютеры.
Прокси отбрасывает современный CSS, JavaScript и HTML-теги, а на выходе формирует страницы, которые могут отрисовать старые браузеры и слабые компьютеры.
Я просто включил поддержку прокси в Internet Explorer 5:
И теперь могу просматривать собственный сайт на iBook 1999 года с Internet Explorer 5:
Но пока что мы просто выходим в Интернет по прямому dial-up-соединению, а iBook остаётся привязан кабелем к имитатору телефонной линии. Это уже забавно, но куда интереснее избавиться от проводов совсем.
Dial-up через Wi-Fi
Отчасти всю эту затею оправдывает то, что я потратил больше $200 на восстановление аккумулятора iBook, чтобы вернуть ему исходную автономность — более шести часов:
В отличие от современных ноутбуков, во многих этих «кирпичах» с рубежа веков использовались полноразмерные литий-ионные аккумуляторные элементы формата 18650. Поэтому их на удивление легко оживить — при условии, что вы сможете вскрыть пластиковый корпус и у вас есть аппарат точечной сварки для аккумуляторных контактов!
Я не хотел заниматься этим сам — в том числе потому, что предпочитаю не иметь дела с пожароопасными литий-ионными аккумуляторами. Поэтому я отправил аккумулятор на восстановление в мастерскую.
Это обошлось недёшево, но для меня оно того стоило: хотелось понять, каково было пользоваться первым ноутбуком с Wi-Fi в 1999 году — без привязки к адаптеру питания iBook с кабелем на катушке.
Благодаря восстановленному аккумулятору я смог гонять iBook часами. Это оказалось полезно, потому что старая базовая станция AirPort, которую я тестировал, явно работала нестабильно — особенно если оставлять её подключённой к питанию больше часа подряд. Возможно, ещё одна жертва одержимости Стива Джобса дизайном в ущерб. теплоотводу(примеч.4)
В этом видео я рассказываю об этом подробнее. Но Apple очень рано довела AirPort Admin Utility почти до идеала. Более того, во всей линейке AirPort компания сохранила, на мой взгляд, лучший интерфейс управления точками доступа — возможно, и по сей день.
Почему-то в любом роутере ASUS, Netgear и других подобных устройствах приходится продираться через полсотни меню, чтобы понять, где поменять нужные настройки DNS. Apple же отлично разложила важные параметры по понятным местам. Пожалуй, соперничать с этим может только оборудование Ubiquiti, хотя с ним я почти не работал.
Напоследок я поэкспериментировал с расширением Macproxy Classic для Wayback Machine. При включённом прокси можно открыть web.archive.org и активировать для браузера своего рода «машину времени». Выбираете дату, переходите по любому URL — и расширение загружает версию страницы на выбранный момент, если она есть в Wayback Machine.
Например, сайт Apple в конце июля 1999 года:
В качестве финального испытания новой схемы беспроводного dial-up-доступа я установил старую карту расширения Lucent WaveLAN PC Card — ту же, что стоит в оригинальной базовой станции AirPort, — в PowerBook G3, который достался мне от другой тёти. Похоже, они все любили Mac:
Всё заработало как надо, и дополнительная площадь экрана, которую давал «профессиональный» ноутбук Apple того времени, оказалась очень кстати.
В заключение
Иногда меня спрашивают, зачем я занимаюсь такими «бессмысленными» проектами. Отчасти, конечно, из ностальгии. И, возможно, чтобы оправдать то, что я продолжаю принимать в дар всё это старое железо…
Но главная причина в другом: такие проекты не дают мне переставать учиться. До этого я никогда не работал в Linux ни с mgetty, ни с PPP. Разобравшись, как на программном уровне работает модемное рукопожатие и как поднимается сетевое соединение ppp0, я лучше понял даже современные подключения вроде VPN.
Кроме того, я узнал, как модемы использовали квадратурную амплитудную модуляцию (QAM). А это, в свою очередь, помогло мне лучше разобраться, как QAM применяется в современном Wi-Fi для передачи данных на гигабитных скоростях, развивая приёмы, придуманные много лет назад.
Примечания
1. Похоже, коллекционирование и восстановление старых компьютеров стало проявлением моего кризиса среднего возраста. Поначалу я говорил себе, что ограничусь компьютерами на одну стойку. Теперь у меня есть Mac нескольких поколений, несколько ПК, пара тумб с ящиками запчастей, контейнеры для чистки, рабочие места для ремонта и пайки, несколько сломанных устройств-доноров… Во что я вообще ввязался?!
2. Технически подойдёт любой компьютер. Можно взять какой-нибудь старый ПК: главное, чтобы на нём работал Linux-дистрибутив на базе Debian — тогда подготовленное мной ПО должно запуститься без проблем. На других дистрибутивах Linux всё тоже может заработать, но, вероятно, придётся что-то донастроить.
3. Разумеется, при условии, что мои домашние не возражали бы против того, чтобы я занимал телефонную линию на несколько часов. Позже отец подключил ISDN, который давал постоянный «высокоскоростной» доступ в Интернет на 128 Кбит/с. Это было невероятно удобно, и, оглядываясь назад, я понимаю, что тогда совсем не ценил, насколько мне повезло.
4. Стив Джобс участвовал во множестве решений, где ради внешнего вида и тишины отказывались от вентиляторов или выбирали конструкцию «закрытого корпуса» вместо более эффективной вентиляции. Из-за этого проблемы возникали у некоторых Mac и аксессуаров Apple даже в новом состоянии.
Разбираться в старом железе полезно не только ради ностальгии: через такие проекты проще понять, как устроены сети, Linux и низкоуровневое взаимодействие с устройствами. Близкие темы можно разобрать на бесплатных уроках — это способ быстро свериться с практиками, задать вопросы и понять, насколько вам подходит формат:
-
20 июля 20:00. «Проектирование адресного пространства. Основы сетей ЦОД». Записаться
-
27 июля 20:00. «Разработка Embedded устройств для IoT». Записаться
-
3 августа 20:00. «Что такое модуль ядра. Как его написать, собрать, запустить». Записаться
Больше ретроинженерии и старого железа:
Навигация без GPS: как B-52 ориентировался по звёздам с помощью шестерёнок
Как компьютер Spacelab считал без микропроцессора: реверс-инжиниринг платы из 1980-х
Как «Союз» считал орбиту шестерёнками: внутри навигационного компьютера «Глобус»
Как сделать реверс-инжиниринг аналоговой микросхемы: FM-радиоприёмник TDA7000
ссылка на оригинал статьи https://habr.com/ru/articles/1057094/