ネットワーク構成

ppp_negotiated.png
図 [PPP] IPアドレス割り当て ネットワーク構成

設定概要

R1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ip ospf 1 area 0
!
interface Serial0/0
ip address 192.168.12.1 255.255.255.0
encapsulation ppp
ip ospf 1 area 0
!
router ospf 1
router-id 1.1.1.1
log-adjacency-changes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

R2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
interface Loopback0
ip address 2.2.2.2 255.255.255.255
ip ospf 1 area 0
!
interface Serial0/0
no ip address
encapsulation ppp
ip ospf 1 area 0
!
router ospf 1
router-id 2.2.2.2
log-adjacency-changes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

問題

R2のSerial0/0には、明示的にIPアドレスの設定を行いません。R2 Serial0/0には、192.168.12.2のIPアドレスを割り当てたいと考えています。また、PPPリンク上でOSPFネイバーを確立してルーティングテーブルを作成できるようにします。

R1、R2にはどのような設定を行えばよいでしょうか。

解答

R1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
interface Serial0/0
peer default ip address 192.168.12.2
ppp ipcp mask 255.255.255.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

R2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ip dhcp pool LOCAL
import all
origin ipcp
!
interface Serial0/0
ip address pool LOCAL
ppp ipcp mask request
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

解説

【IPCPでサブネットマスクの通知方法】

PPPのIPCPでは、IPアドレス以外のサブネットマスクやDNSサーバの情報も通知することができます。サブネットマスクなどを通知するサーバ側では、次の設定を行います。

(config-if)#ppp ipcp mask
(config-if)#ppp ipcp dns

そして、クライアント側では、サブネットマスクやDNSサーバの情報をリクエストするために次の設定を行います。

(config-if)#ppp ipcp mask request
(config-if)#ppp ipcp dns request

ただ、クライアント側でIPCPで通知されたサブネットマスクやDNSサーバの情報を利用するには、ちょっと回りくどい設定が必要です。
IPCPでIPアドレスをリクエストするには、クライアント側で次の設定を行います。

(config-if)#ip address negotiated

しかし、このip address negotiatedの設定では、クライアント側でIPアドレス以外の情報を採用しないようです。ppp ipcp mask requestなどの設定を行なっても、結局は/32のサブネットマスクになってしまいます。
IPCPで通知されたIPアドレス以外の情報も利用できるようにするためには、クライアント側でいったんローカルのDHCPプールにIPCPで通知された情報をインポートします。そして、ローカルのDHCPプールからPPPインタフェースにIPアドレスを割り当てるようにします。そのための設定は、次のように行います。

(config)#ip dhcp poll <pool-name>
(config-dhcp)#import all
(config-dhcp)#origin ipcp

(config-if)#ip address pool <pool-name>

【R1、R2の設定】

では、実際にR1とR2での設定を考えます。
IPCPのサーバ側であるR1では、R2に割り当てるIPアドレスとサブネットマスクを設定します。IPアドレスは、最もシンプルな特定のIPアドレスを割り当てるものとします。特定のIPアドレスの割り当ては、peer default ip addressコマンドです。それに加えて、通知するサブネットマスクをppp ipcp maskコマンドで設定します。R1での設定は、次のようになります。

R1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
interface Serial0/0
peer default ip address 192.168.12.2
ppp ipcp mask 255.255.255.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

続いて、IPCPのクライアント側であるR2では、サブネットマスクをリクエストするためにppp ipcp mask requestコマンドが必要です。

R2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
interface Serial0/0
ppp ipcp mask request
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

さらに、IPCPで取得した情報をローカルのDHCPプールにインポートして、Serial0/0のIPアドレスをローカルDHCPプールから割り当てるための設定を行います。

R2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ip dhcp pool LOCAL
import all
origin ipcp
!
interface Serial0/0
ip address pool LOCAL
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ppp_dhcp_pool01.png
図 R1とR2の設定

R2のSerial0/0のIPアドレスを確認すると、次のように192.168.12.2/24が割り当てられていることがわかります。

R2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
R2#show ip interface se 0/0
Serial0/0 is up, line protocol is up
Internet address is 192.168.12.2/24
Broadcast address is 255.255.255.255
Address determined by setup command
Peer address is 192.168.12.1
MTU is 1500 bytes
Helper address is not set
~省略~
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

そして、R1と同一サブネット上なのでOSPFネイバーを確立して、OSPFのルーティングが可能です。

R2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
R2#show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           0   FULL/  -        00:00:32    192.168.12.1    Serial0/0
R2#show ip route ospf
1.0.0.0/32 is subnetted, 1 subnets
O       1.1.1.1 [110/65] via 192.168.12.1, 00:45:39, Serial0/0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

※ 参考
The mystery of “ppp ipcp mask request” command

まとめ

  • IPCPでIPアドレス以外の情報を通知することもできる
  • IPCPでサブネットマスクを通知するためには、サーバ側で次のコマンドを
    設定する。

    (config-if)#ppp ipcp mask

  • IPCPのクライアント側では、次のコマンドでサブネットマスクをリクエストする

    (config-if)#ppp ipcp mask request

  • IPアドレス以外の情報を利用するためには、IPCPで取得した情報をローカルDHCPプールへインポートし、プールからIPアドレスの割り当てを行う