![見出し画像](https://assets.st-note.com/production/uploads/images/120992738/rectangle_large_type_2_5a34e6690fd7114c7ae07ec4bf8c7c7f.jpeg?width=1200)
PPPoEを使ってインターネットに接続してみる
この記事で学べること
・ルータのPPPoEを使ったインターネット接続ができる
検証の流れ
1.検証環境の構築
2.PPPoEサーバの構築
3.PPPoEクライアントの構築
4.セキュリティの設定追加
検証内容
検証①PPPoEでIPアドレスの割り当てがされることを確認する
社内のルータ(PPPoEクライアント)とプロバイダのルータ(PPPoEサーバ)に見立てた環境を用意してPPPoEによる接続を行います。
PPPoEサーバとPPPoEクライアントを接続し、グローバルIPアドレスが付与されていることを確認します。
検証②正しいパスワードでのみ通信が開始されることを確認する
PPPoEのパスワード認証機能が正常に機能しているかを検証します。
検証③CiscoCBACを使ったセキュリティの強化と、その効果を確認する
ファイアウォールを使用していないため、セキュリティを高める設定を行います。具体的にはファイアウォールのステートフルインスペクションと同等の機能であるCiscoのCBACを社内ルータに設定します。
外部からは通信できず、内部から発生した通信とその戻りの通信は可能であることを確認します。
ステートフルインスペクションについて知りたい方はこちらの記事を参考にしてください。
PPPoEの基礎を知りたい方はこちらの記事を参考してください。
構成図・パラメータ
準備するもの
・ルータ:Cisco 891FJ ×2台
・L2スイッチ:Catalyst2960 ×1台
・検証用PC:Windows ×2台
・LANケーブル ×5本
・コンソールケーブル ×1本
構成図①検証環境
PPPoEの学習の前に、社内LAN環境を用意します。下記の構成図とパラメータをもとに設定を行い、確認観点がOKであれば進んでください。難しいと感じた場合は記載のConfigを流し込んでください。
![](https://assets.st-note.com/img/1698751695161-5wDcrylJsV.png?width=1200)
パラメータ
![](https://assets.st-note.com/img/1698977285154-MyNBeQhQJ4.png?width=1200)
確認観点
・PC1にVLAN10のIPアドレスが割り当てられていること
・PC2にVLAN20のIPアドレスが割り当てられていること
・SWAのConfig
SWA#show run
hostname SWA
!
enable password Cisco
!
interface FastEthernet0/1
switchport access vlan 10
switchport mode access
no shutdown
!
interface FastEthernet0/2
switchport access vlan 20
switchport mode access
no shutdown
!
interface FastEthernet0/24
switchport mode trunk
no shutdown
!
end
・RTAのConfig
RTA#show run
hostname RTA
!
enable password Cisco
!
ip dhcp pool VLAN10
network 192.168.10.0 255.255.255.0
default-router 192.168.10.254
!
ip dhcp pool VLAN20
network 192.168.20.0 255.255.255.0
default-router 192.168.20.254
!
interface FastEthernet0
no ip address
duplex auto
speed auto
no shutdown
!
interface FastEthernet0.10
encapsulation dot1Q 10
ip address 192.168.10.254 255.255.255.0
no shutdown
!
interface FastEthernet0.20
encapsulation dot1Q 20
ip address 192.168.20.254 255.255.255.0
no shutdown
!
interface Vlan1
ip address 192.168.1.1 255.255.255.0
!
line vty 0 4
password Cisco
login
!
end
構成図②全体の構成図
PPPoEの検証は下記の構成で行います。
社内LANは先ほど構築したものを使います。これから行うPPPoE検証ではインターネットの環境を構築し、RTB(PPPoEサーバ)からRTA(PPPoEクライアント)へグローバルIPアドレスを付与させます。実際の環境ではRTAが社内のルータ、RTBはプロバイダのルータとなります。
![](https://assets.st-note.com/img/1698760952143-4ehlJax0Hp.png?width=1200)
PPPoEサーバの構築
まずはPPPoEサーバを構築していきます。
PPPoEサーバはISP(インターネットサービスプロバイダ)の設備なので業務で構築することはほぼありません。ですが、PPPoEクライアントの検証のため構築することはありますのでConfigを把握しておきましょう。
今回は下記Configを順に設定していきます。
Router(config)#hostname RTB
//ホスト名を設定
RTB(config)#enable password Cisco
//enableパスワードを設定
RTB(config)#line vty 0 4
RTB(config-line)#password Cisco
RTB(config-line)#login
RTB(config-line)#exit
//telnet用のポートを設定
RTB(config)#username test1@example.com password Cisco1
//認証用のIDとパスワードを設定
RTB(config)#interface loopback 1
RTB(config-if)#ip address 20.1.1.1 255.255.255.255
RTB(config-if)#exit
//PPPoEサーバのIPアドレスをループバックインターフェースに指定
RTB(config)#ip local pool POOL1 200.1.1.1
//RTAに貸与するグローバルIPアドレスのプールを設定
RTB(config)#interface Virtual-Template 1 //PPPoEセッションごとにRTB側に動的に作られる仮想インターフェースの共通部分を作成
RTB(config-if)#mtu 1454 //MTUサイズを指定(フレッツ光の場合1454に指定する)
RTB(config-if)#ip unnumbered loopback 1 //RTB側のIPアドレスはLoopback1から借用する
RTB(config-if)#peer default ip address pool POOL1 //RTA側に貸与するのIPアドレスはPOOL1から割り当てる
RTB(config-if)#ppp authentication chap //認証方式はCHAPを使用する
RTB(config-if)#exit
RTB(config)#bba-group pppoe PPPOE-GROUP1 //PPPoEクライアントごとに作成するグループ(今回は1つ)。グループ名をPPPOE-GROUP1とする
RTB(config-bba-group)#virtual-template 1 //グループ名と使用するテンプレートを紐づける
RTB(config-bba-group)#exit
RTB(config)#interface gi8
RTB(config-if)#no ip address //物理インターフェースにはIPアドレスを設定しない
RTB(config-if)#pppoe enable group PPPOE-GROUP1 //物理インターフェースでPPPoEを有効にしてPPPoEグループを紐づける
RTB(config-if)#no shutdown
RTB(config-if)#exit
RTB(config)#interface fa0
RTB(config-if)#ip address 20.20.20.254 255.255.255.0
RTB(config-if)#no shutdown
RTB(config-if)#exit
//LAN側インターフェースを設定
RTB(config)#ip route 0.0.0.0 0.0.0.0 200.1.1.1
//RTAからの通信の帰りの通信のためにデフォルトルートを設定
一通り設定が終わったら設定内容を確認します。
以下のshow runの結果が一致していることを確認してください。
RTB#sh run
hostname RTB
!
enable password Cisco
!
username test1@example.com password 0 Cisco1
!
bba-group pppoe PPPOE-GROUP1
virtual-template 1
!
interface Loopback1
ip address 20.1.1.1 255.255.255.255
!
interface FastEthernet0
ip address 20.20.20.254 255.255.255.0
duplex auto
speed auto
ip address
!
interface GigabitEthernet8
no ip address
duplex auto
speed auto
pppoe enable group PPPOE-GROUP1
!
interface Virtual-Template1
mtu 1454
ip unnumbered Loopback1
peer default ip address pool POOL1
ppp authentication chap
!
ip local pool POOL1 200.1.1.1
!
ip route 0.0.0.0 0.0.0.0 200.1.1.1
!
line vty 0 4
password Cisco
login
!
end
また、インターネット上のPCを想定したPC3には、下記設定を入れておいてください。
IPアドレス…………………………….20.20.20.20
サブネットマスク…………………255.255.255.0
デフォルトゲートウェイ………20.20.20.254
PPPoEクライアントの設定
つづいてPPPoEクライアントの設定を行います。認証を経て、サーバからグローバルIPアドレスを貰うための設定です。
下記のステップで設定を行います。
①ポイントツーポイント用の論理インターフェースの作成
②PPPoEセッション開始の対象トラフィックを指定
③LANのアドレスをNAPTで変換
④物理ポートの設定
⑤デフォルトルートの設定
少々複雑なので各設定を1つずつ解説していきます。
①ポイントツーポイント用の論理インターフェースの作成
ポイントツーポイント(Point to Point)とは、使用するインターフェースが決まれば対向の機器が一意に決まる接続形態のことを言います。PPPoEクライアントとPPPoEサーバはポイントツーポイントで接続します。
RTA側にはポイントツーポイントで使用するDialer(ダイアラ)インターフェースという論理インターフェースを作成し、下記の設定を行います。
interface dialer [番号]………………論理インターフェースを作成
ip address negotiated………………IPアドレスを動的に決める
ip mtu [サイズ]………………………….IPパケットの最大送信サイズ。回線がフレッツ光などの場合は1454を指定。
encapsulation ppp ……………………カプセル化タイプをPPPで指定
dialer pool [番号]……………………….物理インターフェースにPPPoE設定の紐づけが必要なため、紐づけのための番号を指定
ppp authentication chap callin….認証方法をCHAPおよび単方向認証(着信側のみで認証を行う方式)に指定
ppp chap hostname [ID]…………….認証用のIDを設定
ppp chap password [パスワード] …認証用のパスワードを設定
■入力例
RTA(config)#interface dialer 1
RTA(config-if)#ip address negotiated
RTA(config-if)#ip mtu 1454
RTA(config-if)#encapsulation ppp
RTA(config-if)#dialer pool 1
RTA(config-if)#ppp authentication chap callin
RTA(config-if)#ppp chap hostname test1@example.com
RTA(config-if)#ppp chap password Cisco1
RTA(config-if)#exit
②PPPoEセッション開始の対象トラフィックを指定
Dialerインターフェースはユーザ認証に成功した場合のみアクティブになるインターフェースです。認証をするにあたって、どの通信がPPPoEセッション開始のトリガーなのかを指定する必要があります。コマンドは下記となります。
dialer-list [番号] protocol ip permit………対象となるのはipパケットと指定
dialer-group [番号]…………………………………dialer-listを番号でインターフェースに紐づける
■入力例
RTA(config)#dialer-list 1 protocol ip permit
RTA(config)#interface dialer 1
RTA(config-if)#dialer-group 1
RTA(config-if)#exit
③LANのアドレスをNAPTで変換
インターネットへ通信する場合、LANで使用するプライベートアドレスではなく、プロバイダから割り当てられたグローバルIPアドレスを使用します。
そのため、ルータでNATやNAPTの設定が必要です。
今回はNAPTの設定をします。
■入力例
RTA(config)#interface fa0.10
RTA(config-subif)#ip nat inside //LAN側インターフェースに指定
RTA(config-subif)#exit
RTA(config)#interface fa0.20
RTA(config-subif)#ip nat inside //LAN側インターフェースに指定
RTA(config-subif)#exit
RTA(config)#interface dialer 1
RTA(config-if)#ip nat outside //WAN側インターフェースに指定
RTA(config-if)#exit
RTA(config)#access-list 1 permit 192.168.10.0 0.0.0.255 //変換対象のアドレスを指定
RTA(config)#access-list 1 permit 192.168.20.0 0.0.0.255 //変換対象のアドレスを指定
RTA(config)#ip nat inside source list 1 interface dialer 1 overload
//WAN側インターフェースにNAPTを設定
④物理ポートの設定
物理インターフェースにもPPPoEの設定を行います。コマンドは下記です。
pppoe enable………………………………………………PPPoEを有効にする
pppoe-client dial-pool-number [番号]……..論理インターフェースと物理インターフェースを番号で紐づける(①のdialer pool [番号]と紐づく)
■入力例
RTA(config)#interface gi8
RTA(config-if)#pppoe enable
RTA(config-if)#pppoe-client dial-pool-number 1
RTA(config-if)#no shutdown
RTA(config-if)#exit
⑤デフォルトルートの設定
最後に、インターネット向け通信のためにデフォルトルートを設定します。
ポイントツーポイントでは、前述したように宛先の機器が一意に決まる特徴があります。そのため、ネクストホップはIPアドレスではなくインターフェースを指定します。
■入力例
RTA(config)#ip route 0.0.0.0 0.0.0.0 dialer1
以上でPPPoEサーバ及び、PPPoEクライアントの設定は終了です。
念のため、show runで設定が正しく入力されているか確認しておくことをお勧めします。それでは、検証を行います。
検証①PPPoEでIPアドレスの割り当てがされることを確認する
まずは下記コマンドでグローバルIPアドレスが割り当てられているか確認します。
・show ip interface brief
・show ip route
■show ip interface briefの出力例
RTA#show ip interface brief
Interface IP-Address OK? Method Status Protocol
Async3 unassigned YES unset down down
BRI0 unassigned YES unset administratively down down
BRI0:1 unassigned YES unset administratively down down
BRI0:2 unassigned YES unset administratively down down
Dialer1 200.1.1.1 YES IPCP up up
FastEthernet0 unassigned YES unset up up
FastEthernet0.10 192.168.10.254 YES manual up up
FastEthernet0.20 192.168.20.254 YES manual up up
GigabitEthernet0 unassigned YES unset down down
GigabitEthernet1 unassigned YES unset down down
(省略)
インターフェースのIPアドレスやリンクアップ状態を確認します。
Interface欄のDialer1のIPアドレスがPPPoEによって200.1.1.1に割り当てられいることがわかります。MethodはPPPoEによって設定されたことを表すIPCP、StatusとProtocolがそれぞれupになっていれば問題なく動作していると判断できます。
■show ip routeの出力例
RTA#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override
Gateway of last resort is 0.0.0.0 to network 0.0.0.0
S* 0.0.0.0/0 is directly connected, Dialer1
20.0.0.0/32 is subnetted, 1 subnets
C 20.1.1.1 is directly connected, Dialer1
192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
(省略)
C 200.1.1.1 is directly connected, Dialer1
(省略)
ルーティングテーブルを確認します。左側にCのついている直接接続ルートを確認してみてください。
上記のように、Dialer1経由でPPPoEサーバ側の20.1.1.1、PPPoEクライアント側の200.1.1.1が学習されていればPPPoEは問題なく動いていると言えます。
次に、PPPoEセッションが確立しているかを下記コマンドで確認してみてください。
・show pppoe session all
PPPoEクライアントとPPPoEサーバ両方のMACアドレスが表示されていれば問題ないです。
また、Cisco891FJには前面にPPPのステータスLEDランプがあります。
パスワード認証に成功し、PPPoEセッションが確立すると緑色に点灯することが確認できます。
![](https://assets.st-note.com/img/1698761866434-e913GcoSbg.jpg?width=1200)
次に、LAN側からインターネットへ疎通確認を行います。
確認観点
・PC1/PC2からPC3へ通信できること(ping 20.20.20.20で確認)
![](https://assets.st-note.com/img/1698766068862-uDsySsr8t9.png?width=1200)
検証②正しいパスワードでのみ通信が開始されることを確認する
ここまで想定通りに通信ができているのは、パスワードがPPPoEサーバとPPPoEクライアントで一致しているためです。仮にパスワードが間違えていた場合に通信できなくなることも確かめてみます。
PPPoEクライアント側で設定しているCisco1というパスワードをわざとCisco2に変えます。この時、PPPoEセッションを一度切らないと設定が反映されないため、論理インターフェースをシャットダウンしてから行います。
RTA(config)#interface dialer 1
RTA(config-if)#shutdown
RTA(config-if)#no ppp chap password Cisco1
RTA(config-if)#ppp chap password Cisco2
RTA(config-if)#no shutdown
パスワード変更後、再度論理インターフェースを有効化します。
すると下記のように、インターフェースのアップダウンがログに繰り返し表示されます。
*Oct 31 07:58:09.775: %LINK-3-UPDOWN: Interface Virtual-Access2, changed state to up
*Oct 31 07:58:09.779: %DIALER-6-UNBIND: Interface Vi2 unbound from profile Di1
*Oct 31 07:58:09.783: %LINK-3-UPDOWN: Interface Virtual-Access2, changed state to down
*Oct 31 07:58:32.047: %DIALER-6-BIND: Interface Vi2 bound to profile Di1
このように、パスワード情報が誤っていた場合はリンクが確立せず、IPアドレスの割り当ても行われないことがわかります。
元の状態に戻すには、同じ手順でパスワードを正しいものに変えればOKです。
検証③CiscoCBACを使ったセキュリティの強化と、その効果を確認する
現状の設定では外部からの通信が可能なため、不正アクセス等のセキュリティ問題が発生します。今回の構成でファイアウォールは無いため、ルータのCBACというステートフルインスペクションの設定を追加します。
まずは外部の通信をすべて拒否する、拡張ACLを設定します。
■入力例
RTA(config)#ip access-list extended EX
RTA(config-ext-nacl)#deny ip any any //すべてのIP通信を拒否する
RTA(config-ext-nacl)#exit
RTA(config)#interface dialer 1
RTA(config-if)#ip access-group EX in //ACLをWAN側であるdialerインターフェースに設定
RTA(config-if)#exit
次にCBACの設定をします。コマンドは下記の通りです。
ip inspect name [名前] [プロトコル]………名前を付けてプロトコルを選択
interface [インターフェース名]………………適用するインターフェースを指定
ip inspect [名前] out………………………………..OUT方向に適用する
■入力例
RTA(config)#ip inspect name CBAC icmp
RTA(config)#interface dialer 1
RTA(config-if)#ip inspect CBAC out
再度以下観点で疎通確認をします
確認観点
・PC3からPC1/PC2に通信できないこと
・PC1/PC2からはPC3へ通信できること
![](https://assets.st-note.com/img/1698765010100-T4aFj4OOds.png?width=1200)
まとめ
検証①では、PPPoEによるグローバルIPアドレスの割り当てが再現できました。
検証②では、PPPoEの認証機能によって、正しいパスワード情報を持つ契約者のみ通信が可能であることを確認できました。
検証③では、ルータ単体でステートフルインスペクションを実装して安全なインターネット接続が可能であることを確認できました。
今回の検証がネットワークを学ぶ上での助けになれば幸いです。最後まで読んでいただきありがとうございました。
最後に宣伝 /インフラエンジニア募集中★
筆者が所属する株式会社CAIRN(ケルン)はインフラエンジニアに特化した高還元SES企業です。
・ 契約単価に連動した報酬体系なので評価基準が明確です。
・ITインフラに強い営業網で豊富な案件からプロジェクトを選べます。
・ 独自の研修制が多数あり、学びなおしが出来ます。
・厚生労働省認定のホワイト企業です。
![](https://assets.st-note.com/img/1716875197418-oKuVQ2DhaY.png?width=1200)
![](https://assets.st-note.com/img/1716875167730-j8PqNdqOLC.jpg?width=1200)
インフラエンジニアにとって良い環境を整えています。ご応募お待ちしております。
▼CAIRNについてさらに詳しく知りたい方はこちら
【Instagram】
ケルンの日常を発信♪
https://www.instagram.com/cairn_recruit/
【代表川嵜のブログ】
インフラエンジニアのキャリアについて週1で発信♪
https://note.com/joyous_cairn1015/
【技術ブログ】
月1で発信♪
https://t.co/iInlgn3cfw
【代表川嵜のX】
代表の日常、SES業界について発信♪DM歓迎です!
https://twitter.com/cairndk
【人事花田のX】
人事花田の日常、労務関連について発信♪DM歓迎です!
https://twitter.com/HanadaCAIRN_SES