お家インフラ日記 (3)- RTX830でお家ネットワーク構築

お家インフラ日記 (2)- Raspbian Stretch Liteの再インストール - etogenのブログの続きです。

今回はYAMAHAルーターと"ノン"インテリジェントスイッチを使ったラズパイのネットワークの構築をしたいと思います。大きく分けてこの3つのことをします。

で、しょうもないですけど、こんなネットワークを構築します(図のスイッチに繋がってる3つのサーバーはラズパイを意味しています)

f:id:etogen:20190226185931p:plain

YAMAHAルーターはまともに操作したことないので手探り感満載でやっていきます。。。

使うもの

ラズパイ3個

sshdを動かしたり色々設定したけど、まだ固定IPが設定されていません。

RTX830

わたしのへっぽこネットワークを構築するために使います。

ビジュアルが可愛いいからって理由で、お年玉で衝動買いしてしまった(本当に深い理由がない)

2019年2月26日現在ではYAMAHAから発売されているルーターの中では最新のモデル。RTX810よりスループットとか向上してたり、USBminiのシリアルポートが追加されたみたいです。詳しくは自分で調べてね。。。

スイッチングハブ(EHC-G05PA-B-K)

足りないポートを増やすために一応購入しました。

エレコムのお安いスイッチです。SNMPには非対応。本当はインテリジェントなやつを買って色々いじりたい思っていたんですけど、RTX830を買ったりしたせいで本当にお金がなくなっちゃった。お金が入ったらNETGEARのカッコイイのを買おうかな。

ルーターの初期設定

WebGUIを使って設定(インターネットへのルーティングなどの設定)

VPNルータ「RTX1210」で最小限のLANを構築してみようを参考にして進めました。これは初心者にも優しいWebGUIからの設定方法について書かれた記事です。

わたしはYAMAHAルーターを全然いじったことないので、コンソールからwanやフィルタリングの設定するのはちょっと恐かった。ここ参考にして設定したらLANポートに接続した機器がルーターを通じてインターネットにアクセスできるようになるはずです。

コンソールからの設定

甘えは最初だけにしてあとの設定はコンソールからやりたいと思いました。とりあえずこれらのことを設定します。

  • 文字化けの解決
  • 自動的にログアウトするまでの時間を設定(無効化)
  • sshdの起動
  • telnetdの停止

シリアルコンソールからルーターに接続する(telnetで接続するならこれやる必要なし)

まずルーターのCONSOLEのポートとMacをケーブルで繋いだら、/devの下にtty.usbserial-XXXcu.usbserial-XXXってファイルができたことを確認します。

$ ls /dev/tty.usb*
/dev/tty.usbserial-AH069FV9
$ ls /dev/cu.usb*
/dev/cu.usbserial-AH069FV9

そしたらcu -l デバイス名で接続。Connectedって表示されてその後何も表示されないけど、Enterするとルーターの認証用のパスワードを聞かれます。初期設定ではパスワードは設定されてないのでそのままEnterすればログインできます。

ちなみにcu~.と入力すると終了できます。

$ sudo cu -l /dev/cu.usbserial-AH069FV9

telnetルーターに接続する(シリアルコンソールで接続するならこれやる必要なし)

YAMAHAルーターはデフォルトでtelnetで接続できるようになっています。

$ telnet 192.168.100.1

こっちもパスワードの入力はなしでおっけー。

文字化けの解決

YAMAHAルーターはShift-JISなので、ターミナルがUTF-8だったりしたらこんな感じに文字化けします。

> show 
?G???[: ?R?}???h?????m?F???Ă???????
>

ターミナルのテキストエンコーディングを変更したくなかったので、ルーターエンコーディングの設定を変更

> console character ja.utf8
> show 
エラー: コマンド名を確認してください
>

ルーターの諸々の設定はsaveを実行しないと不揮発性メモリに保存されないようになっています。何かやったらsaveを実行するのを忘れないようにしましょう。

また、saveはadministratorじゃないと実行できません。administratorはLinuxでいうところのrootユーザーみたいなやつです。administratorになるにはadministratorというコマンドを実行します。

> administrator
Password:
# save

自動的にログアウトするまでの時間を無効化

セキュリティ的にはこれは設定しない方がいいんですけど、ログインしたままルーターのマニュアルを読んで調べ物をしちゃうと思うし、そのたびに勝手にログアウトさせられるのはムカつくので設定しました。

ログインタイマーはデフォルトでは300秒に設定されています。無制限にする場合は以下のコマンド

# login timer clear
# save

