<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Iptables_-_pppd</id>
	<title>Iptables - pppd - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Iptables_-_pppd"/>
	<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Iptables_-_pppd&amp;action=history"/>
	<updated>2026-04-03T18:59:55Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.1</generator>
	<entry>
		<id>https://support.qbpro.ru/index.php?title=Iptables_-_pppd&amp;diff=2026&amp;oldid=prev</id>
		<title>imported&gt;Vix: Новая страница: «''ppp''' (''Paul's PPP Package'') — пакет с открытым исходным кодом, который реализует Wikipedia:ru:PPP (сетев…»</title>
		<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Iptables_-_pppd&amp;diff=2026&amp;oldid=prev"/>
		<updated>2016-08-11T07:46:15Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;#039;&amp;#039;ppp&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;Paul&amp;#039;s PPP Package&amp;#039;&amp;#039;) — пакет с открытым исходным кодом, который реализует Wikipedia:ru:PPP (сетев…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;''ppp''' (''Paul's PPP Package'') — пакет с открытым исходным кодом, который реализует [[Wikipedia:ru:PPP (сетевой протокол)|протокол соединения точка-точка]] (PPP) для систем Linux и Solaris. Пакет предоставляет демон ''pppd'', который может быть использован вместе с {{Pkg|xl2tpd}}, {{Pkg|pptpd}} и [[Netctl (Русский)|netctl]].&lt;br /&gt;
&lt;br /&gt;
Протоколы [[Wikipedia:ru:3G|3G]], [[Wikipedia:ru:L2TP|L2TP]] и [[Wikipedia:ru:PPPoE|PPPoE]] работают на основе PPP, поэтому они также могут контролироваться ppp.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
&lt;br /&gt;
[[Установите]] пакет {{Pkg|ppp}}, доступный в [[Official repositories (Русский)|официальных репозиториях]].&lt;br /&gt;
&lt;br /&gt;
Убедитесь, что ядро вашей системы скомпилировано с поддержкой PPPoE (верно для стандартной сборки):&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ zgrep CONFIG_PPPOE /proc/config.gz|&lt;br /&gt;
2=CONFIG_PPPOE=m}}&lt;br /&gt;
&lt;br /&gt;
== Настройка ==&lt;br /&gt;
&lt;br /&gt;
=== PPPoE ===&lt;br /&gt;
&lt;br /&gt;
Создайте файл настроек соединения:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ppp/peers/''имя_соединения''|&lt;br /&gt;
plugin rp-pppoe.so&lt;br /&gt;
# rp_pppoe_ac 'имя концентратора доступа'&lt;br /&gt;
# rp_pppoe_service 'имя службы PPPoE'&lt;br /&gt;
&lt;br /&gt;
# сетевой интерфейс&lt;br /&gt;
eth0&lt;br /&gt;
# ваш логин&lt;br /&gt;
name &amp;quot;''имя_пользователя''&amp;quot;&lt;br /&gt;
usepeerdns&lt;br /&gt;
persist&lt;br /&gt;
# раскомментируйте, если вам нужен автодозвон &amp;quot;по требованию&amp;quot;&lt;br /&gt;
#demand&lt;br /&gt;
#idle 180&lt;br /&gt;
defaultroute&lt;br /&gt;
hide-password&lt;br /&gt;
noauth}}&lt;br /&gt;
&lt;br /&gt;
Если задана опция {{ic|usepeerdns}}, при соединении ''pppd'' создаст файл {{ic|/etc/ppp/resolv.conf}} с полученными адресами DNS-серверов. По умолчанию скрипт {{ic|/etc/ppp/ip-up.d/00_dns}} перемещает этот файл в {{ic|/etc/resolv.conf}}, чтобы система могла использовать эти DNS-серверы. Если это поведение является нежелательным (например, установлен локальный кэширующий DNS), отредактируйте {{ic|/etc/ppp/ip-up.d/00_dns.sh}} под ваши нужды.&lt;br /&gt;
&lt;br /&gt;
Добавьте запись с паролем соединения в {{ic|/etc/ppp/pap-secrets}} или {{ic|/etc/ppp/chap-secrets}}, в зависимости от типа аутентификации, используемого вашим провайдером. Если вы не уверены, можно добавить запись в оба файла, ''pppd'' выберет нужный самостоятельно. Запись выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
 ''имя_пользователя'' * ''пароль''&lt;br /&gt;
