小規模(5〜20人)オフィスのネットワーク構築例
背景
- 株式会社マインディアCTOの@matsubokkuriです。
- 事業規模の拡大に伴いオフィスの移転がありました。それに伴い社内ネットワークインフラの構築しました。オンサイトで働く人は約10名。エンジニアは私1名なのでインフラ整備を自分でやるか外注するかという選択でしたが、外注するためにはRFP作るのが面倒だし費用がかかるのでDIYしました。
- 中小企業のネットワーク構築の記事は5年前の@wadapさんの記事が詳しいです。その記事以降、まとまった社内LAN構築の良い感じのノウハウ記事を見つけられませんでした。その5年の差分を埋めるためにも記録を書いておきます。
要求定義
- ゲスト用ネットワークの分離(インターネット回線、LAN回線)
- 将来のシステム監査で指摘されるであろうことなので。
- トラフィックのQoS制御のため。
- インターネット上のホストにおいてグローバルIPアドレスによるアクセス制限がかかっている場合があるため。
- 役割(部署)毎にLANの分離
- コンピュータウィルスなどのインシデントが発生した際、被害を限定的にするため。
- QoS制御のため。
- 安定
- ストリーミングを扱う自社プロダクトを構築しているので安定性を高める。
- 特に普段遣いをするWi-Fiは安定してほしい。
- Wi-Fiと有線を用意してL1レイヤの冗長性を確保しておく。
- 有線LANの低遅延と安定性は素晴らしいです。
- ルーターへのpingにおいて、RTTがWi-Fiでは数msかかるのに対して有線では1ms以内です。
- グローバルネットワーク、LANにおいて低レイテンシー
- 初期費用、固定費は安く。
- 20人ぐらいの同時利用ユーザに対応できる。
- 平均3台/人と想定して60端末同時接続
要件
- ISPは2アカウント用意する。社員用の固定IPとゲスト用。
- 物理ネットワークの自由度を持たすためにVLANを使う。
- Wi-Fiが安定していること。
- オフィス外からネットワークに入れる。
- 各席に有線。
設計
どんな機材を買ってどこに設置するのかを考えるためにネットワークの設計します。
タグVLANが絡むと設計書を書くのが難しかったです。物理レイヤ(L1)と論理レイヤ(L2)を同時に考えて1つの図にする必要が有りました。これが結構難しかったです。
論理レイヤで考えて、それを物理レイヤに落として。その逆を行ったりと。L1、L2、L3を行ったり来たりして考えていました。vlan使わなければL1だけ考えれば済むので超楽だなぁと思いました。
VLANを使わなければ、L1とL2は完全に分離して考えられるので非常に簡単ですが、VLANが絡み出すと難易度がかなり上がります。本来は、論理と物理を分けて考えられて便利にするためのVLANなのに。
一部にVLAN非対応機器が存在したり、tag, untagを同一ネットワークに混在して設置できてしまうため、論理と物理が混ざってしまう原因でした。
このあたり、想定した動作と各ベンダーの実装が若干違うので検証が大変でした。
例えば、ルーターはvlanの設定しかしていないのに、vlanではないパケットもvlan1として扱われてしまいます。
そうしないとvlanを設定した途端untagのパケットが到達出来なくなったりするのを回避するためなのかと思います。
どのツールで設計書を書くのが良いのかよくわからないのでとりあえずcacooで設計しました。
次に、図にある各エンティティについて詳細を書きます。
キャリア
-
フレッツ光ネクストで最高速1Gbpsのプランを使っています。
-
余談
ISP
- Webの管理画面にアクセス制限をつけるために、アクセス元のネットワークによってアクセス制限をしたいというユースケースがあります。それを代替できるアプローチが今のところないので、IPv4の固定IPアドレスが必要です。
- サーバサイドからの視点では、やはりIPアドレス制限を入れる事でリスクをL3以下は気にしないで良くなる利点は大きい
- IPv6の固定レンジでの割り当てをするISPはほぼ無い
- 固定IPアドレスを提供するISPは安いしいままで大きな問題が無かったGMO BBを引き続き使います。1,100円/月(夜20時以降は少し遅い感じがします → 遅いので解約して、so-netの固定IPオプションにしました)
- ゲスト用のネットワークは適当なISPで良いので、キャリアとISPの申し込みを同時にすると安いので適当に選びました。とりあえずIPv6に対応しているso-netにしました。家で使っていたときは下りで400Mbps出ていたので。
ルーター
- 安く済ますためにYAMAHA RTX1200です。10年近く前の機種ですが、1Gbps対応、L2TP対応、SNMP対応など十分な機能です。
- 定価125,000円ですが、保守終わりの中古機材が7,000円ぐらいで大量に流通しています。保証はないですが、壊れたら買えば良いのです。自宅でも使っていますが2年以上全く落ちませんでした。スループットも1Gbps近くまでは出ます。
- IPv6の複数の接続方式に対応するため、新しいモデルであるRTX1210をおすすめします。
スイッチ
- 全部YAMAHAで揃えて一元管理したいのが理想ですが、いかんせんVLAN対応のYAMAHAのインテリジェントスイッチは高いです。中古でも出回ってないです。
- 安いVLAN対応のスイッチを選択。Netgear GS108eを2台。約5,000円/台
- 参考のために、8ポートのYAMAHA SWX2200-8Gは実売で約23,000円。Netgearの4倍!
Wi-Fi AP(アクセスポイント)
-
YAMAHA WLX313で。実売約6万円。定価69,800円(税抜)。Wi-Fi APだけはケチらずに買います。WLC(Wireless LAN Controller)とVLANにも対応しております。
-
WLX313はかなりいろんな機能があって良いのですが、自動制御が不安定です。残念なのですが便利な機能はOFFにしまくってシンプルな設定にして運用する必要がありました。自動チャネル選択、自動出力変更などの便利そうな機能を一通りOFFにしました。
-
PoE対応なので、PoEスイッチに接続して使おうしたのですが普通のPoEスイッチでは電源容量が足りなくて動きませんでした。Wi-Fi APは消費電力が大きいので対応したPoEスイッチを選択する必要があります。
-
余談
- 市販の家庭用アクセスポイントはよく壊れます。
- コンシューマ向けのWi-Fiアクセスポイントはすぐに詰まったり、電波飛ばなかったり、不安定な動作が多いです。
- 自宅のAPは1〜2年おきに買い換えています。電波は目に見えなくてトラブルシューティングしづらいのでここはケチらず良い物を買いましょう。
- Ciscoのmerakiも見たのですが、小規模ビジネスでの実績がよくわからないし見た感じ安定性が心配だったので外しました。
LANケーブル
- 今回は小規模だしケチりたいので自前で行います。自前で圧着するとなったらテスタや圧着器など一式が必要になりますが、今後も使えるので買っておいて良いかなと。いつでも好きなときに好きな長さのLANケーブルを作れるようになります。
- 楽天などにて200円/本で0.5mから5mのいろいろな長さのcat6ケーブルが売っています。自分で圧着する時間を考えると買った方が安います。しかしながら、安い楽天にて買ったLANケーブルは品質が悪くて断線が頻繁に起きました。
- かといって市販のケーブルは500円/mとかするので、10本買うと5,000円ぐらいかかったりする。また、長い距離になると5m単位や10m単位のロットしかなくて配線の余りが出てきてしまいます。なので、自作します。
- 今回買ったエレコムのLANケーブルは安いのでケーブルの被覆と芯線がとても硬くて扱いづらいです。ローダー付きのRJ45じゃないとコネクタへのケーブルの挿入の難易度高すぎて無理でした。最初はローダー無しのRJ45を買ったのですが、穴に通らなくてローダー付きを書い直しました。
実装
L1
- どこに何を通すか設計します。業者からもらった室内の設計図では不十分なので、結局は現況を見てからちゃんと作りました。意外と図面は抽象的なので要注意です。
- 現場では、図面に載っていない配線があったりしました。天井裏の配線は謎で、ケーブル通しを使って業者と2人がかりで捜索し、現場の作業員を勝手にお借りしてケーブル通しを手伝ってもらいました。頭数が2人は最低必要な状況でした。
- ケーブリングが終わったら、引き継ぎやすいようにAs-Isを残しておきます。モザイクばかりでよくわかりませんが。
機材の設定は、事前に一通り行って動作テストを行っておくことを強く推奨します。理由は以下です。
- 初期不良を検出する。
- 現地はトラブルシュートをするための機材が少ないので、事前に資材や機材の環境が整ったところでトラブルシュートをする。
- 現地ではインターネットにつながらない場合もあるため。
- 特にVLANとパケットフィルタの動作テストには時間がかかります。
動作テストのために50cmのケーブルをたくさん作る事になって辛かったです。
フリーアクセスなのでカーペットを剥がして床を見て見ると結構堅い締め付けでネジが締められていて、外すのが大変でした。インパクトドライバーが無いと堅くて緩まないので取りに帰りました。
インパクトドライバーでやっと開けられた。
仮に敷設。ケーブルが堅い。
テーブルの上に置けるように、端っこは長めに残しておきます。
床を元通りにしてL1は完了(床を剥がさないで線を通す方法、道具を教えてほしいです。通線 で真っ直ぐを引っ張れるのでしょうか?)
L1の敷設は大変だけど、一般人にはわかってもらえなくて悲しいです。
Wi-Fi Sannerで帯域をチェック。これを見て利用するチャネルを決めます。2GHz帯は外から回り込んでくるのか、他社のが入ってきます。
電波が届きにくいところや、外への漏れ具合を確認するときには、WiFiミレルを使ってチェックします。PCを持ち歩いてうろうろしないで良いので楽です。
ルーターの設定
RTX1200の設定の要点をいくつか書いておきます。
4つのvlanを作ります。
- 社内リソース用
- エンジニア用
- biz用
- ゲスト用
vlan lan1/4 802.1q vid=4
vlan lan1/5 802.1q vid=5
vlan lan1/6 802.1q vid=6
vlan lan1/7 802.1q vid=7
次に、どこからどこに何を通したいかを設定します。ネットワーク間は全てデフォルトではpassなので、一旦全てrejectした上で必要なパケットをpassさせていきます。
ルール自体はとても複雑なので、使うか使わないかは別にしてルールは一旦全部作って起きます。その後、このルールをip pp secure filterで適用していきます。
ip filter 600000 reject 192.168.4.0/24 192.168.5.0/24
ip filter 600001 reject 192.168.4.0/24 192.168.6.0/24
ip filter 600002 reject 192.168.4.0/24 192.168.7.0/24
ip filter 600011 reject 192.168.5.0/24 192.168.4.0/24
ip filter 600012 reject 192.168.5.0/24 192.168.6.0/24
ip filter 600013 reject 192.168.5.0/24 192.168.7.0/24
ip filter 600021 reject 192.168.6.0/24 192.168.4.0/24
ip filter 600022 reject 192.168.6.0/24 192.168.5.0/24
ip filter 600023 reject 192.168.6.0/24 192.168.7.0/24
ip filter 600031 reject 192.168.7.0/24 192.168.4.0/24
ip filter 600032 reject 192.168.7.0/24 192.168.5.0/24
ip filter 600033 reject 192.168.7.0/24 192.168.6.0/24
ip filter 600045 reject 192.168.4.0/24 192.168.5.0/24
ip filter 600046 reject 192.168.4.0/24 192.168.6.0/24
ip filter 600047 reject 192.168.4.0/24 192.168.7.0/24
ip filter 600054 reject 192.168.5.0/24 192.168.4.0/24
ip filter 600056 reject 192.168.5.0/24 192.168.6.0/24
ip filter 600057 reject 192.168.5.0/24 192.168.7.0/24
ip filter 600064 reject 192.168.6.0/24 192.168.4.0/24
ip filter 600065 reject 192.168.6.0/24 192.168.5.0/24
ip filter 600067 reject 192.168.6.0/24 192.168.7.0/24
ip filter 600074 reject 192.168.7.0/24 192.168.4.0/24
ip filter 600075 reject 192.168.7.0/24 192.168.5.0/24
ip filter 600076 reject 192.168.7.0/24 192.168.6.0/24
ip filter 600145 pass 192.168.4.0/24 192.168.5.0/24 icmp
ip filter 600146 pass 192.168.4.0/24 192.168.6.0/24 icmp
ip filter 600147 pass 192.168.4.0/24 192.168.7.0/24 icmp
ip filter 600154 pass 192.168.5.0/24 192.168.4.0/24 icmp
ip filter 600156 pass 192.168.5.0/24 192.168.6.0/24 icmp
ip filter 600157 pass 192.168.5.0/24 192.168.7.0/24 icmp
ip filter 600164 pass 192.168.6.0/24 192.168.4.0/24 icmp
ip filter 600165 pass 192.168.6.0/24 192.168.5.0/24 icmp
ip filter 600167 pass 192.168.6.0/24 192.168.7.0/24 icmp
ip filter 600174 pass 192.168.7.0/24 192.168.4.0/24 icmp
ip filter 600175 pass 192.168.7.0/24 192.168.5.0/24 icmp
ip filter 600176 pass 192.168.7.0/24 192.168.6.0/24 icmp
ip filter 600245 pass 192.168.4.0/24 192.168.5.0/24 * 631
ip filter 600246 pass 192.168.4.0/24 192.168.6.0/24 * 631
ip filter 600247 pass 192.168.4.0/24 192.168.7.0/24 * 631
ip filter 600254 pass 192.168.5.0/24 192.168.4.0/24 * 631
ip filter 600256 pass 192.168.5.0/24 192.168.6.0/24 * 631
ip filter 600257 pass 192.168.5.0/24 192.168.7.0/24 * 631
ip filter 600264 pass 192.168.6.0/24 192.168.4.0/24 * 631
ip filter 600265 pass 192.168.6.0/24 192.168.5.0/24 * 631
ip filter 600267 pass 192.168.6.0/24 192.168.7.0/24 * 631
ip filter 600274 pass 192.168.7.0/24 192.168.4.0/24 * 631
ip filter 600275 pass 192.168.7.0/24 192.168.5.0/24 * 631
ip filter 600276 pass 192.168.7.0/24 192.168.6.0/24 * 631
ip filter 610047 pass 192.168.4.0/24 192.168.7.0/24 icmp
ip filter 610048 pass 192.168.7.0/24 192.168.4.0/24 icmp
ipv6の設定。社員用はIPv4のアクセス制限があるので、IPv6の利用はゲストネットワークのみにします。lan1/6がゲストネットワークのvlanです。
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1/6 address ra-prefix@lan2::1/64
ipv6 lan1/6 rtadv send 1 o_flag=on
ipv6 lan1/6 dhcp service server
ipv6 lan2 secure filter in 200030 200031 200038 200039
ipv6 lan2 secure filter out 200099 dynamic 200080 200081 200082 200083 200084 200085 200086 200098 200099
ipv6 lan2 dhcp service client ir=on
ipv6 filter 200030 pass * * icmp6 * *
ipv6 filter 200031 pass * * 4
ipv6 filter 200038 pass * * udp * 546
ipv6 filter 200039 reject * *
ipv6 filter 200099 pass * * * * *
ipv6 filter dynamic 200080 * * ftp
ipv6 filter dynamic 200081 * * domain
ipv6 filter dynamic 200082 * * www
ipv6 filter dynamic 200083 * * smtp
ipv6 filter dynamic 200084 * * pop3
ipv6 filter dynamic 200085 * * submission
ipv6 filter dynamic 200086 * * https
ipv6 filter dynamic 200098 * * tcp
ipv6 filter dynamic 200099 * * udp
ゲストネットワークのQoSを最初は設定していましたが、ユーザが少ないので撤廃しました。
ゲストネットワークには帯域を100MBpsまでしか割り当てない設定例。
queue lan1 type shaping
queue lan1 class filter list 1 2
queue lan1 class property 1 bandwidth=100M
queue class filter 1 1 ip 192.168.6.0/24 * * * *
queue class filter 2 1 ip * 192.168.6.0/24 * * *
うるさいログをoffにしたり。
ip filter dynamic 200080 * * ftp syslog=off
ip filter dynamic 200081 * * domain syslog=off
ip filter dynamic 200082 * * www syslog=off
ip filter dynamic 200083 * * smtp syslog=off
ip filter dynamic 200084 * * pop3 syslog=off
ip filter dynamic 200085 * * submission syslog=off
ip filter dynamic 200098 * * tcp syslog=off
ip filter dynamic 200099 * * udp syslog=off
とある日のトラフィックはこんな感じです。
スイッチの設定
ブラウザ上でvlanの設定をポチポチとやります。
設定値は以下のような感じです。
安いVLAN対応スイッチですが簡単な統計は出ます。
Wi-Fi APの設定
周波数とSSIDが分離されていて設定しやすいです。このご時世、2.4GHzをオフにしていてもクレームは出ませんでした。
APの設定は以下のような感じです。VLANに対応してアクセスポイント名を設定しています。
L1の敷設です。Wi-Fi APは上の方に設置して降らせる感じで電波を飛ばすのが良いみたいなので上部に設置します。
壁に穴を開けて、Wi-Fiを設置したところです。ケーブルが露出していて汚いのでモールでカバーをします。
Vivaホームで買ってきたモールです。マルチカッターで切ります。2秒位でカットできます。
完了した状態です(アンテナの向き地面に対して垂直が正しく、写真の状態は間違い)。
Chromecastを設置
- 会議室のテレビにはChromecastを設置しました。ゲストネットワークに参加させておきます。
- 来訪者がWi-Fiに繋げれば、WindowsとmacOSからも会議室のテレビをワイヤレスで投影できるので便利です。
設定管理
APIで制御は出来ないので、Infrastructure as Codeの理想に近づけるためにも設定ファイルをダンプしてGitHubで管理。
結果
初期コスト: 約11万円
ランニングコスト: 1万円未満/月
ベンチマーク
Wi-Fiでのベンチマーク
有線でのベンチマーク
IPv6の設定テスト結果
- 2019年4月〜2023年10月の4年半が経過した現在、問題は1度も起きておりません。
- 1年に1回程度、ファームウェアの更新しているので再起動しています。
- Wi-Fiだけで事足りてしまうようで、有線LANはほぼ使われていないです。OSのアップデートなどで数百GBのダウンロードをする際には周りのWiFiユーザに迷惑をかけないという意味でも有線を使うのが良いです。早く終わるし。
まとめ
- オフィスの引っ越しに伴いネットワークを構築しました。
- 工数は10人日ぐらい使いました(キャリア選定、機器選定、L1,L2設計、施工、設定、テスト、ケーブル作成など)
- もし、在宅環境を整備するなら:YAMAHA RTX830 + WLX212 or WLX313 を入れておけば完璧かなと。WiFi6はまだ理論値をちゃんと出せるハードウェアが無いので気にしなくて良いかと思います。
Discussion