4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【FortiGate】+【NetAttest EPS(RADIUS)】で PPPoE LAN接続型 unnumbered な接続基礎実験 (前編)

4
Last updated at Posted at 2026-09-23

●はじめに

とある案件で、【PPPoE+固定IP 8つ+Fortigate】というものを扱うこととなりました。

PPPoE自体は通常のISPアクセス(まぁ、最近はIPoEばかりなのでしょうけれど)やFlets VPNWIDEでもおなじみなのですが、固定IP 8つとなるとunnumbered接続になるのかな?と思います。

unnumbered接続。思い返してみましたが、物心がつくかつかないかの時に触ったYAMAHA RTXでのサーバ公開くらいしか触ることも無かったですかね。
今回はFortiGateで、ということで、軽く組んで確認してみようと思・・・・・ったのが運のつき。:japanese_goblin:

結果思ったよりドはまりコースになってしまいました。。
FortiGateはさほど得手ではありませんが、数年前の先人達のコメントに助けられながらもあがいた・・うまくいかなかった失敗も含めて共有してみたいと思います。

※うまくいったことより、うまくいかなかった話の方が楽しいですよね。:innocent:


●Unnumbered IP接続おさらい

PPPoE接続において、WAN側物理インターフェースに固有のグローバルIPアドレスを割り当てず、PPPoEセッション(Virtual-Template / Virtual-Access 等)を介して上位ルータと点対点(Point-to-Point)で直接ネゴシエーション・終端する方式です。

主にOCNなどのISPで提供される「固定IP 8(/29)」といったマルチIPプランで利用されます。通常のアドレス割り当て(Numbered)ではWAN側でIPアドレスを1〜2個消費してしまいますが、Unnumbered接続を採用することで、ISPから割り当てられた貴重な/29ブロック(全8アドレス/実効6アドレス)を無駄にすることなく、配下のDMZや内部ネットワークのサーバー群(Web、VPN、DNS等)へそのままアサインできます。

OCN 固定IP 8運用時の主なポイント・注意点

  • IPアドレスの有効活用(実効6個)
    • ネットワークアドレス(例: .0)とブロードキャストアドレス(例: .7)を除く、中6個(.1 〜 .6)を端末やルータ配下のインターフェース(DMZポート等)にそのまま割り当てて公開可能です。
  • 対向Gateway(ISP側)のアドレス構成
    • OCNの固定IP 8環境では、PPPoEネゴシエーション時に相手方(ISP側 Gateway)のアドレスとして特定の仮想IP(例: 1.1.1.1 や 10.x.x.x などのプライベート/別体系アドレス)が送られてくるケースが一般的です。
    • 対向Gatewayアドレスが自組織の/29ブロック外であっても、PPPoEインターフェース経由のPoint-to-Point通信としてルーティングされるため、正常に通信が確立します。
  • 今回のFortiGate実装設計(要件に応じて変えましょう。今回は一例。)
    • DMZ等の内部物理ポート(例: port-a)に /29 のIPアドレス(例: .1/29)を持たせ、WANポート側は set ipunnumbered 200.0.0.1 のようにDMZのアドレスを借用(Unnumbered参照)してPPPoEを立ち上げます。
    • これにより、対向からのトラフィックはPPPoEトンネルを経由してFortiGateに届き、FortiGate内部でそのままDMZセグメント(/29)へルーティング・ルーティング制御(FortiGate自体のWAN通信はSource NAT等)を行う設計が可能になります。

●昔やっていたこと。検証環境組み。

VPNWIDEの設計/設定を行うことは過去所属していた会社でもよくありました。
まぁ、関東近郊であればトラブルシュートや手直しなんかで現場対応なんてことも対応できましたが、とある案件で小笠原のVPNWIDE・・なんてのがあったのですよね。
image.png

