見出し画像

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を流し込んでください。

社内LANの構成図

パラメータ

各機器のパラメータ

確認観点
・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はプロバイダのルータとなります。

PPPoE学習の構成図

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セッションが確立すると緑色に点灯することが確認できます。

▲PPPランプが点灯する様子

次に、LAN側からインターネットへ疎通確認を行います。

確認観点
・PC1/PC2からPC3へ通信できること(ping 20.20.20.20で確認)

pingで疎通を確認する

検証②正しいパスワードでのみ通信が開始されることを確認する

ここまで想定通りに通信ができているのは、パスワードが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へ通信できること

pingで再度疎通を確認する

まとめ

  • 検証①では、PPPoEによるグローバルIPアドレスの割り当てが再現できました。

  • 検証②では、PPPoEの認証機能によって、正しいパスワード情報を持つ契約者のみ通信が可能であることを確認できました。

  • 検証③では、ルータ単体でステートフルインスペクションを実装して安全なインターネット接続が可能であることを確認できました。

今回の検証がネットワークを学ぶ上での助けになれば幸いです。最後まで読んでいただきありがとうございました。

最後に宣伝 /インフラエンジニア募集中★

筆者が所属する株式会社CAIRN(ケルン)はインフラエンジニアに特化した高還元SES企業です。

・ 契約単価に連動した報酬体系なので評価基準が明確です。
・ITインフラに強い営業網で豊富な案件からプロジェクトを選べます。
・ 独自の研修制が多数あり、学びなおしが出来ます。
・厚生労働省認定のホワイト企業です。

▲給与テーブルの抜粋
▲厚生労働省 安全衛生優良企業認定ホワイトマークを取得

インフラエンジニアにとって良い環境を整えています。ご応募お待ちしております。

株式会社CAIRNの採用ページへジャンプ

▼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