Linux PPPoE:認証情報を守るNetworkManager診断・設定ガイド

PPPoE は Ethernet 上で PPP セッションを運ぶプロトコルであり、ADSL、光回線、あるいはブロードバンドそのものと同義ではありません。現在の家庭内ネットワークでは、多くの場合 ONT またはルーターが PPPoE を開始します。通信事業者が機器をブリッジモードにし、ホストからの接続を明示的に求めている場合に限り、Linux で直接 PPPoE セッションを確立します。用語については、本サイトのブロードバンド、ADSL、PPPoE の用語解説も参照してください。

このガイドでは、現在の NetworkManager とディストリビューションがサポートするツールを優先します。出所不明の古い RPM をインストールしたり、NetworkManager、pppoeconf、自作の pppd サービス、ルーターのダイヤルを同時に動かしたり、リゾルバーやファイアウォール設定を無条件に上書きしたりしないでください。

PPPoE の終端を先に確認する

現在の構成Linux から通常見える状態正しい対応
ONT またはルーターが PPPoE を処理Ethernet または Wi-Fi が DHCP からプライベートアドレスとデフォルトゲートウェイを取得Linux に PPPoE を追加せず、権限のあるルーター画面で WAN を診断する
ONT がブリッジで Linux を直結物理 Ethernet に通常のインターネットアドレスがなく、事業者がそのホストからの接続を要求この場合に限って対象インターフェースへ PPPoE を作成する
ブリッジ接続に VLAN も必要事業者が特定 VLAN ID を指定し、PPPoE は VLAN インターフェース上にある事業者資料に従って先に VLAN を作成し、PPPoE を結び付ける。ID を推測しない
企業・集合住宅の共有アクセス既存ゲートウェイ、認証装置、同時接続制限がある可能性先にネットワーク管理者へ確認し、アクセスコンセントレーターを探索したり他人のセッションを奪ったりしない

まず ONT またはルーターの WAN 状態を確認します。すでに PPPoE 接続済みと表示されている場合、Linux から再度接続すると二重または同時セッションとなり、元のセッションが切断されることがあります。ONT のブリッジ化は IPTV、音声、VLAN、遠隔保守にも影響し得るため、事業者または機器所有者の承認なしに変更しないでください。

事業者から正確なパラメーターを入手する

変更前に次を記録し、承認された非公開の場所だけに保管します。

  • アカウントの正確な書式、正式なパスワード再設定経路、同時セッション上限。
  • PPPoE をルーターとホストのどちらで終端するか、および使用する物理ポート。
  • VLAN ID、PPPoE service name、指定 access concentrator の要否。
  • IPv4 アドレス割り当て、デフォルトルート、DNS、およびネイティブ IPv6、プレフィックス委譲、静的パラメーターの有無。
  • 事業者がサポートする MTU と MRU。ネット上で 1492 が一般的というだけで固定しない。
  • 機器、MAC、回線、旧セッションへの紐付けの有無と、残留セッションが解放されるまでの時間。

実際のユーザー名、パスワード、契約番号、MAC、公開アドレス、完全なログをフォーラム、チケットのスクリーンショット、AI チャットへ投稿しないでください。本記事の例は RFC 2606 予約済みの .invalid ドメインを使い、実在の契約者を表しません。

遠隔アクセスを保護し、基準状態を記録する

変更対象インターフェースを現在の SSH、VPN、踏み台、リモートデスクトップが通る場合は停止します。ローカルコンソールまたは独立した管理経路、既存設定のバックアップ、明確なロールバック担当者、保守時間帯を用意してください。「自動的に戻るはず」と考えてはいけません。

次のコマンドは通常のネットワーク状態を読み取るだけですが、出力にはホスト名、インターフェース、アドレス、ルート、接続名が含まれることがあります。共有前に項目ごとに伏せてください。

nmcli general status
nmcli device status
nmcli connection show --active
ip -brief link
ip -brief address
ip route show default
ip -6 route show default