&lt;br /&gt;
Имя пользователя должно совпадать с именем, указанным в опции {{ic|name}}. Оно также используется для аутентификации, если не переопределено другим значением с помощью опции {{ic|user}}.&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете попробовать установить соединение командой:&lt;br /&gt;
&lt;br /&gt;
 # pppd call ''имя_соединения''&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
 # pon ''имя_соединения''&lt;br /&gt;
&lt;br /&gt;
где ''имя_соединения'' — имя файла настроек, созданного в {{ic|/etc/ppp/peers}}.&lt;br /&gt;
&lt;br /&gt;
Чтобы убедиться, что соединение PPPoE установлено, проверьте вывод ''pppd'' в системном логе:&lt;br /&gt;
&lt;br /&gt;
 # journalctl -b --no-pager | grep pppd&lt;br /&gt;
&lt;br /&gt;
При успешном соединении вы увидите что-то наподобие следующих строк:&lt;br /&gt;
&lt;br /&gt;
 Jul 09 22:42:33 localhost pppd[239]: Plugin rp-pppoe.so loaded.&lt;br /&gt;
 Jul 09 22:42:33 localhost pppd[239]: RP-PPPoE plugin version 3.8p compiled against pppd 2.4.6&lt;br /&gt;
 Jul 09 22:42:33 localhost network[184]: RP-PPPoE plugin version 3.8p compiled against pppd 2.4.6&lt;br /&gt;
 Jul 09 22:42:33 localhost pppd[239]: pppd 2.4.6 started by root, uid 0&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: PPP session is 292&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: Connected to a0:f3:e4:4f:e3:b0 via interface enp4s0&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: Using interface ppp0&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: Connect: ppp0 &amp;lt;--&amp;gt; enp4s0&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: CHAP authentication succeeded: CHAP authentication success&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: CHAP authentication succeeded&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: peer from calling number A0:F3:E4:4F:E3:B0 authorized&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: Cannot determine ethernet address for proxy ARP&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: local  IP address 10.6.2.137&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: remote IP address 10.6.1.1&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: primary   DNS address 10.6.1.1&lt;br /&gt;
 Jul 09 22:42:39 localhost pppd[239]: secondary DNS address 210.21.196.6&lt;br /&gt;
&lt;br /&gt;
Файл настроек {{ic|/etc/ppp/peers/provider}} используется по умолчанию, если при вызове ''pppd'' не было указано имя файла. Вместо явного указания имени файла настроек программе ''pppd'' вы также можете просто добавить символическую ссылку на свой файл:&lt;br /&gt;
&lt;br /&gt;
 # ln -s /etc/ppp/peers/''имя_соединения'' /etc/ppp/peers/provider&lt;br /&gt;
&lt;br /&gt;
Теперь можно устанавливать соединение одной командой&lt;br /&gt;
&lt;br /&gt;
 # pon&lt;br /&gt;
&lt;br /&gt;
Чтобы разорвать соединение, выполните&lt;br /&gt;
&lt;br /&gt;
 # poff ''имя_соединения''&lt;br /&gt;