あの島は一旦向かったら、6日間は帰ろうにも帰れない。部材がないのも当たり前ですが、ドはまり!つながらない!!どうしよう?!・・・からの後日retry~
なんてことは許されません。(そりゃそうだ。時間:alarm_clock:もお金:moneybag:も有限。

あの時は初でしたでしょうか。Flets網を模したPPPoE(払い出し側)環境をきちんと作ったの。

image.png
Cisco 1812Jでaaa attribute list~とか、ユーザIDをVPNWIDEのcvn番号に合わせて~とかゴニョゴニョした後に・・おお、RTからPPPoE接続してIP払い出された:clap:!
なんてことをやった遠い記憶。。。


●検証環境を作りましょう。【失敗その①】

さて、失敗談。(ここが重要。かっこ悪いことでも誰かの役に立つかも。)

先ずはですね。。Cisco Router。
SmartLicenseがらみの別評価のため、手に届くところにあった【Cisco ISR 1100 シリーズCisco 1111-8P】をPPPoEサーバとして利用してみました。
configもスルスル入る。

これはいい感じじゃない?PPP sessionも無事張れて、ISR1111-8Pから対向RT(FortiGate 40F)へping・・・・・・が通じません。
対向RTからISR方向へのexecute ping 1.1.1.1 も・・・・通じません。

むむむ。

show ppp all
debug ppp packet
debug ppp negotiation
debug ppp authentication

見るからにど正常なんですよねぇ。。。:frowning2:

対向RT(FortiGate 40F)側で

diagnose sniffer packet ppp2 "icmp" 4 0 a

なんかを仕掛けつつ

execute ping 1.1.1.1

を実行してみても・・・送ってはいるが応答がない。

sh ip route

Virtual-Access1.1 宛にrouteはアサイン出来ているのに。。
でもやはり、ISR側でpacketをPPPのsessionに乗せ切れていない気がしました。:point_up:
 

まぁ、ダメなものはショウガナイよね。切り分け:scissors:切り分け。
倉庫の奥から盟友のCisco 1921を召喚し。。(お久しぶり!)
image.png

→すんなり通るじゃん!え・・・半日悩んだってのに。。。(自分が悪い。)

 
で、後日確証を得たのはgeminiさんからでもcopilotさんからでもなく・・
お助けいただいたのは2022/11のMezashi_conf様。(有難うございます。貴方のおかげで救われました。)

>2022/11/4 追記
>PPPoEサーバー動かすには追加ライセンスが必要だったらしい。 IOSだとその辺ライセンス不要なので気づかなかった。

oh!:man_tone2:

教訓:Cisco RTは一家に3台。
image.png


●検証環境を作りましょう。【失敗その②】

失敗その①とは前後するのですが、こちらはconfigをかきかきしようかな?の時に詰まってしまったこと。

PPPoEサーバたるCisco RTでアドレスアサインをする書式ってこんな感じだったのですよね。

aaa attribute list ABL_AAA-test
 attribute type addr 192.168.250.1 service ppp protocol ip

が、、これは端末型払い出しでこそできる技。
LAN型払い出しをそもそもCisco RTでできるんかな?と調べたら

こちらも2022/11のcja56910tf様、2021/05のsidefirst様にお助けいただきました。(有難うございます。)
>PPPoE Serverとは別に認証サーバを用意するのが簡単です。

そうきましたか。


●RADIUS認証サーバの用意

先人のありがたい記録をベースに、
https://server-network-note.net/2017/12/freeradius-3-0-13/
Hyper-V環境でLinux立ててFreeRadiusを入れようかとも思いましたが、同じことをやってもさほど面白くない。

実は先ほど倉庫を漁ってい時に、視界に入った子がいたのですよね。
NetAttest EPS-ST04-A
image.png

元々は、無線APの証明書を処理する検証用に来てくれた子だったのですが、確か貴方はRADIUSも喋れたはず!
かなり昔の機器ですが、tryしてみましょうか。

【構成素案】

サプリカント (Supplicant)
→FortiGate 40F

オーセンティケータ (Authenticator / 認証装置)
→Cisco 1921

RADIUSサーバー (認証サーバー)
→NetAttest EPS-ST04-A

【IPの雑多な検討】

ISPからもらうIPレンジを 200.0.0.0/29 としてみます。(よくあるIP8つ割付ってやつですね。
少々お行儀は悪いですが、今回は完全に閉じた世界での実験なので判りやすいGlobalっぽいものを。。)

networkアドレスと、broadcastは除いて6つ分ですね。試験では下記のような基本形にしてみます。

IPアドレス 用途・対象機器 備考・補足
200.0.0.0 ネットワークアドレス network
200.0.0.1 FortiGate本体 WAN/DMZ借用IP
200.0.0.2 外からのGlobalIP受けを想定したPC 緑VM
200.0.0.3 (未使用 / 割り当て可能) Global IPレンジ (/29)
200.0.0.4 (未使用 / 割り当て可能) Global IPレンジ (/29)
200.0.0.5 (未使用 / 割り当て可能) Global IPレンジ (/29)
200.0.0.6 (未使用 / 割り当て可能) Global IPレンジ (/29)
200.0.0.7 ブロードキャストアドレス broadcast
1.1.1.1 Cisco 1921 (Loopback0) ISP & 上位Gateway相当
192.168.1.99 FortiGate MGMT
192.168.1.100 Cisco 1921 MGMT
192.168.1.202 操作用PC FortiGate配下
192.168.1.253 RADIUSサーバ NetAttest EPS-ST04-A (LAN1)

トポロジ図お絵描きは下記。
104_default_topology.jpg


●NetAttest EPS(RADIUS認証サーバ)へのlogin

最近のEdge、Chromeから通常アクセスすると、証明書がらみでerrってloginできず。
→IEモード有効化を行ってからアクセスすることとします。
105_IEmode_browser.jpg
https://192.168.1.253:2181

NetAttestは設定用portがこんな感じでしたね。


●NetAttest EPS(RADIUS認証サーバ)設定

NetAttest EPSの主要なところを幾つかご紹介します。

①先ずはオーセンティケータ (Authenticator / 認証装置)の登録です。
NAS/RADIUSクライアント名:Cisco1921
IP:192.168.1.100 (Cisco1921のMGMT IP)
シークレット:Cisco1921のradius server 部位で規定したkey:password
を設定します。
106_EPS_add_client.jpg
107_EPS_add_client.jpg

②次にRTがPPPoEアクセスする際のID/PWを登録します。
IDはA01@isp.hogehoge.com としました。サプリカント(FortiGate 40F)と合わせます。
108_EPS_add_user.JPG
109_EPS_add_user.JPG

③認証タイプはCHAPにしました。サプリカント(FortiGate 40F)と合わせます。
110_EPS_add_user(chk_item).JPG

④アドレス型払い出しのキモとなる部分を設定していきます。
こんな内容値をRADIUSで設定し、PPPのネゴ時に使ってもらうこととします。

アトリビュート名 (Attribute) 設定値 (Value)    概要・補足
Service-Type Framed-User 接続サービスのタイプ(Framedアクセス)
Framed-Protocol PPP カプセル化プロトコル
Framed-IP-Address 200.0.0.0 割り当てるネットワークアドレス
Framed-IP-Netmask 255.255.255.248 サブネットマスク(/29)

111_EPS_add_user(reply_item).JPG

⑤最後に設定保存を忘れずにどうぞ。
112_EPS_add_user(save).JPG


●Cisco 1921(オーセンティケータ (Authenticator / 認証装置))設定

主要なところだけ抜き出して記載いたします。(ここでも先人達のconfigを流用。感謝:bow_tone1:)

Cisco1921#sh run
!
version 15.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Cisco1921
!
boot-start-marker
boot-end-marker
!
!
logging buffered 100000
!
aaa new-model
!
!
aaa group server radius GRP_PPPoE
 server name RADIUS_SV
 ip radius source-interface Vlan100
!
aaa authentication ppp default group GRP_PPPoE
aaa authorization network default group GRP_PPPoE
aaa accounting network default start-stop group GRP_PPPoE
!
!
!
!
!
aaa session-id common
memory-size iomem 15
clock timezone JST 9 0
!
!
・・・中略・・・
!
!
no spanning-tree vlan 100
!
!
!
!
!
bba-group pppoe BBAG_01
 virtual-template 1
!
!
interface Loopback0
 description Loopback
 ip address 1.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0
 ip address 222.222.222.254 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0/1
 no ip address
 duplex auto
 speed auto
 pppoe enable group BBAG_01
!
interface GigabitEthernet0/1/0
 no ip address
!
・・・中略・・・
!
interface GigabitEthernet0/1/7
 switchport access vlan 100
 no ip address
!
interface Virtual-Template1
 mtu 1454
 ip unnumbered Loopback0
 keepalive 60
 ppp authentication chap pap
 ppp ipcp route default
!
interface Vlan1
 no ip address
 shutdown
!
interface Vlan100
 ip address 192.168.1.100 255.255.255.0
!
ip forward-protocol nd
!
!
!
no cdp run
!
!
!
radius server RADIUS_SV
 address ipv4 192.168.1.253 auth-port 1812 acct-port 1813
 key password
!
!

少し並び替えて判りやすく・・
下記の1.1.1.1 :Cisco 1921 のlo は後にFortiGate 40FがPPP Sessionを張った先のGatewayとして認識するもの (ISP&上位Gateway相当)となります。

interface Loopback0
 description Loopback
 ip address 1.1.1.1 255.255.255.255


interface Virtual-Template1
 mtu 1454
 ip unnumbered Loopback0
 keepalive 60
 ppp authentication chap pap
 ppp ipcp route default
 
 
 bba-group pppoe BBAG_01
 virtual-template 1


interface GigabitEthernet0/1   ・・・この先にFortiGate 40Fのwanが接続してくる
 no ip address
 duplex auto
 speed auto
 pppoe enable group BBAG_01

●FortiGate 40F(サプリカント(Supplicant))設定

主要なところだけ抜き出して記載いたします。

201_FG(interface).JPG

FortiGate-40F # config system interface

FortiGate-40F (interface) # show
config system interface
    edit "wan"
        set vdom "root"
        set mode pppoe
        set allowaccess ping https ssh
        set type physical
        set role wan
        set snmp-index 1
        set ipunnumbered 200.0.0.1              ●DMZから借用
        set username "A01@isp.hogehoge.com"
        set pppoe-unnumbered-negotiate disable  ●ネゴで割り当てない
        set password ENC b+1ww********kVA
        set mtu-override enable
        set mtu 1492
    next
    edit "lan1"
        set vdom "root"
        set type physical
        set snmp-index 2
    next
    edit "lan2"
        set vdom "root"
        set type physical
        set snmp-index 3
    next
    edit "lan3"
        set vdom "root"
        set type physical
        set snmp-index 4
    next
    edit "a"                                    ●aポートをDMZポートとして利用
        set vdom "root"
        set ip 200.0.0.1 255.255.255.248        ●ISPからの/29割り当てレンジをここで持つ
        set allowaccess ping ssh
        set type physical
        set alias "DMZ"
        set device-identification enable
        set role lan
        set snmp-index 5
    next
    edit "lan"
        set vdom "root"
        set ip 192.168.1.99 255.255.255.0
        set allowaccess ping https ssh radius-acct fabric
        set type hard-switch
        set stp enable
        set role lan
        set snmp-index 10
    next
end

●PPPを介した疎通試験

割り当てた/29のレンジの中から実際にIPを持った端末を仕込み、疎通性を確認してみます。

①試験用青VM:Internet上hostを模した(222.222.222.222)から
a(DMZ)ポートに接続された200.0.0.0/29 内の端末(200.0.0.2)(200.0.0.3)への接続確認
→無事/29 range内の端末に対してInternet側からのアクセスができていました。OK。
301_test(global_to_DMZ).JPG

②a(DMZ)ポートに接続された200.0.0.0/29 内の端末(200.0.0.2)から
試験用青VM:Internet上hostを模した(222.222.222.222)への接続確認
→Source NATを仕掛けており、wanにアサインした(unnumbered:200.0.0.1)からのpacketとして試験用青VMまで届いていました。こちらもOK。
302_test(DMZ_to_global).JPG


●FortiGate 40F PPP接続後の確認

下記のようにPPPoE接続後は、ppp2というGatewayが生成されていました。

FortiGate-40F # get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       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, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       V - BGP VPNv4, E - BGP EVPN, L - Leaked, D - Directly leaked
       * - candidate default

Routing table for VRF=0
S*      0.0.0.0/0 [5/0] via 1.1.1.1, ppp2, [1/0]
C       1.1.1.1/32 is directly connected, ppp2
C       192.168.1.0/24 is directly connected, lan
C       200.0.0.0/29 is directly connected, a
C       200.0.0.1/32 is directly connected, ppp2

●Cisco 1921 PPP接続後の確認

下記のようにFortiGate 40FからのPPPoE接続を受けてPPPを確立していました。

Cisco1921#show pppoe session
     1 session  in LOCALLY_TERMINATED (PTA) State
     1 session  total

Uniq ID  PPPoE  RemMAC          Port                    VT  VA         State
           SID  LocMAC                                      VA-st      Type
      4      4  e8ed.d609.77b2  Gi0/1                    1  Vi2.1      PTA
                bc16.6563.b961                              UP
Cisco1921#show ppp all
Interface/ID OPEN+ Nego* Fail-     Stage    Peer Address    Peer Name
------------ --------------------- -------- --------------- --------------------
Vi2.1        LCP+ CHAP+ IPCP+      LocalT   200.0.0.0       A01@isp.hogehoge.com

Cisco1921#sh 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 200.0.0.0 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 200.0.0.0
      1.0.0.0/32 is subnetted, 1 subnets
C        1.1.1.1 is directly connected, Loopback0
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, Vlan100
L        192.168.1.100/32 is directly connected, Vlan100
      200.0.0.0/24 is variably subnetted, 2 subnets, 2 masks
U        200.0.0.0/29 [1/0] via 200.0.0.0
C        200.0.0.0/32 is directly connected, Virtual-Access2.1
      222.222.222.0/24 is variably subnetted, 2 subnets, 2 masks
C        222.222.222.0/24 is directly connected, GigabitEthernet0/0
L        222.222.222.254/32 is directly connected, GigabitEthernet0/0

●終わりに

今回の検証では、FortiGateでのUnnumbered IP接続というゴールに辿り着くまでに幾度となく壁にぶつかりましたが、要所要所で貴重な知見を残してくださっていた先人達の存在に深く感謝いたします。

ネットワークのトラブルシュートや仕様の検証は、一見するとドはまりの連続で遠回りにも思えますが、こうした「うまくいかなかった経験」こそが重要かもしれません。

この記事が、同じようにFortiGateやCisco、RADIUSを組み合わせた環境構築で頭を抱えているどなたかのヒントや助けとなれば幸いです。


参考にさせていただいた先人たちの知恵

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?