諏訪高島城

年末年始のまとまったお休みに、どこかお城を訪れたいと計画したのですが、この時期はたいていのお城が休館日となり日本100名城のスタンプが押せません。そんな中、高島城は年末こそお休みでしたが、正月三が日は開館している事を知り、年明け早々訪れる事にしました。

ちょうどこの頃、新田次郎著「武田信玄」を読んでおり、作中で舞台の一つともなっている長野県の諏訪地方を訪れることも楽しみでした。

アクセス

JR上諏訪駅から徒歩約15分程です。

東京からだと特急スーパーあずさを利用する事になるかと思います。時期によってはとても混む路線ですので、指定席の事前予約をすることをお勧めします。

スタンプ設置場所

  • 高島城天守閣資料館一階展示室内

沿革

高島城自体は武田信玄が活躍した時代のお城ではなく、それより後の文禄元年(1592年) に豊臣秀吉の家臣・日根野高吉によって築城されました。日根野高吉は安土城大坂城の築城にも携わったことがあることから、高島城も織豊系城郭として石垣や天守を備えたお城として築かれました。

その後、慶長6年(1601年)に譜代大名の諏訪頼水が2万7千石で入封し、以後、明治維新まで諏訪氏が当地を治める事となり、高島城は諏訪藩の政庁として威容を誇りました。

訪問記

天守閣は昭和45年(1970年)に復興されました。当時の天守閣は屋根に瓦ではなく、檜の薄い板を葺いた柿葺(こけらぶき)だったそうです(復興天守では銅板葺が用いられている)。

f:id:komo-jp:20190104213506j:plain

f:id:komo-jp:20190104213540j:plain

天守閣3階の展望台から望む諏訪湖。当時は城のすぐ傍まで諏訪湖が迫り、湖上に浮いて見えたことから別名「諏訪の浮城」と呼ばれ、日本三大湖城の一つとして数えられたそうです。現在は諏訪湖干拓が進み、水城の面影は失われています。

f:id:komo-jp:20190104213627j:plain

館内に展示がありましたが、美しい諏訪湖、そして湖畔に立つ高島城が葛飾北斎などにより浮世絵に描かれています。画像は葛飾北斎富嶽三十六景 信州諏訪湖」(Wikipediaより)。

f:id:komo-jp:20190104162934j:plain

小説「武田信玄」では、天文11年(1542年)に武田晴信(信玄)が諏訪領に侵攻し、諏訪家当主の諏訪頼重を自害に追い込みます。これにより諏訪家は滅んだのかと思っていましたが、諏訪頼重の従兄弟に当たる諏訪頼忠により諏訪家は再興し、その子諏訪頼水を初代藩主とする諏訪藩が江戸時代を通じて諏訪地方を治めていことを知り、嬉しい気持ちになりました。

2019年の抱負

はじめに

2017年1月に転職し、丸2年が経過しました。

前職では長らく勉強を怠り、若い頃に懸命に勉強して積み重ねてきた貯金(知識・技術)で案件をこなすような日々を過ごしていました。転職に際しては、これまでの実績やCCIEの資格、または面接でのコミュニケーション能力等を評価頂き採用につながりましたが、私自身は昨今の技術トレンドに追いつけていない旧来型のスキルしか持ち合わせていないことを痛切に感じていました。

転職を機に、既存技術の復習と併せて、ネットワークエンジニアからサーバ周りまでをカバーするインフラエンジニアへ の脱却を念頭に勉強を行ってきました。今年もその方針に変わりはなく、継続してネットワーク・サーバ周りの技術習得に励んでいこうと思っています。

それらに加えて、今年から、Pythonによるプログラミングの学習を取り入れていこうと思っています。”Network Programmability and Automation”というのは、ここ数年ネットワーク業界で特に目にすることが多くなったキーワードかと思います。正直、私の業務ですぐに必要になる感じではないのですが、ネットワーク分野においてもプログラミングの比重が高まっていくのは間違いなく、その準備としてもPythonの学習に取り組んでいこうと思っています。