古い記事の eth0 をコピーせず、実際の Ethernet インターフェース名を確認します。また、NetworkManager、systemd-networkd、Netplan、ifupdown、その他の基盤サービスのどれが管理しているかを特定します。1 つのインターフェースの設定主体は 1 つにします。

変更前に診断する

症状最初に確認する項目すぐに行ってはいけないこと
アクセスコンセントレーターが見つからない、探索がタイムアウト終端位置、ケーブル、ONT のブリッジ、親インターフェース、VLAN、service name、リンク状態パスワードの連続再入力、ファイアウォール無効化、無作為なパッケージ変更
認証失敗アカウント書式と状態、正式な再設定、回線または機器の紐付け、残留セッションパスワードをコマンドに入れる、完全なログを公開する
接続直後に切断同時接続または二重ダイヤル、回線イベント、事業者側セッション解放、PPP 交渉複数の PPP クライアントを同時起動する
アドレスはあるがデフォルトルートがないPPP のデフォルトルート設定、ルート優先度、競合する WAN プロファイル全ルート削除、全ネットワーク設定の上書き
IP は到達するが名前解決に失敗NetworkManager が取得した DNS、システムリゾルバー、分割 DNS古い DNS 一覧のダウンロード、/etc/resolv.conf の上書き
小さな通信は成功し大きな転送が止まる有効 MTU、Path MTU Discovery、ICMP フィルタリング、事業者対応MSS の無作為変更、MTU の安易な増加
IPv4 は正常だが IPv6 が異常事業者の IPv6 提供、IPV6CP、アドレス、プレフィックス、デフォルトルート問題を隠すための IPv6 全体無効化

認証失敗が続く場合は、ロックを避けるため再試行を止めて事業者へ連絡します。PPPoE アクセスコンセントレーターを発見できない問題は、通常パスワードが原因ではありません。

既存の NetworkManager プロファイルを確認する

secret を表示するオプションは使わず、完全なプロファイルを公開場所へ貼らないでください。次の例はパスワード以外のフィールドだけを選びます。isp-pppoe は例の接続名です。

nmcli -f connection.id,connection.type,connection.interface-name,connection.autoconnect,pppoe.service,ppp.mtu,ipv4.method,ipv6.method connection show isp-pppoe

親インターフェース、service name、自動接続、MTU、IPv4 と IPv6 の方式を確認します。ユーザー名も個人または契約の識別子なので、公開記録では伏せます。pppoe.password を読み出したりエクスポートしたりせず、NetworkManager のシステム接続ファイルもコピーしないでください。

境界を定めたローカル設定手順

デスクトップのネットワーク設定またはディストリビューション提供の NetworkManager フロントエンドを優先し、secret はデスクトップの secret agent または承認済み秘密ストアへ渡します。次のコマンドライン手順は、ホストでの直接接続、VLAN 不要、service name 不要、親インターフェースが enp1s0、かつ NetworkManager がそのインターフェースを管理していると事業者が確認した場合だけに適用します。

まず自動接続しない例示プロファイルを作成します。予約済みの架空アカウントなので誤って実行しても安全に認証失敗します。実際のパスワードをコマンド末尾へ追加してはいけません。

nmcli connection add type pppoe ifname enp1s0 con-name isp-pppoe pppoe.username subscriber@example.invalid pppoe.password-flags 2 connection.autoconnect no
nmcli connection edit isp-pppoe
nmcli --ask connection up isp-pppoe

対話エディター内で架空のユーザー名を事業者指定の正確な値へ置き換え、端末を録画・共有しないでください。pppoe.password-flags 2 はパスワードを保存しない指定で、必要時には nmcli --ask が対話的に尋ねます。無人再接続が必要なら、shell 履歴、スクリプト、環境変数、読み取り可能な設定ではなく、ディストリビューション対応の secret agent または組織の秘密管理を使用します。

VLAN または service name が必要なら値を推測せず停止し、事業者とディストリビューションの現行資料に従って正確な親インターフェースまたは属性を設定します。設定権限がない場合は、接続ファイルの権限を緩めず、ディストリビューションの PolicyKit または管理者手順を使ってください。

