SDCCに参加しVyOS1.2.6でBGPの経路を受け取った話。

こんにちは。

つい最近SDCC(島根データセンター友の会)に加入したはっすぃです。

あ、SDCCへのリンクを貼っておきますね。

https://sdcc.svrop.net/

で、このSDCCに参加しオープンネットワークに接続することで様々な実験を行うことができます。

申請すればグローバルなIPアドレスなどを貰えるのでサーバーを公開するような事も可能です。

今回はVyOS1.2.6 LTS版を使用してSDCCへ接続し、

BGPで経路情報を受け取るまでをまとめようと思います。

なお今回VyOSを用意する方法についてはご紹介しません。


まずはじめに

まずはじめにSDCCに参加できるかどうかを調べます。

Peering Policyや規則などは公式ページにすべて乗っていますので、

今回確認する事は環境的な部分を確認します。

経路を受け取る前にSDCCのルーターにトンネルを張る必要があり、

GRE、EtherIP、L2TPv3、IPIPなどの技術を使いトンネルを構築します。

IPv6を使用し対向にトンネルを張るのですが、

対向は島根なのでNTT東日本のNGN網を使用する事はできませんでした。

追記)東日本拠点もあります!増設予定です!

もしインターネットに出る事のできないIPv6アドレスを使用しているなら、一工夫必要になると思います。

グローバルなIPv4アドレスをPPPoEなどで貰ってきているなら HE.net のIPv6 Tunnel Brokerなどから

IPv6アドレスを貰ってくる必要が有ります。

https://tunnelbroker.net/

もしかしたらNGN網から出れないIPv6アドレスでも、

自分が中継点になる事でオープンネットワークに接続する事ができるかもしれません。

追記)もし接続を希望するのでしたら、コメントなりなんなりで連絡をください!!!

追記)(中の人に是非推奨してほしいと言っていただけました!)

準備ができたらこちらからメールを送信し申し込みしましょう!

トンネル接続をするための情報を集める

申し込みをし申請書を提出すると、データセンターの管理者から会員証が届きます。

その会員証に、AS番号やアカウント情報、割り当てられたIPアドレスなどが書いてあり、

その接続情報を使用して対向とトンネルを掘ります。

私はまず初めに管理者の方とトンネル接続をして経路情報を受け取りました。

どのようなトンネリングプロトコルを使用するのか、接続に使用するIPアドレスはどれを使用するのか、

などなど、接続に必要になる情報を相手と交渉して決定します。

このような行為はピアリング交渉と呼ばれ、ほかのネットワークと接続するときに必要になってきます。

ちゃんと人間と喋れるようになっておきましょう。

今回はグローバルなIPv6アドレスを使用し、対向ルーターとGREというプロトコルを使用してトンネルを張り、BGPを使用して経路情報を受け取ります。

ここまで決まればあとは設定するだけです!

VyOSに実際に設定を入れる

実際に設定を入れる前に1度情報を整理しましょう。

使用するトンネリングプロトコル

GRE

トンネルインターフェイスのIPアドレス

むこう側

IPv4 100.64.X.1

IPv6 2001:XXXX:XXXX:XXXX::1/127

こちら側

IPv4 100.64.X.2

IPv6 2001:XXXX:XXXX:XXXX::2/127

トンネルの通信を流すときに使用するIPアドレス

こちら側

2409:XXXX::2

むこう側

2407:XXXX::1

使用するルーティングプロトコル

BGP

AS番号

こちら側

22222

むこう側

11111

ルーターID

特に縛りは無かったのですが、設定しないと要らぬトラブルを招く恐れがあったので、トンネル用のIPv4アドレスをIDとして設定する事にしました。

100.64.X.2

とりあえずこれだけあればトンネルを張って経路を受け取れます。

設定は完璧である事を信じて設定を流し込みましょう!