また、技術領域以外では英語学習にも力を入れていきます。昨年のタイ出張を機に英語学習の意欲が高まったこともあるのですが、自身の市場価値を高めるだけではなく可能性を広げる為にも必要と感じています。

私も決して若くはなく年々衰えを自覚するような年となりましたが、とは言え引退を考える歳でもない。むしろ、これからより一層頑張っていかなければならない時期だと思っています。今年も懸命に自己研鑽に励むつもりです。

2019年の方針と目標

1. 既存ネットワーク技術領域

長年携わっている分野でもあるので既にある程度の知識の積み重ねはあるのですが、忘れてしまっていることも多く、CiscoPressのRouting TCP/IP Volume I、及びVolume IIを読み返して復習をしたいと思っています。ただ、勉強しなければならない事が多い中、復習にそこまで比重を置くことはできないかもしれません。

Routing TCP/IP, Volume 1 (CCIE Professional Development Routing TCP/IP)

Routing TCP/IP, Volume 1 (CCIE Professional Development Routing TCP/IP)

Routing TCP/IP, Volume II: CCIE Professional Development (2nd Edition)

Routing TCP/IP, Volume II: CCIE Professional Development (2nd Edition)

また今年担当する顧客が、Cisco WLC(Wireless LAN Controller)とAironet を大規模に導入しており、案件理解を深めるために無線LANに関する勉強を行うつもりです。こちらは業務に直結することもあり、疎かにできません。下記書籍で勉強を進め、併せてCCNA Wirelessも受験できたらと思っています。

CCNA Wireless 200-355 Official Cert Guide (Certification Guide)

CCNA Wireless 200-355 Official Cert Guide (Certification Guide)

1-1. 目標資格

2. 既存サーバ技術領域

今年はLinuxに加え、DNS BIND等のサーバに関する学習を進め、独自ドメインを取得の上、既に契約済みのさくらのVPS上でサーバの構築・運用をすることを目標とします。インフラエンジニアとしてサーバ構築・運用の基本として押さえておくべき事柄であり、枯れた技術であることもあり、特に情報発信は考えていません。

できればLinuxだけではなく、Windows Serverの基礎知識も習得したいと思っています。これまで担当してきた案件で、Windows ServerのActive Directoryとの連携が必要になるケースがいくつかあり、企業ネットワークで使われているWindows Server、特にActive Directoryに関する基礎的な知識も習得できたらと思っています。

3. 新しい技術領域

新しい技術領域に取り組むためのベースとなる技術として、今年はPythonを通じてプログラミングを学んでいこうと思っています。効率よく学ぶため、いま流行りのオンライン学習、その中でもPythonオンライン学習サービスのPyQのコースを受講しようと思っています。

プログラミングは使わないと直ぐに忘れてしまう気がします。多少強引でも実務に結び付けて活用していきたいと思っています。

4. 非技術領域

前述の通り、自身の市場価値・可能性を広げていく為に、技術だけではなく英語にも力を入れていこうと思っています。まずは実践的な英語力の習得より、アピールしやすいTOEICの点数獲得に主眼を置きます。800点以上を今年の目標に設定し、3か月に1回の頻度でTOEIC試験を受けるつもりです。

4-1. 目標資格

ちょっと詰め込みすぎな目標で全て達成するのは困難かもしれませんが、コツコツと積み重ねて頑張っていきたいと思います。

タイ バンコク出張記

先月、初めての海外出張でタイ バンコクを訪れました。

現地での作業自体は簡単なものなのですが、これまで非常に苦しみながら進めてきたプロジェクトの成否が問われる内容で、初めての海外出張に高揚した気持ちはなく、不安や緊張感などを抱えながらの渡航となりました。

f:id:komo-jp:20181111000146j:plain:w500

兵庫出張から帰宅した翌日、休む間もなくタイへ向かいました。

f:id:komo-jp:20181111000301j:plain

プロンポン(Phrom Phong)という駅からほど近い、DoubleTree by Hilton Sukhumvit Bangkokというホテルに滞在しました。

仕事自体は若干課題が残りはしたものの、当初の目的を十分に果たし、プロジェクトを大きく前進させる事ができました。