遠隔変更のロールバック保護

nmcli device checkpoint を提供するのは新しい NetworkManager だけです。まずローカルヘルプを確認し、checkpoint がなければ遠隔変更を試さないでください。表示される場合、次の時間制限付きコマンドは確認が届かなければチェックポイントを復元しますが、独立管理経路や現地担当者の代わりにはなりません。

nmcli device help
nmcli device checkpoint --timeout 120 enp1s0 -- nmcli --ask connection up isp-pppoe

同じ遠隔セッションから現在の上り回線を切ると、確認プロンプトそのものが届かない可能性があります。最も安全なのはローカルコンソール、または対象インターフェースを通らない管理経路です。

レイヤーごとに検証する

「接続済み」という表示だけで終えないでください。実際の PPP インターフェースを特定し、アドレス、ルート、DNS、MTU、IPv6 を順に検証します。

nmcli connection show --active
ip -brief address
ip route show default
ip -6 route show default
nmcli -f IP4.DNS,IP6.DNS device show ppp0
ip link show dev ppp0
getent ahosts example.com

ppp0 は一般的な例にすぎず、実際のインターフェースへ置き換えます。受入条件には、意図した PPPoE セッションが 1 本だけであること、正しい接続から IPv4 アドレスとデフォルトルートを得ること、システムリゾルバーが動作すること、IPv6 のアドレスとデフォルトルートが事業者の約束と一致すること、ファイアウォールが有効なこと、再起動または再接続が方針どおりなこと、切断後に旧上り回線を復旧できることを含めます。

インターネット到達性、Path MTU、遅延は、自分または事業者が明示的に許可した対象だけに対してテストし、対象、時刻、パケットサイズを記録します。example.com の名前解決は DNS の確認にすぎず、すべての経路が正常な証明ではありません。

MTU と大きなパケットの障害

RFC 2516は 1500 バイト Ethernet 上の従来の PPPoE 上限 1492 バイトを説明し、RFC 4638は経路全体が対応する場合にそれを超える MTU または MRU を交渉する仕組みを説明します。どちらも「必ず 1492 を入力する」「大きいほどよい」という意味ではありません。

まず ip link が示す有効 MTU を記録し、事業者アクセス、VLAN、ONT、スイッチ、対向が端から端まで対応するか確認します。小さなパケットは成功し大きなパケットだけ失敗する場合に限り、隔離した試験で記録付きの MTU 変更を 1 回行い、失敗したら元の値へ戻します。未知の経路障害を全体的な MSS 書き換えで隠さないでください。

DNS、IPv6、ファイアウォール

DNS は NetworkManager とシステムリゾルバーを通じ、ディストリビューション対応の方法で管理します。事業者が誤った DNS を配る場合は単一接続に承認済みサーバーを設定できますが、元の値、分割 DNS の挙動、プライバシー要件を先に記録します。古い DNS 一覧をダウンロードしたり /etc/resolv.conf を無条件に書き換えたりしないでください。

IPv6 が利用できるかは、事業者の PPP とプレフィックス設計に依存します。アドレス、デフォルトルート、DNS、下流へのプレフィックス委譲を個別に確認します。「事業者が IPv6 を提供しない」と「Linux の設定ミス」は別の結論です。一般的な修復として IPv6 を全体的に無効化しないでください。

PPPoE インターフェースは通常、事業者ネットワークへ直接面します。ホストのファイアウォールと受信デフォルト拒否を維持してください。ホストがルーターなら、転送、NAT、IPv6 ルーティング、下流フィルタリングは別のセキュリティ設計審査が必要です。古いウィザードの「NONE」選択肢は、現在ファイアウォールを止める根拠になりません。

ログと認証情報の安全

まずディストリビューション既定のログレベルを使い、認証情報を漏らし得る TRACE ログやパケットキャプチャをすぐに有効化しないでください。次の読み取りにはユーザー名、アドレス、アクセスコンセントレーター、接続識別子が含まれる可能性があります。管理された端末だけで確認し、共有前に最小化して伏せます。

journalctl -b -u NetworkManager --no-pager -n 200

