●はじめに
とある案件で、【PPPoE+固定IP 8つ+Fortigate】というものを扱うこととなりました。
PPPoE自体は通常のISPアクセス(まぁ、最近はIPoEばかりなのでしょうけれど)やFlets VPNWIDEでもおなじみなのですが、固定IP 8つとなるとunnumbered接続になるのかな?と思います。
unnumbered接続。思い返してみましたが、物心がつくかつかないかの時に触ったYAMAHA RTXでのサーバ公開くらいしか触ることも無かったですかね。
今回はFortiGateで、ということで、軽く組んで確認してみようと思・・・・・ったのが運のつき。![]()
結果思ったよりドはまりコースになってしまいました。。
FortiGateはさほど得手ではありませんが、数年前の先人達のコメントに助けられながらもあがいた・・うまくいかなかった失敗も含めて共有してみたいと思います。
※うまくいったことより、うまくいかなかった話の方が楽しいですよね。![]()
●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通信としてルーティングされるため、正常に通信が確立します。
- OCNの固定IP 8環境では、PPPoEネゴシエーション時に相手方(ISP側 Gateway)のアドレスとして特定の仮想IP(例:
-
今回の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等)を行う設計が可能になります。
- DMZ等の内部物理ポート(例:
●昔やっていたこと。検証環境組み。
VPNWIDEの設計/設定を行うことは過去所属していた会社でもよくありました。
まぁ、関東近郊であればトラブルシュートや手直しなんかで現場対応なんてことも対応できましたが、とある案件で小笠原のVPNWIDE・・なんてのがあったのですよね。

あの島は一旦向かったら、6日間は帰ろうにも帰れない。部材がないのも当たり前ですが、ドはまり!つながらない!!どうしよう?!・・・からの後日retry~
なんてことは許されません。(そりゃそうだ。時間
もお金
も有限。
あの時は初でしたでしょうか。Flets網を模したPPPoE(払い出し側)環境をきちんと作ったの。

Cisco 1812Jでaaa attribute list~とか、ユーザIDをVPNWIDEのcvn番号に合わせて~とかゴニョゴニョした後に・・おお、RTからPPPoE接続してIP払い出された
!
なんてことをやった遠い記憶。。。
●検証環境を作りましょう。【失敗その①】
さて、失敗談。(ここが重要。かっこ悪いことでも誰かの役に立つかも。)
先ずはですね。。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
見るからにど正常なんですよねぇ。。。![]()
対向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に乗せ切れていない気がしました。![]()
まぁ、ダメなものはショウガナイよね。切り分け
切り分け。
倉庫の奥から盟友のCisco 1921を召喚し。。(お久しぶり!)

→すんなり通るじゃん!え・・・半日悩んだってのに。。。(自分が悪い。)
で、後日確証を得たのはgeminiさんからでもcopilotさんからでもなく・・
お助けいただいたのは2022/11のMezashi_conf様。(有難うございます。貴方のおかげで救われました。)
>2022/11/4 追記
>PPPoEサーバー動かすには追加ライセンスが必要だったらしい。 IOSだとその辺ライセンス不要なので気づかなかった。
oh!![]()
●検証環境を作りましょう。【失敗その②】
失敗その①とは前後するのですが、こちらは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

元々は、無線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) |
●NetAttest EPS(RADIUS認証サーバ)へのlogin
最近のEdge、Chromeから通常アクセスすると、証明書がらみでerrってloginできず。
→IEモード有効化を行ってからアクセスすることとします。

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
を設定します。


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


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

④アドレス型払い出しのキモとなる部分を設定していきます。
こんな内容値を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) |
●Cisco 1921(オーセンティケータ (Authenticator / 認証装置))設定
主要なところだけ抜き出して記載いたします。(ここでも先人達のconfigを流用。感謝
)
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))設定
主要なところだけ抜き出して記載いたします。
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。

②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。

●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を組み合わせた環境構築で頭を抱えているどなたかのヒントや助けとなれば幸いです。
参考にさせていただいた先人たちの知恵
-
Cisco / RADIUS 関連
- [PPPoE ServerとRADIUSでのプレフィックス配信] https://server-network-note.net/2017/12/pppoe-server-clinet-radius-prefix/
- [Cisco Community: PPPoEサーバの設定について] https://community.cisco.com/t5/%E3%83%AB%E3%83%BC%E3%82%BF-sd-wan/pppoe%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/td-p/4718398
- [Zassoul Blog] https://wp.zassoul.com/?p=755
- [MYTECH BLOG: CiscoルータをPPPoE Serverとして設定する] https://mytech-blog.com/cisco-pppoe-server/
-
FortiGate 関連
- [Qiita: FortiGateでのUnnumbered設定] https://qiita.com/haruharuharuby/items/7f737153f8f291e089ca
- [horliy-blog: FortiGateにおけるUnnumbered PPPoEとOSPF] http://horliy.seri.gr.jp/mt/horliy-blog/2019/01/fortigateunnumberdpppospf.html
- [FortiGate Validation / FAQ: フレッツ固定IP8/IP16の設定] https://www.fgshop.jp/sp_faq/flets_ip8_ip16/