ホッと安堵した翌日は予備日ということで一日フリーとなったので、観光名所であるワット・ポーとバンコク国立博物館を訪れてきました。

ワット・ポー

まず最初に訪れたのは、バンコク最古の寺院であり、横たわった巨大なお釈迦様でも有名なワット・ポーです。

f:id:komo-jp:20181111000355j:plain:w500

金色の大きなお釈迦様が横になっています。

f:id:komo-jp:20181111000426j:plain

全体像はこんな感じ。

f:id:komo-jp:20181111000458j:plain

お釈迦様の足の裏。見事な螺鈿細工が施されています。

f:id:komo-jp:20181111000536j:plain

小さなコインが沢山入ったカップを買って...

f:id:komo-jp:20181111000607j:plain

108つ並んでいる鉢にコインを入れていきます。煩悩を消滅させるそうです。

f:id:komo-jp:20181111000642j:plain

寺院内には仏塔が立ち並びます。

バンコク国立博物館

f:id:komo-jp:20181111000720j:plain

トゥクトゥクバンコク国立博物館まで移動しました。

f:id:komo-jp:20181111000748j:plain:w500

結構飛ばすし、外が近いし、ちょっと怖い...。

f:id:komo-jp:20181111000821j:plain:w500

タイの至宝を鑑賞。

f:id:komo-jp:20181111000849j:plain

豪華な王様専用の車。説明にはチャリオット(Chariot)と書いてあったと思います。輿のようなイメージを抱いていましたが、戦車のイメージの方が近いのでしょうか。

f:id:komo-jp:20181111000923j:plain

カッコいい守り神。帰国後、調べたのですが、なんという生き物なのか分かりませんでした。館内に説明があったのですが、全く覚えてない...。

食事

せっかくタイに来たのだから、屋台で現地の料理でも食べたかったのですが、いまいち一歩を踏み出すことできずに終わってしまいました...。

日本企業の進出著しいタイ、中でも私が滞在したプロンポン周辺は、日本人のバンコク駐在者が多く住んでいるそうで、街には至るところに日本語の看板を目にすることができました。食事も困らず、結局、日本に居る時と同じようなものばかり食べていました。

f:id:komo-jp:20181111000958j:plain:w500

ホテルでの朝食。美味しい!

f:id:komo-jp:20181111001016j:plain:w500

ホテルの室内にある無料のミネラルウォーター。とても重宝しました。

f:id:komo-jp:20181111001042j:plain:w500

味は日本で食べるものと遜色がありません。

f:id:komo-jp:20181111001122j:plain:w500

たぬきうどんと揚げ出し豆腐。

f:id:komo-jp:20181111001140j:plain:w500

これはセブン-イレブンで買った、タイ米のちょっと辛めのピラフ。気に入って、毎日夜食に食べていました。

帰国して

タイはフィリピンのように英語が通じるイメージを持っていたのですが、日常的に英語が使われている社会ではないという印象でした。とはいえ、ホテルなどの外国人が多く訪れる場所では英語が使われています。海外に行くと、もっとコミュニケーションを取れるように英語の勉強を頑張ろう、という気になりますね。

正直、この出張は億劫に感じていたのですが、現地に着いてからは気力が沸いて、せっかくなので色々と見聞を広めてこようと前向きに臨むことができ、振り返ってみるととても充実した出張となりました。

Hurricane ElectricよりIPv6アドレス割り当て

IHANetでは、BGP4+を用いて、IPv6アドレスでeBGPピアを確立し、相互にIPv6の経路広報を行います。この為、参加者各自が独自にIPv6アドレスの割り当てを受けている必要があります。

色々と情報収集をしたところ、Hurricane ElectricというISPが無償でIPv6アドレスの割り当てを行うIPv6 Tunnel Brokerというサービスを提供していることを知り、さっそく利用してみることにしました。

IPv6 Tunnel Brokerサービスについて

サービスのイメージは、下図の通りです。

IPv4ネットワーク上で、自身のネットワーク(ここではさくらVPS上のVyOS)とHurricane Electricとの間でTunnel(IPv6 over IPv4 )を確立することにより、Hurricane ElectricがIPv6アドレスの割り当てとIPv6ネットワークへの到達性を提供してくれます。

