概要

PPPのIPCPによって、対向のインタフェースにIPアドレスを割り当てます。ここでは、IPアドレスだけでなく、サブネットマスクも割り当てるための設定を考えます。

ネットワーク構成

図 [PPP] IPアドレス割り当て ネットワーク構成
図 [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 <subnet-mask>
(config-if)#ppp ipcp dns <dns-server-ip-address>

そして、クライアント側では、サブネットマスクや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

図 R1とR2の設定
図 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

PPPのIPCPでサブネットマスクも割り当てる設定について、以下のWebページも参考にしてください。

まとめ

  • IPCPでIPアドレス以外の情報を通知することもできる
  • IPCPでサブネットマスクを通知するためには、サーバ側で次のコマンドを
    設定する。
    (config-if)#ppp ipcp mask
  • IPCPのクライアント側では、次のコマンドでサブネットマスクをリクエストする

    (config-if)#ppp ipcp mask request

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