&lt;br /&gt;
=== Запуск pppd при старте системы ===&lt;br /&gt;
&lt;br /&gt;
Выполните следующие шаги:&lt;br /&gt;
&lt;br /&gt;
* Настройте модуль {{ic|ppp_generic}} для загрузки во время запуска. Инструкции можно найти на странице [[Модули ядра#Автоматическое управление модулями]].&lt;br /&gt;
* [[Включите]] службу systemd:&lt;br /&gt;
&lt;br /&gt;
 # systemctl enable ppp@''имя_соединения''.service&lt;br /&gt;
&lt;br /&gt;
== Дополнительно ==&lt;br /&gt;
&lt;br /&gt;
=== Автодозвон ===&lt;br /&gt;
&lt;br /&gt;
Если ''pppd'' запущен, вы можете выполнить сброс соединения, отправив процессу сигнал {{ic|SIGHUP}}:&lt;br /&gt;
&lt;br /&gt;
 # export PPPD_PID=$(pidof pppd)&lt;br /&gt;
 # kill -s HUP $PPPD_PID&lt;br /&gt;
&lt;br /&gt;
После разрыва соединение будет вновь установлено.&lt;br /&gt;
&lt;br /&gt;
{{Note (Русский)|Убедитесь, что опция {{ic|persist}} включена в ваш файл конфигурации {{ic|/etc/ppp/peers/provider}}. Также вы можете добавить параметр {{ic|holdoff 0}} для переподключения без тайм-аута.}}&lt;br /&gt;
&lt;br /&gt;
=== Автоматический разрыв соединения ===&lt;br /&gt;
&lt;br /&gt;
{{Note (Русский)|Если вы не оставляете ваш компьютер работать круглосуточно, то можете смело пропустить этот шаг}}&lt;br /&gt;
&lt;br /&gt;
Если у вас безлимитное соединение и вы поддерживаете его непрерывно, некоторые провайдеры могут сбрасывать его каждые 24 часа. Это гарантирует, что ваш динамический IP-адрес будет меняться каждые сутки. Чтобы иметь возможность подключиться извне, вы можете использовать какой-нибудь динамический DNS-сервис вместе с {{AUR|inadyn}}{{Broken package link (Русский)|{{aur-mirror (Русский)|inadyn}}}}, тогда по доменному имени всегда можно будет вычислить текущий IP. Но чтобы избежать нежелательных разрывов, вы можете сами (настроив задачу для [[cron]] либо создав таймер [[systemd (Русский)#Таймеры|systemd]]) выполнять сброс каждые сутки в такое время, когда никто не пользуется соединением — например, в 4 утра.&lt;br /&gt;
&lt;br /&gt;
==== Используя cron ====&lt;br /&gt;
&lt;br /&gt;
Выполните следующие шаги от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
Создайте файл скрипта (например, {{ic|pppd_redial.sh}}) со следующим содержимым:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 message=&amp;quot;Restarting the PPP connection @:&amp;quot; $(date)&lt;br /&gt;
 pppd_id=$(pidof pppd)&lt;br /&gt;
 &lt;br /&gt;
 kill -s HUP $pppd_id&lt;br /&gt;
 echo $message&lt;br /&gt;
&lt;br /&gt;
Сохраните файл и дайте ему права на выполнение.&lt;br /&gt;
&lt;br /&gt;
Теперь создайте задачу для [[cron]], используя команду {{ic|crontab -e}}. Если появляется ошибка, убедитесь, что установлена [[Environment variables (Русский)|переменная окружения]] {{ic|EDITOR}}. По команде откроется редактор — добавьте в него строку, указав правильный путь до вашего скрипта перезапуска соединения:&lt;br /&gt;
&lt;br /&gt;
 0 4 * * * /bin/bash /root/pppd_redial.sh&lt;br /&gt;
&lt;br /&gt;
Сохраните файл и убедитесь, что служба {{ic|cronie}} работает. Если это не так, [[включите]] и [[запустите]] службу {{ic|cronie}}.&lt;br /&gt;
&lt;br /&gt;
Теперь ваше соединение будет перезапускаться каждый день в 4 утра.&lt;br /&gt;
&lt;br /&gt;
==== Используя таймер systemd ====&lt;br /&gt;
&lt;br /&gt;
Также вы можете настроить таймер [[systemd (Русский)|systemd]] для выполнения ежедневного перезапуска соединения. Просто создайте файлы ''.service'' и ''.timer'' с одинаковыми именами:&lt;br /&gt;
&lt;br /&gt;
{{hc|ppp-redial.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Reconnect PPP connections daily&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*-*-* 05:00:00&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|ppp-redial.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Reconnect PPP connections&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/poff -r&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Теперь просто [[включите]] и [[запустите]] таймер, и systemd будет выполнять сброс соединения каждый день в указанное время.&lt;br /&gt;
&lt;br /&gt;
== Решение проблем ==&lt;br /&gt;
&lt;br /&gt;
=== Маршрут по умолчанию ===&lt;br /&gt;
&lt;br /&gt;
При запуске ''pppd'' пытается добавить свой системный маршрут по умолчанию (''default route''). Если перед запуском уже был установлен такой маршрут, ''pppd'' не станет его обновлять, и новые соединения во внешнюю сеть направляться не будут. При этом в {{ic|/var/log/errors.log}} вы увидите что-то наподобие:&lt;br /&gt;
&lt;br /&gt;
 pppd[nnnn]: not replacing existing default route via ''xxx.xxx.xxx.xxx''&lt;br /&gt;
&lt;br /&gt;
Если это поведение нежелательно, и {{ic|xxx.xxx.xxx.xxx}} — совсем не то, что вам нужно, вы можете создать простой скрипт в {{ic|/etc/ppp/ip-pre-up}} с таким содержимым:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ppp/ip-pre-up/10-route-del-default.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
/usr/bin/route del default&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Не забудьте дать скрипту права на запуск.&lt;br /&gt;
&lt;br /&gt;
[[Перезапустите]] службу {{ic|pppd}}.&lt;br /&gt;
&lt;br /&gt;
=== Маскарадинг работает, но некоторые сайты не открываются ===&lt;br /&gt;
&lt;br /&gt;
Проблема выражается в том, что соединение есть, но часть сайтов и сервисов не работают, если вы используете ваш компьютер в роли маршрутизатора для других компьютеров. Дело в том, что размер MTU (''Maximum Transmission Unit'' — максимальное количество байт данных в одном пакете) в PPPoE равен 1492 байтам, что меньше, чем используют большинство сайтов (1500). Ваш маршрутизатор отправляет серверу специальный пакет ICMP 3:4 (сообщение о том, что нужно переразбиение данных), запрашивая меньший MTU, но сетевые экраны многих сайтов блокируют это сообщение.&lt;br /&gt;
&lt;br /&gt;
Проблема решается добавлением правила с PMTU clamping в [[iptables]]:&lt;br /&gt;
&lt;br /&gt;
 # iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu&lt;br /&gt;
&lt;br /&gt;
Однако, по некоторой причине, это правило может не попадать в вывод ''iptables-save''.&lt;br /&gt;
Если у вас тот случай, когда ''iptables-restore'' не восстанавливает правило после перезапуска, попробуйте следующее решение.&lt;br /&gt;
&lt;br /&gt;
Создайте файл службы [[systemd]]:&lt;br /&gt;
&lt;br /&gt;
{{hc|pmtu-clamping.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=PMTU clamping for pppoe&lt;br /&gt;
Requires=iptables.service&lt;br /&gt;
After=iptables.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
И включите эту службу.&lt;br /&gt;
&lt;br /&gt;
=== Не удается загрузить модуль ядра ppp_generic ===&lt;br /&gt;
&lt;br /&gt;
Проблема выражается в том, что при запуске процесс ''pppd'' не может найти соответствующий модуль:&lt;br /&gt;
&lt;br /&gt;
 Couldn't open the /dev/ppp device: No such device or address&lt;br /&gt;
 Please load the ppp_generic kernel module.&lt;br /&gt;
&lt;br /&gt;
Решается исправлением {{ic|/etc/modprobe.d/modules.conf}}: замените в файле строку&lt;br /&gt;
&lt;br /&gt;
 alias char-major-108 ppp&lt;br /&gt;
&lt;br /&gt;
на&lt;br /&gt;
&lt;br /&gt;
 alias char-major-108 ppp_generic&lt;br /&gt;
&lt;br /&gt;
или добавьте ее, если первой строки в файле не было.&lt;br /&gt;
&lt;br /&gt;
После перезагрузки проблема должна решиться.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.archlinux.org/index.php?title=Pppd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&amp;amp;action=edit взято тут...]&lt;/div&gt;</summary>
		<author><name>imported&gt;Vix</name></author>
	</entry>
</feed>