Tunnelインターフェースで利用するIPv6アドレスと、自身のLAN側に割り当てられたIPv6アドレスは、Hurricane Electricより割り当てられたものです(下図の赤字のIPv6アドレス。なお、ここではドキュメント例示用の2001:0db8:を記載している)。IPv6アドレスの/64という広大な空間が個人に対して割り当てられています。

なぜ、無償でIPv6アドレスレンジを提供してくれるのか、それによってHurricane Electricにはどのようなメリットがあるのか等々、どのようなビジネスモデルなのかは不明なのですが、サイトには「Our tunnel service is oriented towards developers and experimenters that want a stable tunnel platform.」との記述があり、IPv6関連の開発者や実験用途向けに無償で提供してくれているようです。

IPv6 Tunnel Brokerの利用手順の詳細は、特に難しい箇所もありませんでしたので割愛します。おおまかな登録手順の流れは、ユーザー登録(名前/住所/電話番号等の情報入力)後、「IPv4 Endpoint (Your side):」という項目に自身のグローバルIPv4アドレスを入力します(今回の例ではさくらVPS上のVyOSに割り当てられたグローバルIPv4アドレス)。以上の必要な情報を入力すると、Tunnelインターフェース及び自身のNWのLAN側で利用できるIPv6アドレスが自動的に割り当てられます。

f:id:komo-jp:20180707162131p:plain

Hurricane Electric Free IPv6 Tunnel Broker

VyOSのIPv6 Tunnel Brokerサービス利用設定

VyOSにてIPv6 Tunnel Brokerサービスを利用する上で必要な設定は、Hurricane Electricと確立するトンネルの設定と、IPv6デフォルトルートを作成したTunnelインターフェース経由とすることのみとなります。

Hurricane Electricでは、利用するNW機器・OS毎に"Example Configurations"を用意してくれています。今回はVyOS用に「Vyatta1 / Ubiquiti EdgeMAX」の"Example Configurations"を利用させて貰う事にします。

以下のコンフィグが"Example Configurations"をそのままコピーしたものです。見ていただくと分かる通り、特に修正すべき箇所はありません。TunnelのローカルIPは自身のさくらVPS上のVyOSに割り当てられたグローバルIPv4アドレスです。リモートIPはHurricane Electricより提示されるグローバルIPv4アドレスです。

configure
edit interfaces tunnel tun0
set encapsulation sit
set local-ip 160.xxx.xxx.xxx
set remote-ip 74.xxx.xxx.xxx
set address 2001:db8:23:4cd::2/64
set description "HE.NET IPv6 Tunnel"
exit
set protocols static interface-route6 ::/0 next-hop-interface tun0
commit

通信確認として、Googleが提供しているIPv6アドレス対応公開DNSサーバ”2001:4860:4860::8888”に対してPingとTracerouteを実行してみた所、今回作成したTunnel0インターフェース経由で無事疎通が取れることを確認できました。

VyOS追加設定

今回、さくらVPS上のVyOSのLAN側セグメントで利用可能なIPv6アドレスがアサインされました(図中の2001:db8:24:4cd::/64)。そのアドレスをVyOSのeth1インターフェースに割り当てることにします。

また、このVyOSはインターネット上に公開されていることから、ログインユーザー名/Password共にデフォルトの"vyos"のままであるのはセキュリティ上、好ましくありません。ログインユーザー名とPasswordも変更することにします。設定完了後、"delete system login user vyos"コマンドで、デフォルトのユーザー"vyos"の削除を忘れずに実行します。

set interfaces ethernet eth1 address 2001:470:24:4cd::1/64

set system login user ユーザー名 authentication plaintext-password パスワード
set system login user ユーザー名 level admin

commit
save

これでIHANet参加の事前準備は完了です。


  1. Vyattaは、Vyatta社によりオープンソースで開発されていたソフトウェアルータです。ブロケードコミュニケーションズシステムによるVyattaの買収後、Vyattaは開発中止となりました。VyOSは、Vyattaの無償版であるVyatta Coreよりフォークされたオープンソースのソフトウェアルータです。

