2021/10/07現在、CiscoルータはただのVPNゲートウェイとしか機能しない設定にしました。
はじめに
御存知の通り、nuroでONUを提供してもらうためには、法人契約しかなく。。。
- WLAN無効
- DMZ設定
- DHCPv4無効
などなどしてなんとか使うのが一般的です。どうにかしてAliexpressとかからいいのを探してきても、なかなか1GE+4FEとか、IPv6未対応とか、設定いじってもbridgeできなかったり、もう諦めてHG8045Qを使ってもいい感じにできないか、と自分なりに煮詰めた設定をメモしておきます。
環境
- nuroマンション+4
- HG8045Q
- Cisco 2911(Service Module: SM-ES3G-16-P@Cisco c3560e)
構成
+-----------------------------------------------+
| Cisco 2911 |
| g0/0: IPv4 StaticADDR, NAPT outside |
+-------+ (VLAN10) | brigde 1: g0/1(IPv6 traffic only), vlan10 |
|clinets|----------| bridge BVI1: IPv4 NAPT inside |
+-------+ | IPv6 DHCPv6-PD client |
IPv4: | IPv6 unicastADDR (use PD prefix) |
DHCP from C2911 +-----------------------------------------------+
IPv6: g0/0 g0/1
configure from | | PathThrough(nd, ra)
HG8045Qs RA IPv4 DMZ | | DHCPv6(DNS)
| | DHCPv6-PD(/64 prefix)
LAN1 LAN2
+-------------------------------+
| HG8045Q |
| IPv4: DHCP disabled |
| DMZ = C2911 g0/0 ADDR |
| IPv6: ?????? |
| WLAN: OFF |
+-------------------------------+
|
| G-PON
|
+------+
| nuro |
+------+
苦労したところ
IPv4はだましだましなんとかできるのですが、IPv6がクセモノです。
HG8045Q側設定
IPv6 > LANアドレス設定
- ルータ広告を有効にする
- DHCPv6サーバを有効にする
- リソース割り当てモード: 手動
- アドレス/プレフィックスの割り当て方法: SLAAC
- その他の情報の割り当て方法: DHCPv6
- ULAモード: 無効
リソース割り当てモードは自動にするとどうなるか検証してませんが、なんとなく雰囲気でDHCPv6でアドレス配布されるの嫌なので手動に
ULAモードについては、自動でも手動でも使い物になりませんでしたので、無効にしています。
Cisco側設定
孤高なるCisco様に倣って、書いていきます。
version 15.7
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname c2911
!
boot-start-marker
boot-end-marker
!
no aaa new-model
!
no ip dhcp conflict logging
ip dhcp excluded-address 192.168.0.251 192.168.0.254
!
ip dhcp pool LAN
network 192.168.0.0 255.255.255.0
default-router 192.168.0.254
dns-server 192.168.0.254
!
ip dhcp pool raspi4
host 192.168.0.250 255.255.255.0
client-identifier 01dc.a632.cc14.2d
bootfile ""
next-server 192.168.0.253
default-router 192.168.0.254
dns-server 192.168.0.254
option 43 ascii "Raspberry Pi Boot"
!
no ip domain lookup
ip domain name hogehoge.com
ip inspect name SPI icmp
ip inspect name SPI tcp
ip inspect name SPI udp
ip cef
ipv6 unicast-routing
ipv6 inspect name SPI icmp
ipv6 inspect name SPI tcp
ipv6 inspect name SPI udp
ipv6 cef
!
multilink bundle-name authenticated
!
license udi pid CISCO2911/K9 sn XXXXXXXXXXX
hw-module sm 1
!
vtp version 2
!
redundancy
bridge-domain 1
!
bridge irb
!
interface Embedded-Service-Engine0/0
no ip address
shutdown
!
interface GigabitEthernet0/0
ip address 192.168.200.2 255.255.255.0
ip nat outside
ip inspect SPI out
ip virtual-reassembly in
duplex auto
speed auto
!
interface GigabitEthernet0/1
no ip address
duplex auto
speed auto
bridge-group 1
bridge-group 1 input-type-list 200
bridge-group 1 output-type-list 200
!
interface GigabitEthernet0/2
no ip address
shutdown
duplex auto
speed auto
!
interface GigabitEthernet1/0
ip address 192.168.201.1 255.255.255.0
!
interface GigabitEthernet1/1
switchport mode trunk
no ip address
!
interface Vlan1
no ip address
!
interface Vlan10
no ip address
bridge-group 1
!
interface BVI1
ip address 192.168.0.254 255.255.255.0
ip nat inside
ip virtual-reassembly in
ipv6 address nuroPrefix ::DEAD:BEEF:F000:8AAA/64
ipv6 nd autoconfig default-route
ipv6 dhcp client pd nuroPrefix rapid-commit
ipv6 inspect SPI in
!
ip forward-protocol nd
!
no ip http server
no ip http secure-server
!
ip dns view default
dns forwarding
dns forwarder 192.168.200.1
dns forwarder 8.8.8.8
ip dns view-list dns-view
view default 10
restrict source access-group 1
ip dns server view-group dns-view
ip dns server
ip nat inside source list 1 interface GigabitEthernet0/0 overload
ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0 192.168.200.1
ip ssh version 2
!
access-list 1 permit 192.168.0.0 0.0.0.255
access-list 200 permit 0x86DD 0x0000
!
control-plane
!
bridge 1 protocol ieee
bridge 1 route ip
!
line con 0
line aux 0
line 2
no activation-character
no exec
transport preferred none
transport output pad telnet rlogin lapb-ta mop udptn v120 ssh
stopbits 1
line 67
no activation-character
no exec
transport preferred none
transport input all
transport output pad telnet rlogin lapb-ta mop udptn v120 ssh
stopbits 1
flowcontrol software
line vty 0 4
login local
transport input ssh
transport output all
!
scheduler allocate 20000 1000
!
end
ipv6 unicast-routing |
---|
IPv6ルーティングをするためのおまじない。 |
ipv6 inspect name SPI xxx |
---|
IPv6のいわゆるステートフルパケットインスペクション(SPI)の対象について宣言。 |
ipv6 cef |
---|
IPv6を早くするおまじない。 |
bridge irb |
---|
ONUからのDHCPv6-PDによるPrefixDelegationが効かないので、もう最終手段としてIPv6パケットをブリッジするブリッジタイプを宣言します。irb以外にもある。 |
bridge-group 1 |
---|
このインターフェースをBridge1のグループにする。パケットはBVIというインターフェースに流れる。ちなみにこれを入れるとインターフェースにアドレス等設定しても意味がなくなる。 |
bridge-group 1 [input,output]-type-list 200 |
---|
特定のパケットのみBridgeに流すように設定する。 |
interface BVI1 |
---|
bridge groupの番号に応じたパケットが集まってくるところ |
ipv6 address nuroPrefix ::DEAD:BEEF:F000:8AAA/64 |
---|
このインターフェースのIPv6アドレスを、DHCPv6-PDで降ってくるPrefixと、インターフェースIDで設定する。ちなみにここを nuroPrefix ::1:dead:beef:f000:8aaa/64 にしても全く無視して、自身が持っているサブネットはこれしかないとばかりonuは言ってくる。あなたはPDで/56持ってきました!っていってるんですけどねぇ!
|
ipv6 nd autoconfig default-route |
---|
お近くのルータさんを見かけたら、そいつをデフォルトゲートウェイとしてくれる。 |
ipv6 dhcp client pd nuroPrefix rapid-commit |
---|
使えないonuに対して、DHCPv6-PDでPrefixをよこしてくださいと言う。しかも急かす。 |
ipv6 inspect SPI in |
---|
これを入れておくと、ルータを経由するパケット全てに対してSPIで防御してくれる。 |
access-list 200 permit 0x86DD 0x0000 |
---|
先述のbridgeに入ってくるパケットの種別を指定する。 0x86DDがIPv6。 |
bridge 1 protocol ieee |
---|
bridgeのおまじない |
bridge 1 route ip |
---|
bridgeをipルーティングするためのおまじない |
この設定に落ち着いた経緯
ルータはIPsecの拠点間VPNセンターとして機能させる上で、IPv6を使ったIPv4トンネルを掘りたいので、IPv6アドレスを持ちつつ、クライアントも問題なくv4v6のデュアルスタックで問題なく通信させるには、この設定しか思いつかず。。
Cisco歴が3年ほどで、特に資格や勉強をしているわけではないので、Google先生の知識に付け焼刃的設定になっているかもしれませんが、実際に不自由ないので、こんな感じです。
あと、IPv4とIPv6で一本ずつケーブルを引くことで、各バージョンごとで1Gbpsのスループットを期待できます。現在の混在環境では1Gbps以上のスループットが出ることがあり(fast.comで1Gbpsでた)、なにげにbondingみたいになったことでスループットが上がりました。嬉しい誤算。
せめてもBridgeモードの解放を望みます
いろいろ試そうとすると、ベンダ設定が邪魔をしてくるのが不満です。
ONU単体とか、SFP+のスイッチも持っているので、XG-PON SFP+ ONUの提供も期待してたりします。
だめですか??
問題発生(2021/10/02追記)
- Windowsで、brideされたONUのRAによるデフォルトゲートウェイ、Ciscoからのデフォルトゲートウェイと2つ配られて不安定になる模様。
- Androidも同じような挙動担っている感じがする
- MacはCiscoのデフォルトゲートウェイしか見ていない
解決法
- ONUのRAを止める
- 一応、ONUのULAモードを自動にしておく
-
Cisco# sh ipv6 dhcp int
で、Reachable via addressがONUのULAなので、メモしておく。 -
Cisco(config)# int bvi1
で、no ipv6 nd autoconfig default-route
する。ONUからRAが来ないので意味無し。 Cisco(config)# ipv6 route ::/0 bvi1 ONU_ULA
すると、みんなルータを向いてくれる。
結局意味がなかった。無駄記事かも。
まあ、Prefixに応じた固定IPv6アドレスが設定できる分いいか。
config
no ip domain lookup
ip cef
ipv6 unicast-routing
!
ipv6 cef
!
bridge-domain 1
!
bridge irb
!
interface GigabitEthernet0/1
no ip address
duplex auto
speed auto
bridge-group 1
bridge-group 1 input-type-list 200
bridge-group 1 output-type-list 200
!
interface Vlan10
no ip address
bridge-group 1
!
interface BVI1
ip address 192.168.0.254 255.255.255.0
ip nat inside
ip virtual-reassembly in
ipv6 address nuroPrefix ::DEAD:BEEF:15:F00D/64
ipv6 nd autoconfig default-route
ipv6 nd ra suppress all
ipv6 dhcp client pd nuroPrefix
!
access-list 200 permit 0x86DD 0x0000
!
bridge 1 protocol ieee
bridge 1 route ip
!
end