Linux point to point protocol

Глава 8. Протокол Point-to-Point

Точно так же, как SLIP, PPP протокол нужен для того, чтобы посылать пакеты через последовательную связь. Он позволяет сообщающимся сторонам обсудить опции такие, как IP-адрес, максимальный размер пакета во время запуска и обеспечивает авторизацию клиента. Для каждой из этих возможностей PPP имеет отдельный протокол. Ниже мы кратко рассмотрим эти базисные стандартные блоки PPP. Это обсуждение далеко не полно, и если Вы хотите выяснить что-либо еще относительно PPP, то я настоятельно рекомендую Вам прочитать спецификацию в RFC 1548 также, как и dozen или companion RFC. Кроме того, в O’Reilly издана хорошая книга «Using & Managing PPP» (автор Andrew Sun).

В самой основе PPP лежит управление передачей данных высокого уровня, сокращенно HDLC (High-Level Data Link Control), которое определяет границы структур PPP и обеспечивает 16 разрядов контрольной суммы. В противоположность более примитивному оформлению SLIP-пакета, PPP способен к захвату блоков из других протоколов таких, как IP, IPX Novell или Appletalk. PPP достигает этого, добавляя область протокола к основному HDLC.

Протокол управления связью LCP (Link Control Protocol) используется на вершине HDLC для согласования опций, имеющих отношение к каналу связи типа Maximum Receive Unit (MRU), которая заявляет максимальный размер пакета одной стороны связи.

Важный шаг в конфигурации связи PPP, организация клиентской авторизации. Хотя это необязательно, но для dial-up линий должно быть сделано. Обычно вызываемый хост просит клиента зарегистрировать себя, доказывая, что он знает секретный ключ. Если клиент набрал неправильный ключ, связь будет прервана. С PPP авторизация работает обоими способами. То есть, вызывающий может также просить, чтобы сервер опознал себя. Эти процедуры установления подлиности не зависят друг от друга. Имеются два протокола для различных типов авторизации, которые мы обсудим позже. Они называются «протокол установления подлинности пароля» или PAP (Password Authentication Protocol) и CHAP (Challenge Handshake Authentication Protocol).

Читайте также:  Как поставить оперу на линукс

Каждый сетевой протокол, который использует канал связи подобно IP, AppleTalk и т.д., может быть сконфигурирован динамически, используя Network Control Protocol (NCP). Например, чтобы послать IP-пакет, оба PPP-абонента должны сначала обсудить, какой из IP-адресов каждый из них использует. Протокол управления, используемый для этого, Internet Protocol Control Protocol (IPCP).

Помимо посылки IP-пакетов PPP также поддерживает Van Jacobson header compression IP-пакетов. Это метод для того, чтобы сократить заголовки TCP-блоков всего до трех байтов. Это также используется в CSLIP и относится к VJ header compression. Использование сжатия может быть задано во время запуска через IPCP.

PPP и Linux

В Linux функциональные возможности PPP разделены на две части: драйвер low-level HDLC (HDLC, IPCP, IPXCP. ), который размещен в ядре, и пользовательский демон pppd, обрабатывающий различные протоколы управления. Текущая версия PPP для Linux содержит ядро PPP-модуля, pppd и программу chat, которая используется для того, чтобы выполнить удаленную связь.

PPP kernel-драйвер был написан Michael Callahan. Демон pppd был выведен из реализации PPP для Sun и 386BSD, которая была написана Drew Perkins и другими, и сейчас поддерживается Paul Mackerras. Он был портирован в Linux Al Longyear. Программа chat была написана Karl Fox.

Точно так же, как и SLIP, PPP выполнен посредством специальной line discipline. Для того, чтобы использовать последовательную линию как PPP-связь, Вы сначала должны установить связь с помощью Вашего модема, как обычно, и перевести линию в PPP-режим. В этом методе все входящие данные проходят через PPP-драйвер, который проверяет входящие HDLC-структуры на целостность (каждая HDLC-структура несет 16 битов контрольной суммы). В настоящее время он способен к опциональному применению Van Jacobson header compression. Как только Linux стала поддерживать IPX, драйвер PPP был расширен для того, чтобы обрабатывать IPX-пакеты.

Kernel-драйверу помогает pppd, PPP daemon, который выполняет инициализацию и опознание, которое является необходимым перед тем, как трафик может быть послан по связи. Поведение pppd может подстраиваться, используя ряд опций. PPP подробно освещается в книге Using & Managing PPP, я рассмотрю его здесь лишь в общем виде, поскольку полное описание очень громоздко.

Читайте также:  Cades linux amd64 tar gz