さくらVPSにVyOSインストール

1. さくらのVPS契約

IHANetへの接続形態については色々検討しました。当初、自宅の光回線固定IPアドレスの契約を行い、小型PCを購入しソフトウェアルータを動かす事を考えました。ただ、自宅で小型PC等の機器を24時間365日の連続稼働をさせたくないことや、ひかり電話が使えなくなるという理由で諦めました。

最終的にさくらインターネットVPS(仮想専用サーバー)を契約し、その上でソフトウェアルータを動かす事としました。ちなみにソフトウェアルータとしては、当面の間はVyOSを利用し、その後、CentOS + FRroutingに変えたいと思っています(私のLinuxスキルが向上次第、移行します)。

なお、契約したさくらのVPSは、VyOSが稼働できれば良いので最小構成のモノを選択しました。月額685円で利用できるのでお得感がありますね。

項目 スペック
CPU 仮想1Core
メモリ 512MB
ストレージ 20GB SSD
利用料金 初期費用:1,080円、月額:685円

2. さくらのVPS上でのVyOSインストール

さくらVPSのサイトに記載の案内を読む限りでは、利用可能なOSは事前に用意されている「標準OS」または「カスタムOS」しかないのではないか...と思ったのですが、以下のさくらVPSコントロールパネルの画面イメージの通り、アップロードした任意のISOイメージから仮想サーバを起動してインストールを行うことが可能です。

f:id:komo-jp:20180702224532p:plain

2-1. VyOSインストール

VyOSのサイトからイメージをダウンロードします。検証環境では、VMware用のOVAイメージを利用しましたが、今回はISOイメージをダウンロードします。そのISOイメージをさくらのVPSにSFTPでアップロード後、さくらVPSコントロールパネルからISOインストールを実行します。

起動後、VyOSにログインします。ログインユーザー名/Passwordは、共に"vyos"になります。 ログイン後、下記コマンドを実行します。

install image

2018/07/07:追記

仮想マシンの再起動を行うと、VyOSが正常に起動しないというトラブルに見舞われました。色々とネット上の情報を確認した所、インストール手順でディスクのパーティション指定をしなければならない事が分かりました。

ディスクのパーティションの仕様には、MBR(Master Boot Record)とGPT(GUID Patition Table)があり、さくらVPSではGPTとなっているところを、VyOSがサポートしているMBRに変更する必要があるようです。

  • インストール手順中、"Partition (Auto/Union/Parted/Skip) [Auto]:"と表示されたら、"Parted"と入力する。
  • Parted対象のドライブの選択。デフォルト値のままなのでEnterキーを押下する。
  • プロンプトが(parted)と表示されたら、mklabel msdosと入力する。
  • 対象ドライブのデータが消えること旨の警告が表示される。Enterキーを押下する。

再度、"install image"コマンドでインストールを実行しますが、今度"Partition (Auto/Union/Parted/Skip) [Auto]:"が表示された際は、[Auto]のままで結構ですので、そのままEnterキーを押下して下さい。

2-2. VyOS基本設定

インストール完了後にリブートを行います。起動後、VyOSの初期設定を行っていきます。

VyOSのインターネットに接続しているインターフェースは、eth0になります。eth0インターフェースにグローバルIPアドレスを割り当て、デフォルトゲートウェイDNSタイムゾーンSSH等の基本設定を下記の通り行います。なお、使用するグローバルIPアドレス、ネットマスク、ゲートウェイDNSサーバアドレスは、全てさくらVPSコントロールパネル上で確認できます。

configure

set system host-name VyOS

set interfaces ethernet eth0 address 160.xxx.xxx.xxx/16
set interfaces ethernet eth0 description Internet

set protocols static route 0.0.0.0/0 next-hop 160.xxx.xxx.xxx

set system name-server 210.188.xxx.xxx
set system name-server 210.188.xxx.xxx
set system time-zone Asia/Tokyo
set service ssh port 10022

commit
save
exit

これで基本的な設定は終了です。

VyOSを用いたBGP接続(後編)

