Страница 1 из 1

Как соединить два модема, и как они соединялись с провайдером?

Добавлено: 07 май 2026, 14:21
kasak
Прежде чем продолжить читать, сразу предупреждаю что в этой теме будет информация уже не познавательного а технического характера, с кусочками конфигурационных файлов.

Итак давайте разберёмся, как же вообще работают модемы, что они передают и как из связать друг с другом?
Модемы связываются между собой через телефонные линии, и передают информацию, согласно протоколу модемной связи.
Когда два модема соединяются, мы слышим эти забавные звуки, в это время модемы согласовывают скорость обмена, режим дуплекса, прочие параметры.
Поддерживаемые протоколы связи - это параметр по которому мы выбирали модем. Самые современные модемы поддерживали протокол v.92 что означало 56 кбит входящая скорость и 48 килобит исходящая. Однако, во всём есть свой маркетинговый ход.
Задумайтесь, а как же так, если связываются два модема друг с другом, и у обоих скорость выгрузки не может превышать 48 килобит, то как же достичь 56 килобит?
А для того чтобы достичь такой скорости, существовало специализированное оборудование, представляющее из себя цифровой модем, которое подключалось к линиям связи типа T1/E1, и только с таким оборудованием было возможно достичь скорости 56к.
Пример такого сервера на сайте производителя: https://www.patton.com/ras/3120/
Давайте не будем углубляться в стандарты передач данных типа T1/E1, чтобы не усложнять лишний раз текст.
Просто примем как данность, что между двумя физическими модемами скорость 56К недостижима, а 48К будет считаться идеальным результатом.

Модемы были изобретены сильно до этих ваших интернетов. И изначально при дозвоне друг на друга они осуществляли терминальный доступ, грубо говоря передавали текст с одной печатной машинки на другую. (Это очень упрощённо). Но когда интернет по протоколу IPv4 всё таки был изобретён, модемы прекрасно подошли чтобы популяризировать эту технологию.

Дорогой читатель, вот тут начинается немного сисадминской теории.
Для описания сетевого взаимодействия создана модель OSI (Open Systems Interconnection).
При помощи этой модели мы можем описать как узлы связываются между собой. И чтобы подробнее рассказать вам о том, как же модемы помогали нам выходить в этот ваш интернет, мне нужно на базовом уровне объяснить вам про модель OSI.
Всего в этой модели 7 уровней, из которых нас будет интересовать первые три.
1 уровень - физический. На этом уровне мы определяем как физически соединены наши узлы. В случае модемов это телефонная линия, из двух медных проводов. В случае современного домашнего интернета, это могла бы быть витая пара, в случае wifi это радиосигнал. А модемы это телефонная линия.
3 уровень - сетевой. Это протокол IP, те самые IP адреса, которые по сути и представляют из себя интернет. Но как запихнуть IP адрес в телефонную линию?
А вот за это у нас будет отвечать 2 уровень модели OSI - канальный. Если бы это был современный интернет, то по витой паре или оптическому кабелю, мы бы общались используя Ethernet, это те самые mac адреса и свичи, которые сегодня есть дома у каждого.
Но у модемов нет mac адресов. На помощь приходит протокол PPP. PPP это протокол канального уровня, который может связать всё что угодно. Да ещё обеспечивает возможность провести аутентификацию, шифрование, сжатие, в общем очень полезный для нас протокол.
Дело за малым, осталось соединить всю цепочку воедино и вылезти в интернет?

Наше оборудование:
Для испытаний я буду использовать мини АТС Panasonic, любезно предоставленную моим другом (кстати и пару экспонатом тоже предоставил он).
Со стороны сервера для выхода в интернет будет выступать компьютер с ОС Linux.
Со стороны клиента будет выступать старенький компьютер с OC Windows 95. Всё должно быть аутентичненько :)

