Metonymical Deflection

ゆるく日々のコト・たまにITインフラ

PPPoE Client LAN型(固定Prefix)設定で全アドレス使用

PPPoEのLAN型固定Prefixで/29などをISPから払い出された際、ネットワークアドレスやブロードキャストアドレスも含む、全てのGlobalIPを使い切る方法となります。

1.構成

f:id:metonymical:20180728192124j:plain

今回の例では、ISPから25.0.0.16/29のLAN型固定Prefixを払い出された想定でConfigを作成しています。

ルータを2台構成としています。

  1. PPPoE終端+StaticNATをするルータ=RT13
  2. 本来GlobalIPを割り当てたいルータ=RT03

回線はフレッツ光ネクストを使用しており、複数のISPとLAN型固定Prefixの契約して試行しましたが、いずれも成功しています。

四の五の説明するより、Configを見てもらった方が早いと思います。

2.RT13のConfig

!
hostname RT13
!
interface GigabitEthernet0
 switchport access vlan 10
 no ip address
!
interface GigabitEthernet8
 no ip address
 duplex auto
 speed auto
 pppoe enable group global
 pppoe-client dial-pool-number 1
!
interface Vlan10
 ip address 192.168.10.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly in
 ip tcp adjust-mss 1414
!
interface Dialer1
 mtu 1492
 ip unnumbered Vlan10
 ip mtu 1454
 ip nat outside
 ip virtual-reassembly in
 encapsulation ppp
 dialer pool 1
 dialer-group 1
 ppp authentication chap callin
 ppp chap hostname ユーザ名
 ppp chap password パスワード
 ppp pap refuse
 ppp ipcp route default
 no cdp enable
!
ip nat inside source static 192.168.10.16 25.0.0.16
!
dialer-list 1 protocol ip permit
!
access-list 1 permit any
!
end
!

PPPoE終端の設定はおなじみですが、異なる点は1対1のStaticNATをしている点です。

3.RT03のConfig

!
hostname RT03
!
interface GigabitEthernet0
 switchport access vlan 20
 no ip address
!
interface GigabitEthernet8
 ip address 192.168.10.16 255.255.255.0
 ip nat outside
 ip virtual-reassembly
 duplex auto
 speed auto
!
interface Vlan20
 ip address 192.168.20.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly
!
!
ip route 0.0.0.0 0.0.0.0 192.168.10.1
!
ip nat pool GIP 192.168.10.16 192.168.10.16 netmask 255.255.255.0
ip nat inside source list 1 pool GIP overload
!
access-list 1 permit 192.168.20.0 0.0.0.255
!
end

RT03では、G8をWAN側インターフェースとしていますが、GlobalIPではなく、RT13のStaticNATで設定したPrivateIPをインターフェースに設定し、そのIP(=192.168.10.16)でoverloadさせてしまいます。

4.RT13のRoutingテーブルとNATテーブル

RT13#show ip a 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, p - overrides from PfR

Gateway of last resort is 1.1.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 1.1.1.1
      1.1.0.0/32 is subnetted, 1 subnets
C        1.1.1.1 is directly connected, Dialer1
      192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.10.0/24 is directly connected, Vlan10
L        192.168.10.1/32 is directly connected, Vlan10

RT13#show ip nat translations 
Pro Inside global   Inside local        Outside local    Outside global
tcp 25.0.0.16:2598  192.168.10.16:2598  23.219.39.17:80  23.219.39.17:80
tcp 25.0.0.16:2599  192.168.10.16:2599  77.234.41.34:80  77.234.41.34:80
tcp 25.0.0.16:2600  192.168.10.16:2600  77.234.42.50:80  77.234.42.50:80

DefaultRouteのNexthopが1.1.1.1となっていますが、ppp ipcp route defaultの設定により、ISPとのPPPoEセッション時にネゴっているため、PPPoEを張るたびに変化します。
ちなみに、

ip route 0.0.0.0 0.0.0.0 Dialer1

とした場合、
CEFが使用されない(Fastスイッチングになってしまう)らしいので、ppp ipcp route defaultを使用しています。

5.RT03のRoutingテーブルとNATテーブル

RT03#show ip route
Codes: 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

Gateway of last resort is 192.168.10.1 to network 0.0.0.0

S*   0.0.0.0/0 [1/0] via 192.168.10.1
     192.168.10.0/24 is subnetted, 1 subnets
C       192.168.10.0 is directly connected, GigabitEthernet8
C    192.168.20.0/24 is directly connected, Vlan20

RT03#show ip nat translations 
Pro Inside global       Inside local        Outside local    Outside global
tcp 192.168.10.16:2598  192.168.20.10:2598  23.219.39.17:80  23.219.39.17:80
tcp 192.168.10.16:2599  192.168.20.10:2599  77.234.41.34:80  77.234.41.34:80
tcp 192.168.10.16:2600  192.168.20.10:2600  77.234.42.50:80  77.234.42.50:80

RT13がGlobalIPにNAT変換してくれるので、RT03は192.168.10.16をGlobalIPと見立ててPATしているだけです。

6.補足

Vlan10に複数のルータやサーバを追加していきたい場合、RT13で以下のように設定してください。

 ip nat inside source static 192.168.10.17 25.0.0.17
 ip nat inside source static 192.168.10.18 25.0.0.18
 ・・・
 ip nat inside source static 192.168.10.23 25.0.0.23 ←ブロードキャストアドレスも可

ISP側ルータのRoutingテーブル上、25.0.0.16/29のNexthopがPPPoEクライアント側に向いているため、25.0.0.16(ネットワークアドレス)や25.0.0.23(ブロードキャストアドレス)を使用したとしても、25.0.0.16/29の範囲に入っていれば、当然RT13側に戻してくれます。

以上です。

7.最後に

以下のサイトを参考にさせて頂きました。
技術的な解説が詳細に記載されており、最初拝読させて頂いたときは完全に目から鱗でした。
milestone-of-se.nesuke.com

今までは、RT03に相当する機器でDefaultRouteのNexthopが必要という理由だけで、盲目的にRT13のVLAN10に相当するインターフェースでGlobalIPを付与しておりました。しかし、上記サイトを読んだ結果、GlobalIPを浪費してしまっていたんだな、と猛省しました。。。

ちなみに以前、本Blogで紹介した
metonymical.hatenablog.com
の構成で、
試しにIPSecやTunnnelインターフェース上でBGPピアを張ってみましたが、正常に疎通確認が取れました。
また、RT13がGlobalIPを持っていないため、ちょっとセキュア(?)になっている点がとても気に入っており、まずはラボで利用してみて商用稼働できるかを見極めていきたいなと考えています。