VyOSを用いたBGP接続(前編)で、VyOSのインストール、及び物理的な結線を終えましたので、後編ではVyOSのコンフィギュレーションを進めることにします。

1. ネットワーク構成(論理)

1-1. 論理構成図

f:id:komo-jp:20180701102002p:plain

1-1-1. ユニークローカルIPv6ユニキャストアドレス(ULA)

IHANetのBGPネットワークに接続するには、独自にIPv6アドレスの割り当てを受けている必要があります。今回は検証環境ですので、IPv4でいうところのプライベートIPアドレスに相当する、ユニークローカルIPv6ユニキャストアドレスを利用することにします。下記JPNICのサイトに詳しい説明がありますが、fd00::/8で始まるユニークローカルIPv6ユニキャストアドレスは、「いつでも誰でも利用可能なアドレス」として用意されています。

サブネットプレフィックスのグローバル識別子を任意の値に決めて利用すれば良いと思われますが、NTPやMACアドレスなどの情報を基にランダムな値を得る方法も紹介されているようです。

今回の例では、Tunnel-Segment、Site-A-Segment、Site-B-Segmentのそれぞれのセグメント用に、適当に決めた3つのユニークローカルIPv6ユニキャストアドレスを用意しました。

インターネット10分講座:IPv6アドレス~技術解説~ - JPNIC

2. VyOSセットアップ

2-1. VyOS 基本設定

VyOSのログインユーザー名/Passwordは、共に"vyos"になります。

ログイン後、上図の論理構成図に記載のIPアドレスを、各インターフェースに設定します。その他、ホスト名/SSH/Timezoneの設定も行います。

一点、注意が必要なのは、eth0はデフォルトでDHCPによるアドレス取得を行うように設定されています。この為、eth0にIPアドレスを設定しcommitコマンドで反映すると、"Can't configure static IPv4 address and DHCP on the same interface."というエラーメッセージが表示されます。下記コマンド例の通り、deleteコマンドでDHCPによるアドレス取得設定を削除しておく必要があります。

configure

set system host-name VyOS-A

delete interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 address 172.16.0.1/16
set interfaces ethernet eth0 description Internet

set interfaces ethernet eth1 address fd5d:c9b2:2451:0::1/64
set interfaces ethernet eth1 description Site-A-Segment

set service ssh port 10022
set system time-zone Asia/Tokyo

commit
save
exit

2-2. GRE/IPIPトンネル確立

トンネリングプロトコルとしてIPIP(IP-in-IP)とGRE(Generic Routing Encapsulation)の二つがありますが、どちらを使うべきでしょうか。IPIPは、カプセル化できるプロトコルとしてIPしか対応していませんが、元のIPパケットを包む形で新規にIPヘッダーのみを付加するシンプルな構成です。対してGREは、4~16バイトのGREヘッダを追加することにより、他のレイヤ3プロトコルカプセル化に対応していることや、オプションでチェックサムやTunnelキーの追加などの機能を備えているようです。

基本的にGREの付加機能は不要であり、シンプルでオーバーヘッドの少ない、IPIPが良いように思います。ただ、どうもVyOSではIPIPの設定がうまくいきませんでした。今回の要件はIPv6パケットをIPv4で包むIPv6 over IPv4となります。VyOSで用意されているIPIPのカプセル化タイプは以下の通りです。色々と試したのですが、うまく設定の反映、Tun0 I/Fに対する疎通確認ができませんでした。今回の要件はIPv6 over IPv4であり、VyOSがサポートしているIPIPタイプでは対応できないのかもしれません。結局、カプセル化タイプとしてGREを採用することにしました。

※2018/07/02:追記 IPv6 over IPv4のトンネリングプロトコルとしてSITというものがあり、このタイプはVyOSでサポートされている。

Eencapsulation Type 説明
ipip IP in IP encapsulation
ipip6 IP in IP6 encapsulation
ip6ip6 IP6 in IP6 encapsulation
set interfaces tunnel tun0 address fdce:3feb:5e29:0::1/64
set interfaces tunnel tun0 description Tunnel-Segment
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 local-ip 172.16.0.1
set interfaces tunnel tun0 remote-ip 172.16.0.2

