この度、IHANet(Internetworking Hobbyist Association Network)への接続を果たすことが出来ました。AS番号は64664です。
存在自体はだいぶ以前から存じていて、数年前とかは繋いでみたいな~とか思いながら、知見がないからなーと尻込みし、なかなかその願いは果たせずに居たのですが、この度何とか接続することが出来るようになったんで、備忘録に残そうかと。
当初、RTX-3000で出来ないかと相談してみたのですが、悲しいかなRTX-3000はBGP4+が使えないということから、CentOS7+Quaggaで始め、昨日8/1(火)にCisco 1812Jへリプレイスしました。その際のTipsをまとめようかなと思います。
- IPv6アドレス(HE.netなどから払い出してもらうのが一番ラクかも。48ビットプレフィックスだし)
- 固定グローバルIPアドレス
- AS番号(IHANetのSlackに接続し、声掛けしたらいただくことができます)
- ピアを張ってくださるどなたか(IHANetのSlackに接続し、声掛けしたらどなたか反応してくださいます)
- 相互に接続する際のMTUサイズ(これ結構重要)
接続の流れとしては以下の通りでした。
まずルーターのインタフェース設定を行いますー。WAN側インタフェースには、extended access listを構成してGREプロトコルとICMPしか通さないように構成しときます。
■WAN側インタフェースの設定 interface FastEthernet0 ip address <グローバルIPv4> <ネットマスク> duplex auto speed auto ■LAN側インタフェースの設定 interface Vlan<内部VLANID> ip address <内部IPv4> <ネットマスク> ipv6 address <内部IPv6アドレス> ipv6 address <内部IPv6プレフィックス> eui-64 ipv6 enable ipv6 rip P1 enable ■WAN側インタフェースのinbound ACL ip access-list extended external permit icmp any any permit gre any host <自分のIPv4グローバルアドレス> deny ip any any interface FastEthernet0 ip access-group external in
続いて、接続先相手のPeerを張るためのトンネルインタフェースを形成します。これは相手にも同様に張って貰う必要があり、双方向に繋がないとピアアドレスとの疎通はできませぬ。MTUサイズは取り決めた値にするうことを忘れずに。
ここで、この経路に対するACLをaccess listで構成します。以下の設定は私のMastodonインスタンスのみを接続許可するルールを加えています。あと、BGP, ICMPも接続許可するようにしています。
■トンネルインタフェースの作成 interface Tunnel<連番> description <ニックネームやAS番号等> no ip address ip mtu <事前に取り決めたMTUサイズ> ip tcp adjust-mss 1360 ipv6 address <事前に取り決めた自分側のIPv6Peerアドレス> ipv6 enable tunnel source <自分のグローバルIPv4アドレス> tunnel destination <相手のグローバルIPv4アドレス> ■GREトンネルのIPv6用inbound ACL ipv6 access-list ipv6-external permit tcp any host 2001:470:FC89:100::11 eq www log permit tcp any host 2001:470:FC89:100::21 eq www log permit tcp any host 2001:470:FC89:100::11 eq 443 log permit tcp any host 2001:470:FC89:100::21 eq 443 log sequence 60 permit tcp any any eq bgp log permit icmp any any deny ipv6 any any interface Tunnel<連番> ipv6 traffic-filter ipv6-external in
無事接続が叶うとトンネルインタフェースがUPします。そしたら、BGPルーターを構成します。これで対向ピア側のルーティングテーブルが受領できるようになります。
■BGPルーターの定義 router bgp <自分のAS番号> no bgp default ipv4-unicast bgp log-neighbor-changes bgp graceful-restart restart-time 120 bgp graceful-restart stalepath-time 360 bgp graceful-restart neighbor <ピア対向側IPv6アドレス> remote-as <相手のAS番号> ! address-family ipv6 neighbor <ピア対向側IPv6アドレス> activate neighbor <ピア対向側IPv6アドレス> soft-reconfiguration inbound network <内部IPv6プレフィックス> exit-address-family
本来は、これで経路がBGP経由で受領できたらめでたしめでたしなんですが、我が家のコアIPv6ルーターはRTX-3000でして、こちらに内部的には経路集約を図る必要があります。その為、以下の設定を行い、RIPngでRTX-3000へ経路伝搬させるための実装を行います。RIPngの実装は内部インタフェースに対して行います。
■内部ネットワークへの経路伝搬(RIPng) ipv6 router rip <識別子> redistribute connected redistribute static redistribute bgp <自分のAS番号> interface <内部VLANID> ipv6 rip <識別子> enable
そして、RTX-3000側で以下の設定を行い、内部インタフェースに対してRIPngを適用します。
■内部ネットワークへの経路伝搬(RIPng) ipv6 lan1/1 rip send on ipv6 lan1/1 rip receive on ipv6 rip use on
我が家の場合、最終的にRTX-3000で以下のようにIHANetの経路を持ってくることが出来ました。
YOMOGI> show ipv6 route Destination Gateway Interface Type default - TUNNEL[6] static 2001:***:***:***::/64 fe80::21b:cff:fe90:48ba LAN1/1 RIPng 2001:***:***:***::fffe:c8/127 fe80::21b:cff:fe90:48ba LAN1/1 RIPng 2001:***:**:***::/64 - TUNNEL[6] implicit 2001:***:**:***::/64 fe80::21b:cff:fe90:48ba LAN1/1 RIPng 2001:***:****:***::/64 - LAN1/1 implicit 2001:***:****:***:***:***:***:0/126 fe80::21b:cff:fe90:48ba LAN1/1 RIPng 2001:***:****::/48 fe80::21b:cff:fe90:48ba LAN1/1 RIPng 2100:***:****:****:****:****:****:0/126 fe80::21b:cff:fe90:48ba LAN1/1 RIPng 2403:****:****:***::/56 fe80::21b:cff:fe90:48ba LAN1/1 RIPng
今回BGPを使ったりするのは本当に初めてで、ネットワークに対する知見不足を痛感しました。どんな歳になってもすべてを掌握するのって難しいなと感じる次第です。でも、それに対して懐深く構えてくださるIHANetの皆様にはただただ感謝です。
今後も引き続き勉強は続けていきたいと思います。
No responses yet