よくあるフレッツ系回線収容するときにPPPoE IP8で契約してルータなりFWなりで受ける構成を組むときのメモ。IOSはそれなりにやっているから良いとして,SRXやFortigateで最近構築することがあるのでメモを残す。
LAN払い出し型の場合,ルータ単体では実装は難しい(というか無理)なようで別途RADIUSサーバを準備する必要がある。(TACACS+でもいけるかなと思ったが,RAIDUSの「Framed-IP-Address/Framed-IP-Netmask」に該当するものが見当たらなかったので素直にFreeradiusをDebianに入れることにした。)
FreeRADIUS準備
Debian10にfreeradiusを入れる。公式を見ると4.0はめちゃくちゃ面倒だからただ使いなら3.xつかえとあったのでそれに従う。
参考) https://networkradius.com/packages/#fr32-debian-buster
# apt install freeradius -y
結構時間がかかるけれど,これで完了。次にclient.confの編集。
# vi /etc/freeradius/3.0/client.conf
# 以下追加
client 192.168.1.3 { # PPPoEサーバのIPアドレス
secret = secret-key # 認証用Key
}
続いてPPP認証用のユーザ設定。
# vi /etc/freeradius/3.0/user
# 以下追加
radius-user Cleartext-Password := "rad-secret"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 10.10.10.1,
Framed-IP-Netmask = 255.255.255.248
RADIUS再起動。
# systemctl restart freeradius
PPPoEサーバ準備
次にIOS XE17系でPPPoEサーバの準備。(以下抜粋)
radius server FreeRadius
address ipv4 <radiusのIP> auth-port 1812 acct-port 1813
key secret-key
!
aaa new-model
!
!
aaa group server radius PPPoE
server name FreeRadius
ip radius source-interface GigabitEthernet0/4
!
aaa authentication ppp default group PPPoE
aaa authorization network default group PPPoE
aaa accounting network default start-stop group PPPoE
!
bba-group pppoe FLETS
virtual-template 1
!
interface Loopback1
ip address 172.17.1.1 255.255.255.0
!
interface GigabitEthernet1 # RADIUSサーバと通信するIF
ip address 192.168.1.3 255.255.255.0
duplex auto
speed auto
!
interface GigabitEthernet3 # PPPoE接続用IF
no ip address
duplex auto
speed auto
pppoe enable group FLETS
!
interface Virtual-Template1
mtu 1454
ip unnumbered Loopback1
ppp authentication chap
!
PPPoEクライアント設定
IOS 15.x系
interface GigabitEthernet0/0
no ip address
pppoe enable group global
pppoe-client dial-pool-number 1
!
interface GigabitEthernet0/1
ip address 10.10.10.1 255.255.255.248
!
interface Dialer0
ip unnumbered GigabitEthernet0/1
encapsulation ppp
dialer pool 1
dialer-group 1
ppp authentication chap callin
ppp chap hostname radius-user
ppp chap password 0 rad-secret
!
ip route 0.0.0.0 0.0.0.0 Dialer0
!
dialer-list 1 protocol ip permit
JUNOS
このまんま。
set interfaces ge-0/0/0 unit 0 encapsulation ppp-over-ether
set interfaces ge-0/0/1 unit 0 family inet address 10.10.10.1/29
set interfaces fxp0 unit 0
set interfaces pp0 unit 1 ppp-options chap default-chap-secret "$9$eZBMxdbwgZGiN-kP5Q9CuO1Ervx7V2oG"
set interfaces pp0 unit 1 ppp-options chap local-name radius-user
set interfaces pp0 unit 1 ppp-options chap passive
set interfaces pp0 unit 1 pppoe-options underlying-interface ge-0/0/0.0
set interfaces pp0 unit 1 pppoe-options auto-reconnect 10
set interfaces pp0 unit 1 pppoe-options client
set interfaces pp0 unit 1 family inet unnumbered-address ge-0/0/1.0
set routing-options static route 0.0.0.0/0 next-hop pp0.1
Fortigate
WANのインタフェースにネットワークアドレス部分を入れないと駄目のようで,設定上気持ちが悪い。(が仕方が無いらしい)
system_interface:
- wan:
vdom: "FG-traffic"
mode: pppoe
allowaccess: ping
type: physical
lldp-reception: disable
role: wan
snmp-index: 1
ipunnumbered: 10.10.10.0
username: "radius-user"
pppoe-unnumbered-negotiate: disable
password: ENC xxxx
- internal:
vdom: "FG-traffic"
ip: 10.10.10.1 255.255.255.248
allowaccess: ping
type: hard-switch
device-identification: enable
lldp-reception: disable
lldp-transmission: disable
role: lan
snmp-index: 10
なお,PPPoEではないが,この構成でIPSecを行う際に送信元IPの指定がGUIでは「Local ID」しか設定することができず,CLIで「localid-type」を「address」に指定しないとPhase1の認証がこける。ここでハマって1日費やした。