Tagbangers Blog

ルーターの入れ替え時にBGPでハマった話

はじめに

こんにちは、実に1年以上ぶりにブログを書いている荻野です。
先日社内で利用しているルーターをYAMAHAのRTX810からRTX1210へとアップグレードをしました。
元々RTX810はAWSとVPN接続を確立していたのですが、RTX1210への変更時にBGPの設定で少しハマってしまった部分があったので自戒も込めてご紹介します。

入れ替え手順

ざっくり、以下の手順でルーターを入れ替えました。

  1. RTX810 のconfigを取得
  2. RTX1210 へconfigを反映
  3. RTX810 でプロバイダーとの接続を解除
  4. RTX1210 を社内ネットワークへ設置

作業当日はプレミアムフライデーだったせいか、利用メンバーが少なかったのでメンテナンス時間は多めに確保することができました。
また、どうしてもインターネットへ接続したいメンバーには、別に用意してあるゲスト向けのネットワークを利用することで凌いでもらいました。

そして障害は起きた

RTX1210へ入れ替え後に動作検証を行っていたところ、名前解決がうまくできていない事に気がつきました。
このネットワークのDNSサーバはVPNで接続した先、AWSのVPCの中に存在しています。

ちなみに、ローカルネットワークは 172.20.0.0/16 で、VPN先ネットワークは 172.25.0.0/16 です。

IPSecの状況ですが、ルーター側からはトンネルが確立できていることが確認でき、AWS側でもトンネルがUPしていることを確認できました。

この状態で、試しにDNSサーバに問い合わせてみます。

# localhost で実施
$ dig fugafuga.tagbangers.co.jp @172.25.0.200

; <<>> DiG 9.8.3-P1 <<>> fugafuga.tagbangers.co.jp @172.25.0.200
;; global options: +cmd
;; connection timed out; no servers could be reached

connection timed out... なるほど。
一応pingも飛ばしてみます。

# localhost で実施
$ ping 172.25.0.200
PING 172.25.0.200 (172.25.0.200): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4

Request timeout... なるほど。。。。

この時点で、今回の障害の原因は概ねこんな感じかなぁと考えていました。

  • ローカルネットワーク側のルーティング
  • ローカルネットワーク側のフィルター
  • AWS側のルーティング
  • AWS側のSecurityGroup

ですが、RTX810のconfigとRTX1210のconfigに差異はなく、もちろんAWS側の設定も一切変更していません。
(実は)RTXに精通している訳でもありませんので正直どの設定を直せばいいか見当がつきませんでした。

トラブルシューティングの時間です

さすがAWS。ドキュメント豊富です。

Yamaha 製カスタマーゲートウェイの接続のトラブルシューティング 

こちらを参考にトラシューしていきましょう。

ざざーっと、IKE / IPSec / トンネル の項目をチェックしますが、それぞれ問題はなさそう。(コマンドの実行結果は割愛)

次に BGP の項目をチェックします。

# RTX1210で実施
> show status bgp neighbor
BGP disabled

おや。。。。っということはルーティングも。。。。

# RTX1210で実施
> show ip route
172.20.0.0/16       172.20.0.1             LAN1  implicit

172.25.0.0/16 へのrouteがない。。RTX1210のconfigではBGPは有効になっているはずなのに。。
BGP-4 設定ガイド を見てみましょう。

5. 設定の有効化

すべての項目を設定したら、 最後にbgp configure refreshコマンドを実行します。 設定を変更したときには、このコマンドを実行するか、 ルータを再起動するまで、設定が有効にならないので注意してください。

Oh....ということで今回はルーターを再起動しました。

再起動後、改めてBGPの設定を確認してみます。

# RTX1210で実施
> show status bgp neighbor
BGP neighbor is xxx.xxx.xxx.xxx, remote AS 10124, local AS 65000, external link
  BGP version 0, remote router ID 0.0.0.0
  BGP state = Idle
  Last read 00:00:00, hold time is 0, keepalive interval is 0 seconds
  Received 0 messages, 0 notifications, 0 in queue
  Sent 0 messages, 0 notifications, 0 in queue
  Connection established 0; dropped 0
  Last reset never
Local host: unspecified
Foreign host: xxx.xxx.xxx.xxx, Foreign port: 0

Idle状態ですね。立ち上がりはしばらく時間が必要なようです。
少し時間が経過してから今度はルーティング情報も確認してみます。

# RTX1210で実施
> show ip route
172.20.0.0/16       172.20.0.1             LAN1  implicit
172.25.0.0/16       xxx.xxx.xxx.xxx    TUNNEL[1]       BGP  path=10124

無事にルーティングも追加されました。

改めてdigとpingも試してみましょう。

# localhostで実施
$ dig fuga.tagbangers.co.jp @172.25.0.200 +noall +answer

; <<>> DiG 9.8.3-P1 <<>> fuga.tagbangers.co.jp @172.25.0.200 +noall +answer
;; global options: +cmd
fuga.tagbangers.co.jp.3600INA172.25.10.50
# localhostで実施
$ ping 172.25.0.200
PING 172.25.0.200 (172.25.0.200): 56 data bytes
64 bytes from 172.25.0.200: icmp_seq=0 ttl=125 time=18.798 ms
64 bytes from 172.25.0.200: icmp_seq=1 ttl=125 time=18.784 ms
64 bytes from 172.25.0.200: icmp_seq=2 ttl=125 time=16.522 ms

ということで無事に名前解決もできるようになりました。

おわりに

結論ですが、RTXでのBGPの設定有効には、ルーターの再起動かbgp configure refreshコマンドが必要です。
それでは、よいRTXライフをお送りください!