[Network] IHANetに接続しました。

技術のお話し

この度、IHANet(Internetworking Hobbyist Association Network)への接続を果たすことが出来ました。AS番号は64664です。

存在自体はだいぶ以前から存じていて、数年前とかは繋いでみたいな~とか思いながら、知見がないからなーと尻込みし、なかなかその願いは果たせずに居たのですが、この度何とか接続することが出来るようになったんで、備忘録に残そうかと。

当初、RTX-3000で出来ないかと相談してみたのですが、悲しいかなRTX-3000はBGP4+が使えないということから、CentOS7+Quaggaで始め、昨日8/1(火)にCisco 1812Jへリプレイスしました。その際のTipsをまとめようかなと思います。

20430158_1422674234488835_8244822323041663674_nihanet_connection_diagram_20170801a【必要なもの】

  • 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の皆様にはただただ感謝です。

今後も引き続き勉強は続けていきたいと思います。

Tags:

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

PAGE TOP