- ppp (Русский)
- Contents
- Установка
- Настройка
- PPPoE
- Запуск pppd при старте системы
- Дополнительно
- Автодозвон
- Используя cron
- Используя таймер systemd
- Решение проблем
- Маршрут по умолчанию
- Маскарадинг работает, но некоторые сайты не открываются
- Не удается загрузить модуль ядра ppp_generic
- объяснение команды вывода «ifconfig ppp0»
- Linux что такое ppp0
ppp (Русский)
Перевод этой статьи или раздела не отражает оригинальное содержание.
ppp (Paul’s PPP Package) — пакет с открытым исходным кодом, который реализует протокол соединения точка-точка (PPP) для систем Linux и Solaris. Пакет предоставляет демон pppd, который может быть использован вместе с xl2tpd , pptpd и netctl.
Протоколы 3G, L2TP и PPPoE работают на основе PPP, поэтому они также могут контролироваться ppp.
Contents
Установка
Убедитесь, что ядро вашей системы скомпилировано с поддержкой PPPoE (верно для стандартной сборки):
Настройка
PPPoE
Создайте файл настроек соединения:
Если задана опция usepeerdns , при соединении pppd создаст файл /etc/ppp/resolv.conf с полученными адресами DNS-серверов. По умолчанию скрипт /etc/ppp/ip-up.d/00_dns перемещает этот файл в /etc/resolv.conf , чтобы система могла использовать эти DNS-серверы. Если это поведение является нежелательным (например, установлен локальный кэширующий DNS), отредактируйте /etc/ppp/ip-up.d/00_dns.sh под ваши нужды.
Добавьте запись с паролем соединения в /etc/ppp/pap-secrets или /etc/ppp/chap-secrets , в зависимости от типа аутентификации, используемого вашим провайдером. Если вы не уверены, можно добавить запись в оба файла, pppd выберет нужный самостоятельно. Запись выглядит следующим образом:
Имя пользователя должно совпадать с именем, указанным в опции name . Оно также используется для аутентификации, если не переопределено другим значением с помощью опции user .
Теперь вы можете попробовать установить соединение командой:
где имя_соединения — имя файла настроек, созданного в /etc/ppp/peers .
Чтобы убедиться, что соединение PPPoE установлено, проверьте вывод pppd в системном логе:
При успешном соединении вы увидите что-то наподобие следующих строк:
Файл настроек /etc/ppp/peers/provider используется по умолчанию, если при вызове pppd не было указано имя файла. Вместо явного указания имени файла настроек программе pppd вы также можете просто добавить символическую ссылку на свой файл:
Теперь можно устанавливать соединение одной командой
Чтобы разорвать соединение, выполните
Запуск pppd при старте системы
Выполните следующие шаги:
- Настройте модуль ppp_generic для загрузки во время запуска. Инструкции можно найти на странице Модули ядра#Автоматическое управление модулями.
- Включите службу systemd:
Дополнительно
Автодозвон
Если pppd запущен, вы можете выполнить сброс соединения, отправив процессу сигнал SIGHUP :
После разрыва соединение будет вновь установлено.
Используя cron
Выполните следующие шаги от имени суперпользователя.
Создайте файл скрипта (например, pppd_redial.sh ) со следующим содержимым:
Сохраните файл и дайте ему права на выполнение.
Теперь создайте задачу для cron, используя команду crontab -e . Если появляется ошибка, убедитесь, что установлена переменная окружения EDITOR . По команде откроется редактор — добавьте в него строку, указав правильный путь до вашего скрипта перезапуска соединения:
Сохраните файл и убедитесь, что служба cronie работает. Если это не так, включите и запустите службу cronie .
Теперь ваше соединение будет перезапускаться каждый день в 4 утра.
Используя таймер systemd
Также вы можете настроить таймер systemd для выполнения ежедневного перезапуска соединения. Просто создайте файлы .service и .timer с одинаковыми именами:
Теперь просто включите и запустите таймер, и systemd будет выполнять сброс соединения каждый день в указанное время.
Решение проблем
Маршрут по умолчанию
При запуске pppd пытается добавить свой системный маршрут по умолчанию (default route). Если перед запуском уже был установлен такой маршрут, pppd не станет его обновлять, и новые соединения во внешнюю сеть направляться не будут. При этом в /var/log/errors.log вы увидите что-то наподобие:
Если это поведение нежелательно, и xxx.xxx.xxx.xxx — совсем не то, что вам нужно, вы можете создать простой скрипт в /etc/ppp/ip-pre-up с таким содержимым:
Не забудьте дать скрипту права на запуск.
Маскарадинг работает, но некоторые сайты не открываются
Проблема выражается в том, что соединение есть, но часть сайтов и сервисов не работают, если вы используете ваш компьютер в роли маршрутизатора для других компьютеров. Дело в том, что размер MTU (Maximum Transmission Unit — максимальное количество байт данных в одном пакете) в PPPoE равен 1492 байтам, что меньше, чем используют большинство сайтов (1500). Ваш маршрутизатор отправляет серверу специальный пакет ICMP 3:4 (сообщение о том, что нужно переразбиение данных), запрашивая меньший MTU, но сетевые экраны многих сайтов блокируют это сообщение.
Проблема решается добавлением правила с PMTU clamping в iptables:
Однако, по некоторой причине, это правило может не попадать в вывод iptables-save. Если у вас тот случай, когда iptables-restore не восстанавливает правило после перезапуска, попробуйте следующее решение.
Создайте файл службы systemd:
И включите эту службу.
Не удается загрузить модуль ядра ppp_generic
Проблема выражается в том, что при запуске процесс pppd не может найти соответствующий модуль:
Решается исправлением /etc/modprobe.d/modules.conf : замените в файле строку
или добавьте ее, если первой строки в файле не было.
После перезагрузки проблема должна решиться.
Источник
объяснение команды вывода «ifconfig ppp0»
Я пытаюсь понять смысл вывода команды:
Обратите внимание, что я использую интернет-usb-плату, поэтому я уверен, что интерфейс ppp0 связан с ним. В частности, у меня есть следующие вопросы:
- Что такое поле PtP:xxxx ?
- Почему поле подсети установлено в 255.255.255.255?
- Если адрес inet – это мой интернет-адрес, почему он отличается от интернет-адреса, вычисленного на общем веб-сайте (я имею в виду http://www.whatismyip.com )?
- inet = интернет? 🙂
- На третьей строке находится UP POINTOPOINT RUNNING NOARP MULTICAST строка UP POINTOPOINT RUNNING NOARP MULTICAST ; означает ли это, что моя подсеть не поддерживает многоадресную рассылку уровня 2?
Я объясню, используя вывод одного из наших интерфейсов PPP, который является DSL-соединением:
inet addr – наш локальный IP-адрес (inet действительно означает Интернет). Если это не относится к вам, там должен быть какой-то NAT или другая странность.
PtP – это IP-адрес партнера. Не нужно маршрутизировать (и этого нет). Несомненно, у равных есть несколько адресов, один из которых, вероятно, будет маршрутизироваться.
Маска – сетевая маска. Ссылка PPP представляет собой двухточечную ссылку, поэтому это / 32. Единственное, что находится на другом конце ссылки, – это сверстник. (Вы можете думать, что весь Интернет есть, но это не так, вы должны использовать peer как шлюз. ip route ls покажет маршрут по умолчанию через одноранговую систему, наша маршрутизация сложнее.)
Это флаги интерфейса. Это вверху, это точка-точка, она работает (я не уверен, что это не отличается от ppp). Он не использует arp (неудивительно, что это не Ethernet). Он передает многоадресный трафик. Он имеет максимальную передачу «единица» 1492 байта (потому что это PPPoE). Метрика равна 1, которая используется некоторыми динамическими протоколами маршрутизации.
Интересно только, что это RX / TX count. Я предполагаю, что ошибки и падение возможны, но не произошли.
И это общий трафик, который прошел через интерфейс с момента его создания (скорее всего, pppd запущен).
Источник
Linux что такое ppp0
L i n u x P a r k
при поддержке ВебКлуба
В. Водолазкий (vvv@rinet.ru)
Ох, как же мне надоел навязчивый сервис от Microsoft! Надоели «особенности» операционной системы Windows95, надоели ошибки в Microsoft Word, которые стоили при подготовке диссертации немало бессонных ночей, в общем. плюнул я на красивые форточки и всерьез сел за Linux.
Конечно же, многое поначалу было непривычно, а некоторые вещи поражают меня до сих пор. Возьмем, к примеру, проблему русификации. Есть и шрифты, и раскладки клавиатуры, и кодировка КОИ-8 постепенно пробила себе дорогу даже на экраны пользователей Windows. Но вот, чтобы воспользоваться всем этим, надо читать документацию на английском языке, подготовленную и переданную мировым сообществом гражданином Израиля, которому помогали ребята из Голландии, США, Тайваня, Замбии (или Заира — по e-mail адресу разве поймешь!) и только один наш соотечественник — Сергей Вакуленко оказался причастным к решению этой проблемы. Причем, как выяснилось, разработанные им шрифты и раскладки вошли в официальную версию X11 Release 6 и теперь доступны для всего человечества. Грустно, люди со всего мира о нас заботятся, бесплатно делают действительно нужную и важную работу, а нам наплевать! Знаете ли вы, например, о проекте интернационализации программных средств для UNIX, предусматривающим разработку, среди прочего и полностью русскоязычных версий всех утилит и системных программ. Но руководит русской частью проекта не родной наш Госкомитет по Информатике, а Ульрих Дреппер из западногерманского университета в Карлсруэ. Вот так.
Но к чему такое затянувшееся введение? А вот к чему! Дело в том, что университетские традиции Европы и Штатов предполагают обучение студентов на многопользовательских UNIX-системах, что предполагает качественно иной уровень «массовой» UNIX-культуры — базовых знаний системы, квалифицированных специалистов в пределах досягаемости неофитов, литературы, доступа к Internet и многих других факторов. У нас, по ряду причин, это не так. И поэтому нередко документация по установке UNIX-программ, особенно связанных с настройкой сетевого подключения оказывается не слишком понятной, или, что еще хуже, применимой. Одной из таких проблем является подключение Linux-машины к сети Internet. Поэтому давайте попробуем сделать эту операцию шаг за шагом.
Прежде всего определимся с типом соединения. Отечественные провайдеры, в от- личие от большинства администраторов многопользовательских систем на Западе отдают предпочтение не SLIP-соединению, а более современному протоколу PPP, что между прочим, опровергает расхожий тезис об отсталости российских Internet-технологий. Основные преимущества PPP по сравнению со SLIP состоят в следующем:
- назначение IP-адресов в PPP реализуется внутри PPP- соединения между компьютерами провайдера и клиента. Это значительно упрощает процесс конфигурирования при использовании динамических IP-адресов;
- Коррекция ошибок, возникающих при передаче данных осуществляется не между владельцем информационных ресурсов и потребителем, как в SLIP, а между провайдером и клиентом, что примерно на 15-20% повышает информационную скорость передачи данных.
Поэтому выберем какой-нибудь хост, к которому можно подключиться у нас. Кстати, в первом номере «Планеты Internet» за прошлый год была опубликована заметка о подключении к сети RINET. Не отличаясь оригинальностью (поскольку я тоже пользуюсь услугами этого провайдера) я попытаюсь на глазах у почтенной публики «прице- питься» к сети через RINET.
Прежде чем приступить к непосредственной установке необходимо собрать некото- рый объем исходных данных. Вот что нам потребуется:
Что нам нужно: | Значения в примере: | Ваши данные: |
Имя пользователя, используемое в электронной почте | myname | |
Входной идентификатор для регистрации в системе | ppmyname | |
Регистрационный пароль | begemot | |
IP-адрес пользователя | 194.87.171.101 | |
IP-адрес сервера DNS | 194.87.171.65 | |
Домен пользователя | rinet.ru |
Особенность подключения Linux-машины от DOS состоит прежде всего в том, что ваш компьютер, подключенный с помощью PPP-соединения превращается в полноправный узел сети Internet, в котором вы можете выступать как клиентом, так и сервером. Это означает, что прежде всего необходимо решить проблему маршрутизации — то есть определения путей доступа от вашей машины к другим компьютерам сети и обратно. Проблема для UNIX не нова и решается одним из трех способов:
- за счет локальной базы данных, помещаемой в файле /etc/hosts;
- за счет использования специальных серверов доменных имен (Domain Name System — DNS) 1;
- за счет базы данных на специальном сервере NIS (Network Information Service).
Нам потребуется создать простейший инфантильный сервер, который при любом запросе обращается к «авторитету», которым в нашем случае является сервер DNS вашего провайдера. При желании вы можете впоследствии нарастить мощность вашего DNS-сервера, чтобы снизить накладные расходы на запрос IP-адресов при длительной работе с одними и теми же узлами сети. Но об этом в следующий раз. А сейчас предположим, что в вашей сети всего одна машина — myname.
Кстати, а как установить имя машины? Все проблемы решает строка типа: которая помещается в один из инициализационных файлов 2
Что касается самого выбора имени, то надо было договариваться с провайдером раньше — при регистрации. А теперь ваш IP-адрес будет ассоциироваться у всего мира с машиной mynet.rinet.com. Ура, мы становимся сервером Internet и можем сами командовать электронной почтой в пределах машины! Так чтобы послать вам письмо, ваш корреспондент должен теперь использовать что-нибудь типа root@myname.rinet.ru. Согласитесь, что это уже круто!
Впрочем надувать щеки пока рано. Это ведь только перспектива, а пока нам предстоит немало потрудиться. Мы используем комбинированный подход: создадим крохотную локальную базу данных хостов и подключим внешний DNS-сервер. Прежде всего необходимо установить значение нескольких конфигурационных файлов. Начнем с файла /etc/host.conf. Вот его содержимое с учетом сделанных ранее допущений:
Первая строка указывает на способ организации поиска при поиске адресов узлов сети. Ключ hosts говорит о необходимости просматривать прежде всего локальную базу данных, размещаемую обычно в файле /etc/hosts, а второй — bind требует связаться для этого с внешним сервером DNS, который, между прочим, может быть запущен физически и на этой же физической машине. Вторая строка файла объявляет о поддержке этим сервером «многоженства», то есть использовании сразу нескольких IP-адресов. Хотя на работу служб DNS этот параметр влияния не оказывает, не жадничайте — поставьте и забудьте.
Зачем принята такая структура? Исключительно для удобства настройки системы! Так, если вы установили содержимое /etc/host.conf в точности, как это написано в примере, то named вначале будет просматривать файл /etc/hosts и лишь затем обращаться к внешним источникам информации, а если вы введете строку вида: то наоборот — вначале будет сделан запрос к удаленному серверу, и только в том случае, если вы обращаетесь к локальным адресам будет использована внутренняя база данных. Впрочем, как показала практика, первый вариант в большинстве случаев является оптимальным.
Поэтому перейдет к обсуждению содержимого файла /etc/hosts. Вот что подойдет вам в подавляющем большинстве случаев:
Нам необходимо только две записи — локальный хост, используемый для работы ряда программ в пределах машины и IP-адрес вашей машины, который установлен вашим провайдером. Для упрощения доступа определяется также синоним — просто имя myname.
Но и это еще не все! Нам необходимо указать системе, какими же серверами DNS необходимо пользоваться для определения IP-адресов. Эта информация хранится в файле /etc/resolv.conf:
В этом файле мы резервируем домен и указываем имена серверов (по одному на строку), которые используются нашей системой. По большому счету, для конечного пользователя этой информации вполне достаточно. Теперь, как только вы подключитесь к провайдеру, все запросы к сетевым ресурсам будут обслуживаться внешним сервером DNS, IP-адрес которого мы указали выше.
Но что представляет из себя процесс подключения? Реально он состоит из нескольких этапов:
- соединение с компьютером провайдера по коммутируемой линии связи;
- регистрация пользователя в удаленной системе;
- инициализация PPP-соединения.
В Windows-среде решение этих трех задач осуществляется какой-либо программой-монстром 3 , в которой разработчики пытаются упаковать все функции сразу. Но если этот подход применим для неподготовленных пользователей, не желающих эффективно использовать возможности аппаратных средств, то в UNIX мощь системы достигается за счет использования конвейера небольших, но тщательно отлаженных программ, каждая из которых решает какую-либо отдельную задачу. В случае с PPP этот функциональный набор состоит из следующих частей:
и, конечно же, собственно демон /sbin/pppd. Но демон живет внутренней жизнью и запускается при установлении соединения автоматически. А чтобы это соединение было установлено, нам придется разобраться с перечисленными выше файлами. Несмотря на их «огромное количество», работы совсем немного. Во-первых, с ppp-off вам делать ничего не придется — задача этого файла состоит в том, чтобы убить демон pppd после того, как сеанс работы с сетью завершен. А остальные мы рассмотрим по порядку.
Начнем с программы, которую обычно используют для установки соединения — ppp-on. Несмотря на то, что эта программа помещается при установке системы в каталог /sbin это обычный сценарный файл, в который вы, кстати, должны внести ваши данные:
Ну хорошо, в конце концов ppp-on вызовет программу ppp-on-dialer, а что представляет собой она? Это тоже небольшой сценарий, который приведен ниже:
Фактически, это последовательность сообщений, получаемых программой от модема и ее реакции. Нет ничего удивительного, что этот процесс, по большому счету, вполне стандартен для миллионов компьютеров во всем мире. Но, как говорится в одной рекламе:
«Вашему ребенку подойдет любой шампунь.
Но не моему малышу!»
Попросту говоря, вам потребуется указать модему, что вы пользуетесь не тональным набором номера (ATD) , а импульсным (ATDP), который принят у нас. На этом изменения в этом файле можно считать законченными.
Впрочем, это еще не все. Осталось установить еще одну строчку в файле /etc/ppp/options, а именно — указать имя домена (в нашем случае — rinet.ru).
Все! Вопреки многочисленным сказкам о неподъемности UNIX для конечного пользователя мы установили клиентскую часть ppp-соединения, затратив на это, максимум полчаса 4 . Теперь нам потребуется только убедиться в работоспособности нашего соединения.
Прежде всего, проверим, как работает TCP/IP. Для этого нам достаточно использовать команду PING 5 . Вначале потренируемся «на кошечках» и протестируем работу TCP/IP внутри вашего компьютера без выхода в Internet.
Итак, на моей домашней 486DX4/100 получается следующее:
Теперь смело в бой! Соединяемся с сервером (ppp-on соединится с провайдером, запустит демон pppd и вернет вам управление — запускать его в фоновом режиме не нужно), а после этого можно проверить доступность вашего провайдера с помощью команды типа ping www.rinet.ru. Если все в порядке, то вы получите времена задержки до 200-300 миллисекунд, в зависимости от пропускной способности вашего модема. Но это только небольшой, хотя и важный участок сети — между вами и провайдером. А как работает линия дальше?
Можно для проверки вновь воспользоваться ping, но на мой взгляд это слишком однообразное и нудное занятие, которое не плохо бы слегка оживить. А для оживления мы используем программу traceroute, которая возвращает список узлов, через который проходит ваш пакет при запросе типа ping. Для придания романтизма рутинной проверке работспособности PPP-соединения мы пойдем «в Пентагон», а вернее в сетевой центр NIC.DDN.MIL, который является одним из старейших и надежных сетевых информационных компьютеров. Вот что я получил для своего соединения (безымянный модем 14400):
Во-первых, мы проверили доступность и работу сервера DNS (мы ведь обратились к серверу NIC по имени, а не по IP-адресу), а во-вторых убедились, что пакеты бегают как положено по всему Internet. Теперь вы без проблем можете пользоваться ftp, telnet, gopher, archie, www и прочими приятными программами.
Не могу удержаться, чтобы лишний раз не пнуть DOS, Windows и проч. Все необходимые клиенты для всех служб Internet входят в стандартную поставку Linux. Кстати, Netscape выпустила версии своего Навигатора для Linux (как 2.0, так и 3.01), и работают эти программы стабильнее и быстрее, чем в Windows.
Насчет «быстрее » можно и поконкретнее. Я пытался «пропинговать> nic.ddn.mil и из под Windows 95. На той же машине. И получил среднее время доступа порядка 760 миллисекунд. Факты говорят сами за себя.
Но я знаю, знаю, что поклонники «форточек> уже заготовили смертельный удар! И состоит он в простом и каверзном одновременно вопросе: А что делать, если телефон провайдера занят? Неужели потребуется еще и еще раз вручную вводить ppp-on?
Вы что же, рассчитываете на ответ настоящего аскета — мол нет в этом никакой проблемы, и руки у пользователя не отвалятся? Не дождетесь, в UNIX-е ведь работают такие же люди как и везде, и тоже не любят дурной работы. А поэтому позвольте предложить вам небольшой сценарий, который организует дозвон до провайдера в автоматическом режиме. Вот он:
Источник