パスワードプロンプトを撮影せず、パスワードの位置引数を使わず、secret を shell 履歴、環境変数、クリップボード管理、デバッグバンドル、チケットへ入れないでください。漏えいが疑われる場合は、事業者の正式経路から再設定し、権限範囲内のログと秘密ストアにあるコピーを処理します。

ディストリビューションによる違い

NetworkManager の nmcli マニュアルは対話入力とチェックポイント動作を定義し、接続属性マニュアルpppoe.parentusernamepassword-flags、通常は空にする service を定義します。ディストリビューションが古い NetworkManager を収録することがあるため、ローカルの nmcli --version とヘルプを先に確認します。

Debian Reference のネットワーク章は NetworkManager と従来の ifupdown 設定が競合し得ると注意し、Red Hat Enterprise Linux 9 文書は keyfile の手作業編集ではなく nmcli など対応インターフェースでの管理を推奨します。NetworkManager を使わないシステムでは、そのディストリビューションが現在サポートするツールと資料を 1 組だけ使い、Red Hat、Ubuntu、BackTrack、Slax、古い CentOS の手順を混在させないでください。

ロールバックと停止条件

新しいプロファイルが動作しない場合、ローカルコンソールから次の最小ロールバックを行います。遠隔セッションが PPPoE に依存する場合は遠隔実行しないでください。

nmcli connection modify isp-pppoe connection.autoconnect no
nmcli connection down isp-pppoe

その後、事前に記録した上り接続を復旧して検証します。差分確認に必要なので新しいプロファイルを急いで削除せず、不要と確認した後に承認済み構成管理手順から削除します。

所有権または管理権限が不明、現在の遠隔セッションに予備経路がない、ONT またはルーターがすでに接続中、事業者の正確な値がない、変更が音声・IPTV・他人のネットワークへ影響する、ログが secret を露出した疑いがある、回線機器が発熱・破損している、あるいは続行にファイアウォール停止、不明なバイナリの取得、全体設定の上書き、パスワードの連続再試行が必要な場合は、直ちに停止してください。

公式資料

2011 年原文アーカイブ

次の不活性なプレーンテキスト囲みは、source_export の可視本文を保ちつつ、開示した安全上の置換を正確に 4 箇所だけ行ったものです。http://earn.yesmall.biz/?p=724 の 1 箇所を [historical internal HTTP link redacted] に置換し、失効した安全でない DNS ダウンロード URL の 2 箇所をともに [dead HTTP DNS download redacted] に置換し、実在するように見える過去の契約者ユーザー名 1 箇所を [historical subscriber username redacted] に置換しました。実際のパスワード値は原文にないため、パスワード入力案内は残しています。正規化すべき行末空白はありませんでした。このアーカイブは現在の手順ではありません。古い RPM、すべて Yes、ファイアウォール無効化、BackTrack、設定ファイル直接編集の説明には従わないでください。

点击阅读:[宽带、窄带,ADSL、pppoe,虚拟拨号等名词解释]([historical internal HTTP link redacted])

当初在虚拟机中第一次安装好了红帽,在百度上Google了N次,逛了无数的论坛、博客,看了无数的帖子、文章,在网上找了各种方法,怎么也找不到“宽带”连上网的方法。

后来用Ubuntu也是这样,ubuntu自带的客户端根本连不上网,想找个连上网的办法吧,结果我见到的回答全是牛头不对马嘴,真是让人气馁。

虽然Linux各种发行版的命令大体一样,但有一些还是不同的。

Table of Contents

Toggle