2-3. BGP設定

AS番号は、上図論理構成図の通り、プライベートAS番号から採番しています。ピアのアドレスとして指定するアドレスは、ピアのtun0インターフェースに割り当てたIPv6アドレスになります。また広報するアドレスとして、自身のLAN側インターフェースであるeth1インターフェースに割り当てたIPv6アドレスセグメントを指定します。

set protocols bgp 65001 neighbor fdce:3feb:5e29::2 remote-as 65002
set protocols bgp 65001 neighbor fdce:3feb:5e29::2 address-family ipv6-unicast
set protocols bgp 65001 address-family ipv6-unicast network fd5d:c9b2:2451::/64

3. 動作確認

  • インターフェースのステータス確認

    全てのインターフェースのステータスがUpとなっていることを確認。

vyos@VyOS-A:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             172.16.0.1/16                     u/u  Internet
eth1             fd5d:c9b2:2451::1/64              u/u  Site-A-Segment
lo               127.0.0.1/8                       u/u
                 ::1/128
tun0             fdce:3feb:5e29::1/64              u/u  Tunnel-Segment
vyos@VyOS-A:~$
  • BGP セッションステータス

    BGPピアが確立できていることを確認。IPv6でBGPピアを張る為、show ipv6 bgp summaryである事に注意。"State/PfxRcd"フィールドが、"1"となっている。

vyos@VyOS-A:~$ show ipv6 bgp summary
BGP router identifier 172.20.30.1, local AS number 65001
RIB entries 3, using 288 bytes of memory
Peers 1, using 4560 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
fdce:3feb:5e29::2
                4 65002      28      31        0    0    0 00:26:44        1

Total number of neighbors 1
vyos@VyOS-A:~$
  • ルーティングテーブルの確認

    対向拠点のLAN側IPv6アドレスセグメントがルーティングテーブル上に乗っていることを確認。

vyos@VyOS-A:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route

C>* 127.0.0.0/8 is directly connected, lo
C>* 172.16.0.0/16 is directly connected, eth0
vyos@VyOS-A:~$
vyos@VyOS-A:~$ show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3,
       I - ISIS, B - BGP, * - FIB route.

C>* ::1/128 is directly connected, lo
B>* fd58:cbd2:b752::/64 [20/0] via fe80::5efe:ac14:1e02, tun0, 00:04:46
C>* fd5d:c9b2:2451::/64 is directly connected, eth1
C>* fdce:3feb:5e29::/64 is directly connected, tun0
C * fe80::/64 is directly connected, eth1
C * fe80::/64 is directly connected, eth0
C>* fe80::/64 is directly connected, tun0
vyos@VyOS-A:~$
  • 疎通確認

    対向ピアのTun0/eth0/eth1の各アドレスに対して、Pingで疎通が取れることを確認。

vyos@VyOS-A:~$ ping fdce:3feb:5e29::2 count 3
PING fdce:3feb:5e29::2(fdce:3feb:5e29::2) 56 data bytes
64 bytes from fdce:3feb:5e29::2: icmp_seq=1 ttl=64 time=0.240 ms
64 bytes from fdce:3feb:5e29::2: icmp_seq=2 ttl=64 time=0.354 ms
64 bytes from fdce:3feb:5e29::2: icmp_seq=3 ttl=64 time=0.432 ms

--- fdce:3feb:5e29::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.240/0.342/0.432/0.078 ms
vyos@VyOS-A:~$
vyos@VyOS-A:~$ ping 172.16.0.2 count 3
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_req=1 ttl=64 time=0.201 ms
64 bytes from 172.16.0.2: icmp_req=2 ttl=64 time=0.360 ms
64 bytes from 172.16.0.2: icmp_req=3 ttl=64 time=0.382 ms

