[MikroTik] auひかり回線でMikroTikルータを使う

動機

auひかり回線で、自分が所有するMikroTik製ルータを使いたい。
HGWのDMZを使うという疑似的な方法ではなく、ONUに直結したい。

機材: CCR2116-12G-4S+ (RouterOS v7.11)
回線: auひかり 10Gプラン

課題

auひかりの回線は以下のような複数手段でHGWを認証しており、単純に自前ルータをONUへ直結しても通信可能にならない。

  1. HGWのMACアドレスによる認証

  2. DHCPv6のDUIDによる認証

  3. 802.1x認証 (定期的に行われる)

対策

RouterOS(と少なくともCCR2116のハードウェア)には上記課題1,2に対応可能な仕様/機能が揃っている。
3の802.1x認証にはHGWが持っている認証情報が必要となるためHGWの完全撤去は不可能だが、認証処理のみをHGWに移譲することはできる。

1の対策:
インターフェースなりブリッジのMACアドレスを偽装する。
RouterOSにおいて各インターフェースのMACアドレスは任意に設定可能。

2の対策:
DHCPv6クライアントのDUIDをHGWのものに合わせる。
1の回避策を実施した上でオプションを設定すれば勝手に合う。

3の対策:
MikroTikルータにHGWを接続し、回線とHGWが認証フレームをやり取りできるように細工する。
RouterOSのブリッジはEAPoLを透過する。(機種やHW処理の仕様にもよるかもしれない)

実践

SFP+4にONUを接続、Ether4にHGWのWAN側ポートを接続している。
Firewall設定は割愛するが、IPv4/IPv6ともにきちんと設定しておく。

警告!
回線側に変なパケットを流してしまわないよう、くれぐれも注意して設定してください。

# ブリッジを作成(MACアドレスはHGWの裏に記載されている)
/interface bridge
add admin-mac=<HGWのWAN側MACアドレス> auto-mac=no frame-types=admit-only-vlan-tagged name=bridge-kddi vlan-filtering=yes

# ブリッジにONUとHGWのポートを追加
/interface bridge port
add bridge=bridge-kddi frame-types=admit-only-untagged-and-priority-tagged interface=ether4 pvid=77
add bridge=bridge-kddi frame-types=admit-only-untagged-and-priority-tagged interface=sfp-sfpplus4 pvid=77

# WAN用のVLANを作ってブリッジに所属させる
/interface vlan
add interface=bridge-kddi name=vlan-kddi vlan-id=77
/interface bridge vlan
add bridge=bridge-kddi tagged=bridge-kddi vlan-ids=77

/interface list member
add interface=vlan-kddi list=WAN

# 回線とHGWの間で認証フレームを通す(その他はすべて遮断する)ように設定
/interface ethernet switch rule
add mac-protocol=0x888E new-dst-ports=sfp-sfpplus4 ports=ether4 switch=switch1
add mac-protocol=0x888E new-dst-ports=ether4 ports=sfp-sfpplus4 switch=switch1
add new-dst-ports="" ports=ether4 switch=switch1

# IPv4のDHCPクライアントを設定
/ip dhcp-client
add add-default-route=yes !dhcp-options interface=vlan-kddi

# IPv6のDHCPクライアントを設定
/ipv6 dhcp-client
add add-default-route=yes interface=vlan-kddi pool-name=pool-kddiv6 request=prefix use-interface-duid=yes use-peer-dns=no

# ルータ自身のIPv6アドレスを取得する設定
/ipv6 address
add advertise=no eui-64=yes from-pool=pool-kddiv6 interface=vlan-kddi

# IPv6のルータ広告を受け取る設定
/ipv6 settings
set accept-router-advertisements=yes

動作確認

IPv4およびIPv6のIPアドレスが貰えることと、適当なグローバルIPアドレスへのpingが通ることで確認する。
一定間隔で行われる認証をパスできるか確認するため、更に2日ほど様子を見ると良い。


今回は内蔵スイッチにルールを設定することで実現したが、ブリッジのフィルタ設定でも出来るかもしれない。

この記事が気に入ったらサポートをしてみませんか?