500円のおもちゃ弄る pic.twitter.com/EFzUeiQzYC
— AAkira (@_a_akira) October 30, 2018
元々使っていたルータの調子が悪かったというのもあって、最近IX2005という2006年発売のルータを500円で購入しました。
なんで2006年なんかに発売されたルータを今更買うんだと思うかもしれませんが、
IX2005は100BASE-TXなものの、IPsecやEtherIPに対応していて個人で使うスペックとしては十分すぎる機能を兼ね備えています。
当時の発売価格は75,600円と、素人だったら絶対手を出さない価格で販売されていたのも納得です。
唯一の弱点である100BASE-TXも、そもそも家のネットワークが実効値100Mbps以上出ていなかったので全く問題ありませんでした。
大学の時は一応ネットワーク/セキュリティの研究室にいたのでCCNAを持っていた(CCNAの期限はたしか3年)のですが、大して覚えていないので練習がてら設定していきたいと思います。
自宅ネットワークについて
ネットワーク構成図
家のネットワーク構成図はこのような感じになっています。
メインで使っているデスクトップPCの他にIoT用のAPIサーバがRasberry Piで動いていて、NAS的に使っている自宅サーバ(Ubuntu)がいます。元々使っていたルータはwifiアクセスポイントのブリッジとして動いています。
※ オレンジは固定IP、他はDHCP
※ IP, Portは適当な値
※ iconはFLAT ICON DESIGN
とFLATICON
のサイトを利用させていただきました。
4年前から家の家電を可能な限りIoT化しているので、wifiに繋がっているIoT端末はもっとたくさんあります。家のIoT環境についてはまた今度書きます。
今まではAPIサーバ用のPortが空いていてsourceがanyだったので、Port番号さえわかれば誰でもアクセス出来る状態になっていました(APIのアクセス自体は一応Access Tokenで弾いている)。
さすがにPortが開きっぱなしだと流石に良くないので、GCPのインスタンスを立てて、GCPから家のネットワークへのアクセスのみ通すようにしました。
そもそも、ルータ2つ置いてDMZ作れば良くね?という話ではあるのですが、メインPCだったりサーバとか数々の電子機器がありすぎて家のコンセントが枯渇している問題があり、あまり電化製品をこれ以上増やしたくないという問題があるので現在の構成にしました。(ちなみに電気代は1Kの一人暮らしなのに1万を超えていますwなぜだ)
要件定義
以下の自宅ネットワークの要件を満たす設定をしていきます。
- APIサーバのRasberry Piは固定IPにする
- WANからHTTP, SSH用のPortを開ける
- naptで接続
- GCPインスタンス経由からのみアクセスを許可
- メインPCは固定IPにする(動画等をスマホ向けにキャストするため)
- NAS用サーバも当然固定IP
- web経由で設定をしたいので無線アクセスポイントは固定IPにする
- シリアル接続が面倒なので、ssh接続用にルータのIPも固定にする
- 来客用のアクセスポイントはネットワークを分離(SSID, Passwordを分ける)
- ケーブルTVのネットワークを利用しているので、WAN側はDHCP
IX2005の設定
上記のネットワーク図を実現するためにルータの設定をしていきます。
NECのルータはCisco likeに作られているので、Ciscoのルータを操作したことある人なら問題ないと思います。逆にCiscoのルータを操作したことが無いとモードの概念が難しいかもしれませんが、自宅の設定程度なら大丈夫です。
各モードの説明はこちら
を参考にしました。本家より詳しいですw
※ 出典: https://changineer.info/network/nec_ix/nec_ix_mode
mode | 意味 |
---|---|
オペレーションモード | showコマンドなど本番影響がない操作が可能なモード |
グローバルコンフィグモード | 一般的な操作を行うモード(Cisco機と異なり設定保存はこのモードで行う) |
インターフェースコンフィグモード | IPアドレス等のインターフェースに対する設定を行うモード |
デバイスコンフィグモード | VLAN割り当て等のデバイスに関係する設定を行うモード |
接続
未だにネットワーク機器への接続はシリアルケーブルが主流です。
コンソールのソケットはよく見るLANケーブルのソケットと似ているのですが別物です。 持っていない方はコンソールtoシリアルケーブルを用意します。Amazonで800円ほどで購入可能です。
次に、コンソールケーブルとUSB変換ケーブルをつなげます。これもAmazonで900円ほどで購入可能です。
最近はシリアルから直接USBに繋がるタイプのケーブルもあるみたいなので、これから買う方は、こちらの方が便利かもしれません。
初期化
このルータは中古なので、前の人の設定が残ったままになっていました。今回買ったルータには、パスワードが設定されていたので全く操作出来ませんでした。その場合はスーパリセットを行います。
手順としては
- 電源OFF -> ON
- Loading(#表示)中に ctrl+c
- ccコマンド入力
- bコマンドで再起動
となります。
NEC Bootstrap Software
Copyright (c) NEC Corporation 2001-2011. All rights reserved.
%BOOT-INFO: Trying flash load, exec-image [ix2005-ms-8.****.ldc].
Loading: ################### <====== ② ctrl+c
NEC Bootstrap Software, Version 8.1
Copyright (c) NEC Corporation 2001-2011. All rights reserved.
boot[0]>
NEC Bootstrap Software, Version 8.1
Copyright (c) NEC Corporation 2001-2011. All rights reserved.
boot[0]> cc <====== ③ cc : reset
Enter "Y" to clear startup configuration: y
% Startup configuration is cleared.
NEC Bootstrap Software, Version 8.1
Copyright (c) NEC Corporation 2001-2011. All rights reserved.
boot[0]> b <====== ④ b : 再起動
NEC Bootstrap Software
Copyright (c) NEC Corporation 2001-2011. All rights reserved.
これで初期化された状態で使用可能です。デフォルトは特にパスワード等の設定は無いので、自由に操作可能です。
コナミコマンドかよ
ファームウェアアップデート
ファームウェアのバージョンが古い場合はバージョンアップをしましょう。しかし、NECのルータはソフトを公式サイト等で配布しているわけではないので、個人で入手するのは難しいかもしれません。
一応こちら
の書式で申請可能です。
ファームウェアのアップデートについては同期が記事
を書いているので、そちらを参照してみて下さい。
IX2105なので若干異なるのですが、やり方は一緒です。
設定
上記の要件を満たすルータの設定は以下のようになります。
interfaceモード等も切り替わるので、以下のコマンドをコピペするだけで動作します。
- user name: hoge
- password: foobar
hostname ix2005
timezone +09 00
username hoge password plain foobar administrator
ntp ip enable
ntp server 133.243.238.242
ntp server 133.243.238.163
ntp server 210.173.160.27
ntp server 210.173.160.57
ntp retry 3
ntp interval 3600
logging buffered 102400
logging timestamp datetime
ip ufs-cache enable
ip route default FastEthernet0.0
ip dhcp enable
bridge irb enable
ip name-server 8.8.8.8
ip name-server 8.8.4.4
dns cache enable
dns cache max-records 1500
dns ncache lifetime 180
proxy-dns ip enable
proxy-dns ip max-sessions 128
proxy-dns ip query-interval 1
proxy-dns server 8.8.8.8
proxy-dns server 8.8.4.4
! routerにssh出来るようにする
ssh-server ip enable
! webのコンソールからも操作出来るようにする
http-server username hoge
http-server wol-username hoge
http-server ip enable
! GCPからのAccess list
ip access-list raspi permit tcp src xx.xx.xx.xx/32 dest any dport eq 60000
ip access-list raspi deny tcp src any dest any dport eq 60000
ip access-list raspi permit ip src any dest any
! LAN側DHCPの設定
ip dhcp profile lan
assignable-range 192.168.1.2 192.168.1.254 ! 192.168.1.2-254でipを振る
subnet-mask 255.255.255.0
default-gateway 192.168.1.1
dns-server 192.168.1.1 8.8.8.8
! 固定IPの設定 macアドレスで紐付け
fixed-assignment 192.168.1.50 aa:bb:cc:dd:ee:ff ! メインPC
fixed-assignment 192.168.1.100 1a:2b:3c:4d:5e:6f ! NAS
fixed-assignment 192.168.1.150 a6:b5:c4:d3:e2:f1 ! API server
fixed-assignment 192.168.1.200 a1:b2:c3:d4:e5:f6 ! アクセスポイント
device FastEthernet0
no shutdown
device FastEthernet1
no shutdown
! WAN側はDHCPでIPが振られる
interface FastEthernet0.0
description WAN
ip address dhcp
ip address dhcp receive-default
ip nat enable
ip napt enable
ip napt translation max-entries 8192
! 外からルータにsshしたい場合はコメントアウト
! ip napt static FastEthernet0.0 tcp 22
ip napt static FastEthernet0.0 1
! API serverのnapt
ip napt service raspi-api 192.168.1.150 none tcp 60000
! API serverにsshする用
ip napt service raspi-ssh 192.168.1.150 none tcp 60001
ip filter raspi 10 in
no shutdown
! LAN側の設定
interface FastEthernet1.0
description LAN
ip address 192.168.1.1/24
! 上記で設定したdhcpをbind
ip dhcp binding lan
no shutdown
これで設定が完了です。
しかし、このままだと設定が保存されていないのでルータの電源を落とした場合に 初期化時に戻ってしまいます。そのため、忘れずに保存コマンドを打ちましょう。
Router(config)# write memory
ちなみに初期化する場合は
Router(config)# erase startup-config
Are you sure you want to erase the startup-configuration? (Yes or [No]): yes
Router(config)# exit
Router# default-console command-line
% You must RELOAD the router for this configuration to take effect.
Router# reload
一部消す場合は先頭にnoを付けます。
Router(config)# no ntp server 210.173.160.57
現在の設定を見る場合は
Router(config)# show running-config
になります。なお、これらのコマンドは全てCisco同様省略も可能です。
まとめ
NECのルータはまとまったドキュメントが無いので、コマンドを調べるのにかなり苦労しました。
ネットワークの設定は例なので、あくまで例になります。
もし、これセキュリティやばくね?って気付いた方は教えて頂けると大変助かります🙏