--- 172.16.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.201/0.314/0.382/0.081 ms
vyos@VyOS-A:~$
vyos@VyOS-A:~$ ping  fd58:cbd2:b752::1 interface eth1 count 3
PING fd58:cbd2:b752::1(fd58:cbd2:b752::1) from fdce:3feb:5e29::1 eth1: 56 data bytes
64 bytes from fd58:cbd2:b752::1: icmp_seq=1 ttl=64 time=0.264 ms
64 bytes from fd58:cbd2:b752::1: icmp_seq=2 ttl=64 time=0.263 ms
64 bytes from fd58:cbd2:b752::1: icmp_seq=3 ttl=64 time=0.301 ms

--- fd58:cbd2:b752::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.263/0.276/0.301/0.017 ms
vyos@VyOS-A:~$

今回、初めてVyOSを利用しましたが、昔、JUNOSをそこそこ使い込んでいた経験が活きて、違和感なく利用することができました。

動作検証も想定通りに進み成功しました。次のステップは、さくらインターネットVPS上でのVyOS稼働、及びIPv6アドレスの調達になります。

VyOSを用いたBGP接続(前編)

1. 検証目的

以前、「ネットワークエンジニアのためのプロキシサーバの教科書」という記事が読みたくて、Software Design 2014年3月号を購入しました。そこで何気なく目にした「自宅ラックのススメ」というコラムで、IHANetというユーザーグループが紹介されていました。

IHANetでは、参加者がプライベートAS番号を用いてBGP4+を使用し、相互に接続してIPv6アドレスの経路交換を行うBGPネットワークを運用しています。

常々、書籍を読み込む勉強だけではなく、実際に手を動かして機器/ソフトウェアを設定・運用していく事が重要だと感じていたことや、得られた知識や知見を論理的で分かりやすい文章にまとめて公表・プレゼンするアウトプット活動やエンジニア同士の交流・意見交換等を進めていきたいと考えていた事もあり、それらの実践の場としてIHANetの活動はとても魅力的に思えました。

接続形態・使用機材については色々検討した結果、さくらのVPSでVyOSというオープンソースのルーティングソフトウェアを利用する事を想定しています(将来的にはCentOS + FRRoutingを採用したい)。

ここではIHANetの活動に参加する前に、自宅の検証環境(ESXi)を利用して、VyOSを利用したIPIP/GREトンネル、BGP接続、IPv6経路広報の動作検証を行う事にします。

2. ネットワーク構成(物理)

2-1. 物理構成図

f:id:komo-jp:20180629230018p:plain

構成は見ての通り非常にシンプルで、特に説明は不要かと思います。

3. VyOSインストール

ESXiの操作は、GUIにて特に迷うことなく見たなりに進めていくことができました。この為、詳細な手順の紹介は省略し、以下にポイントだけ記載します。

3-1. vSwitch ・ポートグループの作成

デフォルトで存在するvSwitch0に加えて、Site-A用のvSwitch1と、Site-B用のvSwitch2を作成します。その後、下表のようにポートグループを作成して、vSwitchと関係付けます。

vSwitch名 ポートグループ VLAN ID
vSwitch0 Internet 0
vSwitch1 Site-A-Segment 0
vSwitch2 Site-B-Segment 0

f:id:komo-jp:20180630194514p:plain

3-2. VyOSのデプロイ

VyOSのサイトにVMware用のOVAイメージが用意されています。最新バージョンの1.1.8をダウンロードします。ESXiにて、[仮想マシンの登録] → [OVFファイルまたはOVAファイルから仮想マシンをデプロイ]とクリックし、ダウンロードしたOVAイメージを選択します。

インストール先のデータストアを選択した後、[デプロイのオプション] - [ネットワークのマッピング]という項目に進みますが、ここでは、[public]に先ほど作成したポートグループである"Internet"を選択し、[internal]には同じく先ほど作成したポートグループである"Site-A-Segment(またはSite-B-Segment)"を選択します。この後、[完了]ボタンをクリックすると、VyOSのデプロイを行うことができます。

f:id:komo-jp:20180630001938p:plain

1台のVyOSに、デフォルトで割り当てられるハードウェアリソースは以下の通りです。

ハードウェア構成
CPU 1vCPU
メモリ 512MB
ハードディスク 10GB
NIC 2個

週末を利用し、後半でVyOSのコンフィギュレーションを進めていきたいと思います。