ただしsshなどで接続している場合はclearの場合も300秒でログアウトさせられるみたいです。

sshdの起動

正直これ設定する必要あるかはわからないんですけど、一応。

RTX830にはデフォルトで無名ユーザーとadministratorの2つのユーザーが存在するんですが、どちらもsshではログインできないようになっているので、新しくssh接続用のユーザーを作成しないといけません。

# login user etogen 
New_Password: 
New_Password: 
# sshd host key generate     
Generating public/private dsa key pair ...
|*******
Generating public/private rsa key pair ...
|*******
# sshd service on
# save 

これでユーザーの作成とsshdの設定が完了。実際に接続する時はこんな感じです。

$ ssh etogen@192.168.100.1

telnetdの停止

talnetd service offって実行するだけ。 

# telnetd service off
# save 

この後、telnetで接続を試みてうまくいかなかったら成功

$ telnet 192.168.100.1
Trying 192.168.100.1...
telnet: connect to address 192.168.100.1: Connection refused
telnet: Unable to connect to remote host
$



ラズパイのネットワークの構築

RTX830のネットワークを分割してラズパイ3台が接続するVLANを作ります。ラズパイには固定IPも設定します。

とりあえず以下の作業をする前にスイッチにラズパイ3台を接続し、さらにlan1.1(RTX830の一番左側にあるLANポート)とスイッチを接続します。

lanの状態を確認

現在ルーターで設定されたlanは2つあります。

# show status lan?
? lan1 lan2 
# 

lan1はYAMAHAルーターでデフォルト(?)で設定してあるLANで、192.168.100.1/24です。lan2はWAN側のネットワークで、これは外部ネットワークと通信する時のデフォルトゲートウェイとして設定されています。ちなみにlan2は「WebGUIを使って設定(インターネットへのルーティングなどの設定)」で設定したものです。

show ip routeでルーティングテーブルを確認できます。

# show ip route 
宛先ネットワーク    ゲートウェイ     インタフェース  種別  付加情報
default             192.168.3.1      LAN2(DHCP)    static  
192.168.3.0/24      192.168.3.16           LAN2  implicit  
192.168.100.0/24    192.168.100.1          LAN1  implicit  
# 

RTX830はLANポートが4つあるんですが全てのインタフェースがlan1の同一のインタフェースとして機能するようになっています。lan1.1からlan1.4までが192.168.100.1のIPアドレスが割り当てられている状態...って言っていいのかな?

さて、今lan1に接続している3台のラズパイなんですが、これらにはIPアドレスが自動で割り当てられています。つまりはYAMAHAルーターDHCPが動いてるってわけです。show status dhcpDHCPのステータスを表示するとLANのどのマシンにどのIPが割り当てられているかがわかります。

# show status dhcp
DHCPスコープ番号: 1
   ネットワークアドレス: 192.168.100.0
               割り当て中アドレス: 192.168.100.2
          (タイプ) クライアントID: (01) XX XX XX XX XX XX
                         ホスト名: mbp2016
                     リース残時間: 2日 23時間 8分 7秒
               割り当て中アドレス: 192.168.100.3
          (タイプ) クライアントID: (01) XX XX XX XX XX XX
                         ホスト名: 2goki
                     リース残時間: 2日 23時間 8分 6秒
               割り当て中アドレス: 192.168.100.4
          (タイプ) クライアントID: (01) XX XX XX XX XX XX
                         ホスト名: 1goki
                     リース残時間: 2日 23時間 8分 7秒
               割り当て中アドレス: 192.168.100.5
          (タイプ) クライアントID: (01) XX XX XX XX XX XX
                         ホスト名: 3goki
                     リース残時間: 2日 23時間 8分 42秒
 スコープの全アドレス数: 190
         除外アドレス数: 0
   割り当て中アドレス数: 4
     利用可能アドレス数: 186
# 

ホスト名とか、リース残時間とかも表示されてて超わかりやすい!(;ω; )

ラズパイに静的なIPアドレスを設定する

ここから本番。まずラズパイに接続して固定IPを設定します。前々回ラズパイでsshdが動くようにしたので、PCをルーターに繋げばラズパイにsshで接続できるようになっているはず。

/etc/dhcpcd.confを編集します。

/etc/dhcpcd.conf
interface eth0
static ip_address=192.168.10.2/24
static routers=192.168.10.1
static domain_name_servers=192.168.10.1

設定したら下記コマンドで設定を反映させます。反映後はip addrでインタフェースにIPアドレスが設定されているかを確認しましょう。