#インターフェイスの設定
set interfaces ethernet eth0 address 'dhcpv6'
set interfaces ethernet eth0 duplex 'auto'
set interfaces ethernet eth0 ipv6 address autoconf
set interfaces ethernet eth0 ipv6 disable-forwarding
set interfaces ethernet eth0 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 smp-affinity 'auto'
set interfaces ethernet eth0 speed 'auto'
#トンネルの設定
set interfaces tunnel tun0 address '100.64.X.2/31'
set interfaces tunnel tun0 address '2001:XXXX:XXXX:XXXX::2/127'
set interfaces tunnel tun0 encapsulation 'ip6gre'
set interfaces tunnel tun0 local-ip '2409:XXXX::2'
set interfaces tunnel tun0 mtu '1400'
set interfaces tunnel tun0 multicast 'disable'
set interfaces tunnel tun0 remote-ip '2407:XXXX::1'
#BGPの設定
set protocols bgp 22222 address-family ipv4-unicast
set protocols bgp 22222 address-family ipv6-unicast
set protocols bgp 22222 neighbor 100.64.X.1 address-family ipv4-unicast
set protocols bgp 22222 neighbor 100.64.X.1 password 'testtesttest'
set protocols bgp 22222 neighbor 100.64.X.1 remote-as '11111'
set protocols bgp 22222 neighbor 100.64.X.1 update-source '100.64.X.2'
set protocols bgp 22222 neighbor 2407:XXXX::1 address-family ipv6-unicast prefix-list import 'using-prefix'
set protocols bgp 22222 neighbor 2407:XXXX::1 password 'testtesttest'
set protocols bgp 22222 neighbor 2407:XXXX::1 remote-as '11111'
set protocols bgp 22222 neighbor 2407:XXXX::1 update-source '2001:XXXX:XXXX:XXXX::2
set protocols bgp 22222 parameters router-id 100.64.X.2

設定を流し込んだら経路が降ってくる事を祈りながら待ちましょう。

経路が降って来ているかどうかは
show ip routeshow ipv6 routeコマンドで確認できます。

もし反応が無かったりしたら原因を探ってみましょう。

  1. トンネルが正しく張れているか確認する
  2. BGPのピアが上がっているか確認する
  3. フィルターの設定を見直す

トンネルが正しく張れているか確認する

まずは相手のトンネル用インターフェイスへpingを送って反応があるか確認してみましょう。

今回は2407:XXXX::1が相手のトンネル用インターフェイスのIPアドレスなので、こことの疎通を確認します。

反応があればトンネルの中に通信を流してみます。

相手のトンネル終端アドレスにpingを飛ばします。

2001:XXXX:XXXX:XXXX::1へpingを送ります。

もしpingが通らないようでしたらtcpdumpなどを駆使し、原因を探しましょう。

私の経験談ですが、eth0とeth1がwanとして動作している環境で、デフォルトルートがeth0になっていて、トンネル用にeth1を設定しました。

通信が

  1. 相手のルーター -> eth-0
  2. eth1 -> 相手のルーター

となり、相手側トンネル設定のremote-ipに一致せず、トンネルが張られない

という事がありました。

BGPのピアが上がっているか確認する

トンネルは正しく張れているにも関わらずピアが上がっていない時があります。

MTUがあっておらず、dropが発生していてBGPのピアが上がらないという事がありました。

他にもいろいろな問題が発生する可能性があると思います。

そういうときはひとつずつ問題を洗い出して、問題点を検証して修正していきましょう!

いろいろなトラブルに対応する技術が身に付きます。

サーバーを接続して通信してみる

SDCCから割り当ててもらえたIPアドレスを使用して、実際に外部と通信してみましょう!

eth1にv6とv4アドレスを割り当てます。

eth1につなげるような形で別のコンピューターを接続し、同一セグメントの別のIPを割り当てて通信してみましょう。

上手く設定できていれば実際にインターネットに出ることができ、実際にインターネットから通信を受け取る事ができるようになります。

サーバーの代わりにVyOSなどのルーターを接続してNAPTの設定を入れて使えばプロバイダー要らずですね

あとがき

ここまでできれば後はサーバーを用意したりして遊べるようになっているはずです。

もしやる事が無くなってしまったら、ほかのSDCC加入者の方とBGPのピアを貼ってマルチホーム環境を構築したりなどに挑戦してみてください。

私はいつでもピア相手を募集しております。

以上、ここまで読んで頂きありがとうございました。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

“SDCCに参加しVyOS1.2.6でBGPの経路を受け取った話。” への2件のフィードバック

  1. hashy0917のアバター

    % Incomplete command. でリブログしてコメントを追加:

    地味に追記しました。

コメントを残す

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