- [Red Hat Linux](https://blog.lazying.art/en/html/computer_internet/717/%e5%90%84%e7%a7%8dlinux%e5%8f%91%e8%a1%8c%e7%89%88%e4%b8%8b%e7%9a%84pppoe%e6%8b%a8%e5%8f%b7%e5%91%bd%e4%bb%a4%e6%94%b6%e9%9b%86%e6%95%b4%e7%90%86.html/#Red_Hat_Linux)
- [Ubuntu](https://blog.lazying.art/en/html/computer_internet/717/%e5%90%84%e7%a7%8dlinux%e5%8f%91%e8%a1%8c%e7%89%88%e4%b8%8b%e7%9a%84pppoe%e6%8b%a8%e5%8f%b7%e5%91%bd%e4%bb%a4%e6%94%b6%e9%9b%86%e6%95%b4%e7%90%86.html/#Ubuntu)
- [CentOS](https://blog.lazying.art/en/html/computer_internet/717/%e5%90%84%e7%a7%8dlinux%e5%8f%91%e8%a1%8c%e7%89%88%e4%b8%8b%e7%9a%84pppoe%e6%8b%a8%e5%8f%b7%e5%91%bd%e4%bb%a4%e6%94%b6%e9%9b%86%e6%95%b4%e7%90%86.html/#CentOS)
- [BackTrack Linux](https://blog.lazying.art/en/html/computer_internet/717/%e5%90%84%e7%a7%8dlinux%e5%8f%91%e8%a1%8c%e7%89%88%e4%b8%8b%e7%9a%84pppoe%e6%8b%a8%e5%8f%b7%e5%91%bd%e4%bb%a4%e6%94%b6%e9%9b%86%e6%95%b4%e7%90%86.html/#BackTrack_Linux)
- [Slax](https://blog.lazying.art/en/html/computer_internet/717/%e5%90%84%e7%a7%8dlinux%e5%8f%91%e8%a1%8c%e7%89%88%e4%b8%8b%e7%9a%84pppoe%e6%8b%a8%e5%8f%b7%e5%91%bd%e4%bb%a4%e6%94%b6%e9%9b%86%e6%95%b4%e7%90%86.html/#Slax)

## Red Hat Linux

Red Hat Linux下面使用的是ADSL:调制解调器命令
 作用:ADSL调制解调器命令用来配置宽带调制解调器工作。
 说明:ADSL命令包括一组命令。首先检查是否安装了PPPOE软件,并且版本号要高于3.5-1。如果版本低于这个版本号,先升级软件版本(最新版本rp-ppoe-3.5-3.i386.rpm)。升级命令如下:
 [root@sample ~]# rpm Uvh rp-ppp-3.5-3.i386.rpm

**友情提示:我认为升级并不是必要的,如果你确定要升级,先在其它电脑上下载最新PPPOE软件,放在“/Home/你的用户名/”下面(因为终端默认路径就是这个文件夹),再执行上面的命令即可**(注意命令的大小写、文件名为你的下载的文件的文件名)

系统产生如下四个命令。

- adsl-setup:配置DNS、用户账号、密码、其他选项。
- adsl-start:使用ADSL连接互联网命令。
- adsl-stop:断开ADSL和互联网连接命令。
- adsl-status:检测ADSL连接状态命令。

[root@sample ~]# adsl-setup ← 建立ADSL连接

Welcome to the ADSL client setup. First, I will run some checks on
 your system to make sure the PPPoE client is installed properly…

LOGIN NAME

Enter your Login Name (default root): ← 填入ADSL连接的用户名

INTERFACE

Enter the Ethernet interface connected to the ADSL modem
 For Solaris, this is likely to be something like /dev/hme0.
 For Linux, it will be ethX, where ‘X’ is a number.
(default eth0): ← 指定网络接入设备,一块网卡的情况下,一般为默认eth0

Do you want the link to come up on demand, or stay up continuously?
 If you want it to come up on demand, enter the idle time in seconds
 after which the link should be dropped. If you want the link to
 stay up permanently, enter ‘no’ (two letters, lower-case.)
 NOTE: Demand-activated links do not interact well with dynamic IP
 addresses. You may have some problems with demand-activated links.
Enter the demand value (default no): ← 直接按回车,接受默认设置

DNS

Please enter the IP address of your ISP’s primary DNS server.
 If your ISP claims that ‘the server will provide dynamic DNS addresses’,
 enter ‘server’ (all lower-case) here.
 If you just press enter, I will assume you know what you are
 doing and not modify your DNS setup.
Enter the DNS information here: ← 如果知道DNS服务器的信息在此填入。不知道的情况按回车跳过(《全国DNS服务器IP地址》下载地址:[[dead HTTP DNS download redacted]]([dead HTTP DNS download redacted]))

PASSWORD

Please enter your Password: ← 输入ADSL的连接密码
 Please re-enter your Password: ← 再次确认输入ADSL的连接密码

USERCTRL

Please enter ‘yes’ (two letters, lower-case.) if you want to allow
normal user to start or stop DSL connection (default yes): no ← 填入no,不允许一般用户控制PPPoE的连接

FIREWALLING

Please choose the firewall rules to use. Note that these rules are
 very basic. You are strongly encouraged to use a more sophisticated
 firewall setup; however, these will provide basic security. If you
 are running any servers on your machine, you must choose ‘NONE’ and
 set up firewalling yourself. Otherwise, the firewall rules will deny
 access to all standard servers like Web, e-mail, ftp, etc. If you
 are using SSH, the rules will block outgoing SSH connections which
 allocate a privileged source port.

The firewall choices are:
 0 – NONE: This script will not set any firewall rules. You are responsible
 for ensuring the security of your machine. You are STRONGLY
 recommended to use some kind of firewall rules.
 1 – STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
 2 – MASQUERADE: Appropriate for a machine acting as an Internet gateway
 for a LAN
Choose a type of firewall (0-2): 0 ← 输入0,不在这里使用防火墙

Start this connection at boot time

Do you want to start this connection at boot time?
Please enter no or yes (default no): yes ← 填入yes,在系统启动时自动连接ADSL

** Summary of what you entered **

Ethernet Interface: eth0
 User name: [historical subscriber username redacted]
 Activate-on-demand: No
 DNS: Do not adjust
 Firewalling: NONE
 User Control: no
Accept these settings and adjust configuration files (y/n)? y ← 配置信息确认无误后,键入y同意设置
 Adjusting /etc/sysconfig/network-scripts/ifcfg-ppp0
 Adjusting /etc/ppp/chap-secrets and /etc/ppp/pap-secrets
 (But first backing it up to /etc/ppp/chap-secrets.bak)
 (But first backing it up to /etc/ppp/pap-secrets.bak)

…………

…………

Congratulations, it should be all set up!

Type ‘/sbin/ifup ppp0’ to bring up your xDSL link and ‘/sbin/ifdown ppp0’
 to bring it down.
 Type ‘/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0’
 to see the link status.
[root@sample ~]# adsl-start ← 启动ADSL连接

[root@sample ~]# ← 稍等片刻后若启动成功后出现提示符(无任何提示即意味着连接成功)

## Ubuntu

1、打开应用程序菜单,依次选择“附件”->“终端”。
 2、在弹出终端窗口后
[root@sample ~]# sudo pppoeconf <- 输入完成后回车
 3、然后会提示用户输入当前Ubuntu管理员用户的密码,输入完成后回车。询问网络设备,一般选择“是”,进行检测,然后选择“是”。
 4、之后会提示输入用户的ADSL用户名(也就是账号)和密码,在输入账号时把原来的user删掉,其他的除密码之外的问题全部回答“是”(Yes)就可以了。
 5、最后会提示用户是否开机自动拨号,选择“是”(Y)的话,默认开机会没有任何提示的情况下拨号,直接可以上网。如果选择“否”(N)的话,需要拨号时手工进入终端输入
[root@sample ~]# sudo pon dsl-provider <- 输入完成后回车
 6、经常使用的命令。
 pon:启用adsl链接。
 poff:结束adsl连接。
 plog:查看adsl的提示信息,作为调试用。
 ifconfig ppp0:查看是否有ppp0接口。
 route -n:查看默认网关是否正确。
 nslookup:查看DNS是否能够正确解析。
 这些命令可以帮助大家解决ADSL上网遇到的问题,也可以用来调试ADSL。

## CentOS

同Red Hat Linux

## BackTrack Linux

同Red Hat Linux

## Slax

同Red Hat Linux

Leave a Reply