# systemctl daemon-reload
# systemctl restart dhcpcd

ルーターの設定

ここからはRTX830の設定

LAN分割とDHCPの設定

LAN分割機能を使ってlan1.1に192.168.10.1/24を割り当てます。ちなみにMacSSHルーターに接続している場合は、後述のip vlanのコマンドを実行した瞬間に接続が切れるので、コンソールで接続すること。

# lan type lan1 port-based-option=divide-network
# ip vlan1 address 192.168.10.1/24
# dhcp scope 1 192.168.10.10-192.168.10.254/24
# save

dhcp scopeDHCPが割り振るIPアドレスの範囲であり、今回はラズパイの固定IPが含まれないような範囲で適当に設定しました。

vlanとインタフェースをマッチングさせるためにvlan port mapping lan1.1 vlan1のようなコマンドを実行する必要があると思ったんですが、デフォルトでvlan1はlan1.1、vlan2はlan1.2というように設定されているみたいなので、実行する必要はありませんでした。

特に深い意味はないけど他のインタフェースにもvlanを設定してみます。

# ip vlan2 address 192.168.20.1/24
# ip vlan3 address 192.168.30.1/24
# ip vlan4 address 192.168.40.1/24
# dhcp scope 2 192.168.20.10-192.168.20.254/24 
# dhcp scope 3 192.168.30.10-192.168.30.254/24
# dhcp scope 4 192.168.40.10-192.168.40.254/24

dnsホストの設定

vlan1にMacを接続した場合はブラウザでいろんなサイトを見ることができるんですが、vlan2などの他のネットワークに接続した時はこれができませんでした。

ちょっと原因を調べてみるとChromeのURLバーにサイトのURLを打ち込んだ場合は接続できないけど、サイトのIPを直打ちしたら接続できたのでDNSの設定が原因だと察しました。

show configを実行したら、vlan1にだけdnsホストの設定がしてありました。自分で設定した覚えはないのでルーター側が自動でやってくれたんだと思います。

dns host vlan1

というわけでこれをvlan2などのネットワークにも適用します。具体的には下記コマンドを実行します。

# dns host vlan1 vlan2 vlan3 vlan4

これでvlan2に繋いでもvlan3に繋いでもネットサーフィンができるようになるわけです。

WebGUIへのアクセスを許可する設定

show configを実行したらvlan1に接続しているマシンだけがGUIへアクセスできるように設定してありました。この時点ではvlan2やvlan3に接続したマシンはルーターのWebGUIのページにアクセスしても503エラーが返されるようになっていて、アクセスができません。

httpd host vlan1

というわけでWebGUIへアクセスできるホストの設定をします。

# httpd host vlan1 vlan2 vlan3 vlan4

まとめ

ここまでの作業でラズパイ用のvlanを構築することができました。また、ラズパイのIPアドレスを固定化し、ルーターに繋げばラズパイにアクセスできるようになりました。

正直ラズパイをサーバーとして動かすだけなら、静的なIPを設定するだけで十分だしVLANを構築する必要は皆無なんですけど、YAMAHAルーターの操作の練習がてらやっちゃいました。

フィルタリングルールの設定とかはまた後々やっていこうかなと思います。

RTX830のメモ

noで始まるコマンド

コマンドの入力形式に no で始まる形のものが並記されているコマンドが多数あります。no で始まる形式を使うと、特別な記述がない限り、そのコマンドの設定を削除し、初期値に戻します。また、show config コマンドでの表示からも外します。言い換えれば、no で始まる形式を使わない限り、入力されたコマンドは、たとえ初期値をそのまま設定する場合でも、show config コマンドでの表示の対象となります。コマンドの入力形式で、no で始まるものに対して、省略可能なパラメータが記載されていることがあります。これらは、パラメータを指定してもエラーにならないという意味で、パラメータとして与えられた値は no コマンドの動作になんら影響を与えません。

コマンドリファレンス

初期設定に戻るから、たとえばデフォルトで動いているサービス(telnetとか)はno telnetd serviceとか実行すると停止するんじゃなくて動き出すので注意。

ルーターのシャットダウンの手順

1.pp disable all コマンドで、すべての接続先(相手先)に対する通信を無効にします。 2.disconnect all コマンドで、すべての接続先(相手先)との通信を切断します。 3.POWER スイッチを STANDBY にします。 注意: 本製品の電源を入れ直す場合には、POWER ランプが消灯してから 10 秒以上の時間をおいてください

説明書

参考

ラズパイ関連

YAMAHAルーター関連