Настройка сервера для приёма звонков
Как я уже говорил, модемы с последовательным портом, это устройства самодостаточные. Им не нужен ни драйвер ни процессор нашего компьютера. Поэтому, всё что нужно со стороны Linux сервера - это отправить модему нужные команды, чтобы он ждал звонка и принимал вызов. А когда связь будет установлена - запустить программу ppp и создать канал между модемами.

Когда мы подключаем модем к последовательному порту компьютера, разумеется автоматически никакой магии не произойдёт. Мы должны проинструктировать компьютер что там должно происходить.
К счастью для нас, чтобы чудо произошло, и всё это было автоматически, в линуксе есть программа mgetty.
Эта программа проинструктирует модем, и запустит туннель когда увидит соединение.
Но всё по порядку.
Вся конфигурация mgetty находится в директории /etc/mgetty+sendfax.
В файл mgetty.config добавим следующую информацию:

Код: Выделить всё

port ttyS0
  speed 115200
  data-only y
  port-owner root
  port-group dialout
  port-mode 0660
Файл mgetty.config задаёт конфигурацию последовательного порта. В данном случае мы используем порт ttyS0 (это порт com1)
Задаём ему скорость 115200 baud, говорим ему что модем на этом порту data-only что означает не принимать факсы.
После чего указываем уровни доступа к порту ttyS0. В принципе эти строки можно было и пропустить.
Обратите внимание что скорость последовательного порта, это совсем не одно и то же что скорость между модемами. Скорость последовательного порта, это скорость обмена между компьютером и самим модемом.
В этом же конфигурационном файле мы могли бы задать команды как поступать модему с приходящими вызовами, то есть мы сейчас находимся на этапе конфигурации того, как mgetty сконфигурирует модем для приёма вызовов.
Я думаю что не нужно углубляться в это, и оставить всё как есть. Этого достаточно для работы.
Далее нам интересен файл login.config.
Этот файл определяет какую программу надо вызвать вместо того чтобы подключить звонящего к терминалу.
Как я уже сказал, нас интересует ppp соединение. Поэтому в середине этого файла должна быть раскоментирована строка:

Код: Выделить всё

/AutoPPP/ -     a_ppp   /usr/sbin/pppd auth -chap +pap debug
В данной строке AutoPPP это инструкция для mgetty что делать при приёме ppp кадров.
- и a_ppp это указание юзера кто будет ответственный за ppp
и уже потом /usr/bin/pppd auth -chap +pap debug
это программа pppd запущенная с аргументами auth - включить аутентификацию. выключить спороб аутентификации chap, включить pap и включить debug. Опцию debug следует убрать, если всё хорошо работает.

Вот и вся конфигурация mgetty. Теперь переходим к ppp.
Вся конфигурация ppp находится в директории /etc/ppp.
Сначала нужно создать файл options.ttyS0
В ней мы определим что будет делать ppp при соединениях через порт ttyS0 то есть com1 на языке виндовс:

Код: Выделить всё

modem
ms-dns 192.168.0.1
192.168.1.1:192.168.1.2
Указываем ppp что это модем. Указываем адрес dns сервера, и указываем ip адреса для соединения в формате локальный:удалённый
Теперь в файл pap-secrets добавим логин и пароль:

Код: Выделить всё

102     *       102     *
первое 102 это логин, второе 102 это пароль. Я решил не усложнять ничего а просто взял номер, с которого будет звонить клиентский модем.
Остальные поля со звёздочками это имя нашего сервера и возможный ip адрес. Для наших целей можно ничего не ограничивать.

Вот и всё! Конфигурация ppp готова.

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

Код: Выделить всё

firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
не вдаваясь в детали, этого достаточно чтобы всё заработало. В иных линуксах, где нет firewalld, конфигурация была бы иная.

Теперь мы можем вооружить наш старый виндовый компик с модемом, и звонить на номер 101, используя логин и пароль 102.
Но это всё мы будем делать в практической части, с картинками и видеофайлами. А с теорией пока закончим.