みなさん、こんにちは。サイオステクノロジー武井です。今回はAzure愛が強すぎて自宅にAzure専用固定IPプロバイダを契約してマルチセッションにした話をしようと思います。タイトルが長くてすみません。
やりたいこと
私はAzureを愛してやまないアジュラーなので、個人専用のAzureテナントを持っています。そこでいろんなことを検証したり、自宅のインフラの一部をAzureに持っていったりしてるわけですが、そうこうしているうちに以下のことをやりたくなってきました。
- 自宅のファイルサーバーをAzure Filesで運用しているのだけど、IPアドレスでアクセス制限をしたい。
- 仕事用PCはAzure Filesだけではなく、Azureへの全アクセスを固定IPアドレス経由にしたい。
- 快適で高速なインターネットが実現できるIPv6を使いたい。
自宅のファイルサーバーをAzure Filesで運用しているのだけど、IPアドレスでアクセス制限をしたい
1つ目のAzure Filesについて詳細をお話します。背景を話しますと、Azure Filesを利用する前は、自宅にNASサーバーを置いていました。ただ、結構壊れるのです。大半がHDDの故障ですけど、なんか2年に一度位はHDDの交換をしていました。この前なんて1年もしないうちに壊れました。
そんなこんなで時代はやはりクラウド。Azure大好きだし、SMBプロトコルを採用しているAzureのマネージドなファイルサーバーのサービス「Azure Files」を利用しようと思い立ったわけです。そして時間はかかりましたが、自宅NASの全てのファイルを移行しました。
通信経路はSMB3.0で暗号化されているとはいえど、やっぱりどこからでもアクセスできるのはアレなので、IPアドレスで制限できれば、セキュアだなと思った次第です。
仕事用PCはAzure Filesだけではなく、Azureへの全アクセスを固定IPアドレス経由にしたい
2つ目につきましては、私はAzure Filesだけでははなく、Azureで遊んだり、、、じゃなくてAzureの技術を習得するために自宅でしょっちゅうAzureを使っています。そんなときにやっぱり固定IPアドレスで制限かけられると安心です。App Serviceでテストサイト立てたはいいけど、全世界からアクセスできちゃうなんてなんだか不安です。
快適で高速なインターネットが実現できるIPv6を使いたい
3つ目は、やっぱりインターネットは速いほうがいいです。IPv6で実現できる様な高速なインターネットが必要かといいますと、ちょっとアレですが、やっぱIPv6使っているぜってなんかかっこいいです。
そんな不純な動機もあるんですけど、上記のことをなんとか実現しようとしました。しかしながら、なかなかに一筋縄ではいかなかったのです。
課題
先のことを実現しようとしたら、とても大きな課題が出てきたのです。IPv4の固定IPアドレスを使えて、かつIPv6網も使えるプロバイダは結構料金が高いのです。
例えば、某大手プロバイダは、IPv4の固定IPアドレスが使えてかつIPv6を活用できます。しかしながら、固定IPアドレスひとつで月額料金12,100円です。ちょっと個人にはつらみな感じです。さらにこれに回線利用料もかかります。フレッツ光ネクストだとすると月額料金6,270円となり、合計しますと月額料金18,370円です!!どこのプロバイダも似たような価格帯でした。
まぁ、Z世代の方は知らないと思いますが、昔はOCNエコノミーっていう128kの常時接続が月額38,000円で提供されていた時代を考えますと、これでも破格の値段かと思います。128kなんて今どきのサイト表示しようと思ったら、一晩寝ても無理だと思います。
そんな時代と比べると今はとてもいい時代ですが、やはり世知辛い一介のセロリーマンに月額18,370円はつらみです。
なんとかならないかなぁと考えました。
解決方針
自宅ではソフトバンク光を契約しているので、実はすでにIPv6を使える環境にはあります。
また、ちょっと調べてみると、IPv4の固定IPアドレスがもらえるプロバイダは月額1000円位で利用できるというのも知りました。
つまり、2つのプロバイダを組み合わせることで安価に実現出来ないかと考えました。PPPoEはマルチセッション可能ですし(後述)。
ソフトバンク光のファミリー・ギガスピードプランであれば月額5,170円(回線利用料込み)なので、月額6,000円程度で、IPv4の固定IPアドレスを使いつつ、IPv6の高速通信が実現できることとなります。
今回はDIXというプロバイダを契約しました。固定IPアドレスがもらえるプロバイダで月額1,100円です。料金を比較してみましたが、かなり大きな開きが出ましたね。某大手プロバイダの1/3くらいの料金ですみますねヮ(゚д゚)ォ!
使用プロバイダ | 料金(月額) | 備考 |
某大手プロバイダ | 18,370円 |
|
ソフトバンク光 + DIX |
6,270円 |
|
費用面はクリアなので、2つのプロバイダの使い分けをどのように実現するかをちょっとお話したいと思います。
PPPoEによるマルチセッション
最近のインターネット接続は、ほぼ例外なくPPPoEを使っていると思います。これはインターネットに接続するためのプロトコルであるPPPをイーサネット上で実現できる技術なのですが、詳細は本記事では割愛したいと思います。というか私もそれほど詳しくは知らないので(´・ω・`)
PPPoEはマルチセッションというのが可能です。つまり、1つの回線契約で複数のプロバイダへ同時に接続を行う機能です。この機能を使って、IPv6によって高速通信を実現するソフトバンク光と、固定IPアドレスが利用できるDIXを同時に接続して使い分けます。
RTX1200によるフィルター型ルーティング
ソフトバンク光とDIXの2つのプロバイダをどのように切り替えるかが課題となりました。手動で切り替えるのはあまり賢い方法ではないような気がします。
そこで、自宅にあるルーター「YAMAHA RTX1200」のフィルター型ルーティングという機能を使うことにしました。
RTX1200はYAMAHAから発売している業務用ルーターで、我が家では昔から活躍しています。定価は125,000円と個人には高価ですが、中古でたくさん出回っており、私は20,000円位で購入しました。このRTX1200のフィルター型ルーティングとは、送信元IPアドレス、送信先IPアドレス、送信元ポート番号、送信先ポート番号、通信プロトコルなどの様々な要素でデフォルトゲートウェイを切り替えられる機能です。
この機能を利用することで、例えば、仕事用のPCからは固定IPアドレスのプロバイダDIXのゲートウェイにルーティングし、それ以外の端末はソフトバク光にルーティングして、、、みたいなことが可能となります。わざわざ手動でプロバイダを切り替える必要がなくなるのです。以下がイメージ図です。
具体的な実現方法
本章では、先の解決方針に基づいて具体的な実現方法について説明します。
ネットワーク構成
以下が今回のネットワーク構成になります。記載のIPアドレスは架空のものです。
ざっくり概要を説明しますと、自宅のネットワークはいくつかのVLANに分かれておりまして、VLAN2がいわゆる社内LANみたいなところで、iPhoneとかクライアントPCなどが無線LANでつながっています。VLAN4がDMZで、OpenVPNがインストールしたRaspberryPiが置いてあり外部からのSSL VPNを実現しています。他のVLANは色々事情があって、事実上未使用です。
1階と2階の無線LANはバッファロー社製のWSR-3200AX4Sという製品を使っていて、メッシュ接続をすることにより、もれなく自宅全域の無線をカバーしています。
固定IPプロバイダDIXへの接続
固定IPアドレスを配布してくれるプロバイダであるDIXへの接続は、RTX1200のLAN2ポートからPPPoE接続を行い、PR-S300NE(NTTからレンタルしているONU)経由で接続しております。つまりLAN2ポートにDIXから配布された固定のグローバルIPアドレスが割り当てられている感じです。接続経路は以下のようになります。
クライアント→RTX1200→(PPPoE接続)→PR-S300NE→DIX
ソフトバンク光への接続
ソフトバンク光の場合はちょっと違っていまして、ソフトバンク光でIPv6接続をする場合は必ずソフトバンクから送られてくる「BBユニット」というのを経由する必要があります。このBBユニットからPPPoE接続する必要があるようです。
なので、ソフトバンク光への接続経路は以下のように少々複雑になります。
クライアント→RTX1200→BBユニット→(PPPoE接続)→PR-S300NE→ソフトバンク光
RTX1200→BBユニットへの接続は後述するフィルター型ルーティングによって実現しています。
ルーティング
先の2つのプロバイダ「DIX」「ソフトバンク光」へのマルチセッション実現方法についてお話します。
自宅用ファイルサーバーであるAzure Filesや、Azureの検証のために固定IPアドレスが必要なのは先にお話したとおりです。実はこれ以外にも、ルーティングについては色々と実現しなければいけない要件が以下の通りありました。
- 仕事用PCからは全てのプロトコルの接続をDIX経由とする。
- 仕事用PC以外の端末からの接続はソフトバンク光経由とする。
- 全ての端末からのAzure Filesへの接続はDIX経由とする。
ひとつずつ説明致します。
1. 仕事用PCからは全てのプロトコルの接続をDIX経由とする
これは先程もお話したとおりで、私はAzure大好きなアジュラーなので、Azureのいろんなサービスを検証します。決して遊んでいるわけではありません。で、やっぱりIPアドレスで制限かけられると色々便利なんですね。App Serviceで構築した検証用のサイトとか、まだ全世界に公開したくないものはIPアドレスでサクッと制限かけられればラクチンです。
なので、私の仕事用PCからの接続は全てDIX経由とする必要があります。
2. 仕事用PC以外の端末からの接続はソフトバンク光経由とする
仕事用PC以外の端末、つまり私用のiPhoneとか、Amazonプライムビデオを見るためのFire Stick TVとかは、ソフトバンク光経由とします。ソフトバンク光はIPv6による高速なインターネットが可能なので、動画とか見るときには最適なのですね。かたや、仕事用PCみたいに、これらのサービスに接続するために固定IPアドレスは不要なので、ソフトバンク光は遊び用途には最適なのです。
3. 全ての端末からのAzure Filesへの接続はDIX経由とする
ここがキモなのですが、仕事用PCでも、遊び用端末でも、ファイルサーバーであるAzure Filesに接続する必要があります。ファイルサーバーには今まで撮影した大切な写真とかがありますし。そしてAzure Filesは、セキュリティ上の理由のため、IPアドレスで制限をかける必要があります。Azure FilesはSMB3.0に対応しているので通信は暗号化されますが、やはりどこからでもつながるというのは不安なので、自宅の固定IPアドレスで接続制限をしたいと思いました。
つまり、Azure Filesへの接続だけは全端末でDIX経由でなければならないのです。
まとめますと以下に記載の送信元IPアドレスと宛先ポートにより、経由するプロバイダを分ける必要があります。
送信元IPアドレス | 宛先ポート | 経由するプロバイダ |
* | 445/tcp | DIX |
172.16.2.1 -172.16.2.99 |
* | DIX |
172.16.2.100 -172.16.2.254 | * | ソフトバンク光 |
Azure Filesは445/tcpのプロトコルなので、宛先がこのプロトコルの通信は全てDIXを経由させます。
次に172.16.2.1 -172.16.2.99のIPアドレス帯は、DIX経由とします。これは仕事用PCなどAzure Filesを含むAzure全サービスへの通信をDIX経由としたい端末が持つIPアドレス帯です。
最後の172.16.2.100 -172.16.2.254、仕事用PC以外の遊び用端末が持つIPアドレス帯です。
これを実現するためにRTX1200でフィルター型ルーティングをする必要があり、以下のコマンドを実施しました。
> ip filter 4000 pass * * tcp * 445 > ip filter 4001 pass 172.16.2.1-172.16.2.99 * * * > ip filter 4002 pass 172.16.2.100-172.16.2.254 * * * > ip route default gateway pp 1 filter 4000 gateway pp 1 filter 4001 gateway 172.16.2.4 filter 4002
1行目は、tcp/445への全通信を許可するフィルタールールです。
2行目は、送信元IPアドレス172.16.2.1-172.16.2.99からの全通信を許可するフィルタールールです。
3行目は、送信元IPアドレス172.16.2.99-172.16.2.254からの全通信を許可するフィルタールールです。
4行目は、フィルター型ルーティングのコマンドで、pp1はDIXのインターフェース、172.16.2.4はBBユニットのIPアドレスになります。例えば4000番のフィルタはtcp/445への全通信を許可するフィルタであり、pp1を経由するように設定しています。記載した順序で評価されていくので、まずは445/tcp(Azure Files)への接続は全てpp1(DIX)を経由し、それに合致しない場合は後続のフィルタによりルーティングが評価されていく仕組みです。
設定は意外と簡単で、これだけで、先の要件の通信を実現することができました。
何よりもRTX1200はこういう複雑なことが柔軟に出来るので、ホント重宝します(^^)
その他
本章では、色々なTIPSや、困ったことなどを書いていきます。
MACアドレスによるDHCP
仕事用PCは自宅でも使いますし出社したときには会社でも使います。そして自宅でも会社でもDHCPによるIPアドレス配布を基本としています。自宅では、172.16.2.1 -172.16.2.99がDIXへ接続するためのIPアドレス帯なので、仕事用PCだけはこのレンジからDHCPでIPアドレスを配布する必要があります。
これは、RTX1200のDHCP機能でMACアドレスによる固定IPアドレス配布が出来るので、この機能を使いました。
つまり仕事用PCはMACアドレスにより172.16.2.99を配布するようにしました。これは以下のコマンドで実現しました。
> dhcp service server > dhcp server rfc2131 compliant except use-clientid > dhcp scope 1 172.16.2.1-172.16.2.254/24 > dhcp scope bind 1 172.16.2.99 XX:XX:XX:XX:XX:XX
dhcp scope bind 1〜の下りで、MACアドレスによって固定でIPアドレスを割り振っています。
dhcp server rfc2131 compliant except use-clientidの下りは、これを設定しないとMAC(MACアドレスではなくてMacBookの方です)ではMACアドレスによる固定IPアドレス配布が実現できませんでした。どうやらDHCPはClient Identifier という機能があり、DHCP クライアントは任意の識別子を DHCP サーバに伝えることができるようです。RTX1200の DHCP サーバは、初期設定では Client Identifier を用いた固定割当 (use-clientid 機能) を優先するようになっていまして、 MAC アドレスで固定割当を設定しても動作しないことがありました。なので、先のコマンドを実行してuse-clientid 機能を無効にすることで MAC アドレスによる固定割り当て設定を動作させることができる用になるというわけです。
これで、自宅に持っていっても会社に持っていても、IPアドレスを手動で設定する必要なく、DHCPでIPアドレスを含む全ての設定を自動でやってくれて、かつ複雑な通信要件も満たすことが出来るわけです。
困ったこと(BBユニットのDHCP機能)
RTX1200でDHCP機能を有効にしているので、BBユニットのDHCP機能をオフにしたかったのですが、なんとコイツ、DHCPを無効に出来ない仕様でした。このままでは同じセグメントに2つのDHCPサーバーがあることになり、わけのわからないことになってしまいます。
そもそもBBユニットだけ専用のVLANに配置してしまえば、他の端末からのDHCP要求は届かないのですけど、なぜかBBユニットを他のVLANに配置すると、フィルター型ルーティングの機能で正常にルーティングされないのです。なぜでしょう。結局わからずじまいでした。
なので、BBユニットのDHCPのIPアドレス割り当て範囲をBBユニット自身のIPアドレスのみとすることでDHCP機能を事実上無効にしました。こうすれば、仮にBBユニットのDHCPからDHCオファー受けてもクライアント側で採用しないから、多分うまく動くかなと思います。
物理構成
本記事の本筋とは関係ないのですが、今回の物理構成は以下のような感じです。
一番下がRTX1200、その上がRaspberryPi各種、真ん中の段がBUFFALOの24ポートGigaスイッチでRTX1200のVALN2とつながっています。一番上が、NTTからレンタルしているONUとか無線LANのアクセスポイントとかBBユニットとか置いています。そしてなぜかLINEのひよこがいます。
棚はカインズで買ってきたキッチン用の棚です。
19インチラックほしいなぁ(´・ω・`)
まとめ
色々と工夫することで、格安でIPv4固定IPアドレス+IPv6による高速インターネットを実現することが出来て、私のAzure愛も誠に満たされた感じとなりました。
みなさんも是非試してみてくださいませm(_ _)m