Эта работа не может покрыть все аспекты pppd, но даст Вам полное введение. Для более подробной информации, обратитесь к man-страницам и файлам README дистрибутива pppd, которые должны помочь Вам решить большинство вопросов. Если у Вас остаются проблемы даже после чтения всей документации, то Вы должны обратиться в конференцию comp.protocols.ppp . Там Вы узнаете многое о pppd, эти конференции просто необъятны.

Источник

Linux point to point protocol

PPP (Point-to-Point Protocol) is commonly used in establishing a direct connection between two networking nodes. It can provide connection authentication, transmission encryption, and compression.

Installation

USE flags for net-dialup/ppp Point-to-Point Protocol (PPP)

activefilter Enables active filter support
atm Enable Asynchronous Transfer Mode protocol support
gtk Installs GTK+ password prompting program that can be used by passprompt.so PPP plugin for reading the password from a X11 input terminal
pam Add support for PAM (Pluggable Authentication Modules) — DANGEROUS to arbitrarily flip
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking

Portage has a USE flag ppp for enabling support for PPP for other packages.

After setting global USE flags update your system to the changes take effect:

Or emerge net-dialup/ppp package manually:

Kernel

Following kernel options need to be enabled, to support PPPoE, which is used in most cases.

Device Drivers ---> [*] Network device support ---> PPP (point-to-point protocol) support < >PPP BSD-Compress compression (NEW) < >PPP Deflate compression (NEW) [ ] PPP filtering (NEW) < >PPP MPPE compression (encryption) (EXPERIMENTAL) (NEW) [ ] PPP multilink support (EXPERIMENTAL) (NEW) PPP over Ethernet (EXPERIMENTAL) < >PPP support for async serial ports (NEW) < >PPP support for sync tty ports (NEW)
Optional PPP options

Option Driver Description
PPP BSD-Compress compression ppp_bsdcomp (Not recommended) Support for data compression. «PPP Deflate compression» is preferable.
PPP filtering Support for packet filtering.
PPP MPPE compression (encryption) ppp_mppe Driver for Microsoft Point-to-Point Encryption.
PPP multilink support Support for PPP multilink to combine serveral lines.
PPP over Ethernet pppoe Driver for PPPoE.
PPP support for sync tty ports ppp_sync_tty Support for synchronous devices.
Читайте также:  Linux create user with no home directory

Finally you need to rebuild linux, install and boot new kernel with PPP support.

Configuration

Provided eth0 following lines should be added for PPPoE connection:

. config_ppp0="ppp" link_ppp0="eth0" (Specify your ethernet interface) plugins_ppp0="pppoe" username_ppp0='user' password_ppp0='password' pppd_ppp0=" noauth defaultroute usepeerdns mtu 9120 (Get the correct MTU (Jumbo frame) value from your eth0 Gigabit Ethernet card interface) holdoff 3 child-timeout 60 lcp-echo-interval 15 lcp-echo-failure 3 noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp" . rc_net_ppp0_need="net.eth0"

Create an init script for the PPP device by symlinking to net.lo:

Example setup with systemd and automatic connection

First, create the configuration file:

 
plugin pppoe.so # network interface enp41s0 # login name name "you_login_to_ISP" usepeerdns persist # Uncomment this to enable dial on demand #demand #idle 180 defaultroute defaultroute-metric 1023 hide-password noauth #linkname eth0 ifname eth0 

enp41s0 is the network interface card to use. It can be found with ip link command.

Next, create the password secrets file:

 
# Secrets for authentication using CHAP # client server secret IP addresses your_login_to_ISP * your_secret_password 

For this to work at system startup, add the following unit in /etc/systemd/system/pppoe.service :

 
[Unit] Description=PPPoE connection BindsTo=sys-subsystem-net-devices-enp41s0.device After=sys-subsystem-net-devices-enp41s0.device [Service] Type=forking PIDFile=/var/run/eth0.pid #RemainAfterExit=true ExecStart=/usr/sbin/pon ExecStop=/usr/sbin/poff provider [Install] WantedBy=multi-user.target 

sys-subsystem-net-devices-enp41s0.device is the network device via which pppoe will connect on. To find out the exact name you can use the following bash command

Optionally, create a service unit to handle wake up after sleep:

 
[Install] WantedBy=sleep.target [Unit] After=systemd-suspend.service systemd-hybrid-sleep.service systemd-hibernate.service [Service] Type=simple ExecStart=/bin/systemctl restart pppoe 

If it works as expected, enable them on a permanent basis:

Источник

Оцените статью
Adblock
detector