はつかぜ

ルーター(RTX1200)のQoS機能を利用して帯域を制限した

作成

はじめに

一人暮らししていた頃節約にはまり、下宿の固定回線を解約したうえ、携帯の回線を128kbpsしかでないものに変更したことがある。以来通信費をどうやって抑えるかあれこれ考えてきた。現在は実家に暮らしていて、家で契約している光回線を使わせてもらっている。携帯の方は楽天モバイルであり、外で使うことはまずないので毎月の支払いは発生していない。しかしいずれこの家をでた時に、楽天モバイルの回線だけでは結局月々3278円と大きな出費になる。また、通信速度が遅い生活というのは雑音の少ない充実したものであった経験もある。こんなことを考えていたところ、通信速度が128kbpsだが無料で利用できる格安sim[1]を発見した。この速度に慣れておけば、通信費が全くかからない生活ができる。ということで家で使っているルーターの設定を変更し、通信帯域を制限してみた。

機材

設定したい内容

RTX1200のLAN2ポートにWANが接続されており、LAN1には家で使っている端末がいろいろ接続されている。LAN3は今回は関係ないので割愛する。LAN1を2つのvlanに分割し、1-7番のポートをvlan1、8番のポートをvlan2する。そしてこのvlan2とインターネットとの通信を上下とも128kbpsに制限する。vlan2と他のlanとの通信は制限しない。vlan2にelecomのルーターを無線アクセスポイントとして接続し、僕が使うパソコンやスマホはこのアクセスポイントに接続する。

	                         Internet
	                            |
	      ┌-------┬-----------┬-┴--┬----┐
	      |RTX1200|LAN1       |LAN2|LAN3|
	      └-------┴-┬-------┬-┴----┴----┘
	              vlan1   vlan2
	      192.168.100.1   192.168.101.1
	                |       |
	┌------------┐  |       |    ┌-----------┐   ┌-----┐
	|home network├--┘       └----┤elecom wifi├---┤my PC|
	└------------┘               └-----------┘   └-----┘
	192.168.100.0/24         192.168.101.0/24
図1: 接続と設定の概略

vlanについて

ヤマハのページにvlanについて以下のような説明がある:

物理的な接続形態に依存せず仮想的にグループを形成してひとつのLANとみなすものが、VLAN(Virtual LAN)です。VLANには、スイッチの物理ポート単位でVLANを形成するポートベースVLANと、パケットにタグと呼ばれるヘッダを付加してVLAN情報を格納するタグVLANとがあります[2]

ここではLAN1にある8つのポートをvlanによって2つの論理的なLANに分割する。しかしこの後設定するクラス分けでは送信元や宛先のアドレスによる分類ができるので帯域幅を制限したい端末のIPアドレスを固定しておくだけでよかったんやけどな。

クラス分けについて

クラス分けについてヤマハのページに以下のような説明がある:

優先して転送するデータを判別するために、受信したデータを分類します。
データの分類には、転送データに含まれている情報を使用します。[3]

各ポートから出ていくパケットについて、そのパケットの送信元アドレスや宛先アドレス等の情報に基づきクラスに分類する。このクラス毎に様々な処理が可能なのだが[要出典]、今回はvlan2とインターネットとの通信をクラス1として、このクラスに対して帯域幅を128kbpsに制限する。

実際の設定

RTX1200において行った設定は以下の通り。ただし、LAN2にppの設定をし、LAN1とインターネットとの通信ができるところまでは既に設定済みとし、以降の変更点だけ抜粋する。

始めにLAN1を2つのvlanに分割する:

# vlan port mapping lan1.1 vlan1
# vlan port mapping lan1.2 vlan1
# vlan port mapping lan1.3 vlan1
# vlan port mapping lan1.4 vlan1
# vlan port mapping lan1.5 vlan1
# vlan port mapping lan1.6 vlan1
# vlan port mapping lan1.7 vlan1
# vlan port mapping lan1.8 vlan2
# lan type lan1 port-based-option=divide-network

続いて各vlanの設定を行う。ただしvlan1はlan1の設定を受け継ぐので不要。

# ip vlan2 address 192.168.101.1/24
# ip vlan2 secure filter <vlan1と同じパケットフィルター>

次にクラスフィルターを定義:

# queue class filter 1 1 ip 192.168.101.0/24 * * * *
# queue class filter 2 1 ip * 192.168.101.0/24 * * *
# queue class filter 3 2 ip 192.168.100.0/24 192.168.101.0/24 * * *

上の2行はvlan2とその他との通信を制限するためのものである。ただしこの2つだけではvlan1からvlan2への通信まで制限してしまうので、それを除外するために3行目のクラスフィルターを定義する。

次にクラスフィルタをvlan2に適応。これによりルーターから192.168.101.0/24への通信がフィルタリングされる。

# queue lan1 type shaping
# queue vlan2 class filter list 3 2

2行目で指定したフィルターはその指定した順番で評価されるので注意が必要。
そしてクラスに対する制限を指定:

# queue lan1 class property 1 bandwidth=128k

次はlan2(pp)にクラスフィルタを適応。これにより192.168.101.0/24からルーターへの通信がフィルタリングされる。

# queue lan2 type shaping
# pp select n
ppn# queue pp class filter list 1

vlan2の時と同様にクラスに制限を設定:

# queue lan2 class property 1 bandwidth=128k

パソコンでの設定

最後にパソコンから今回作ったvlan2に接続するように設定する:

# cat > /etc/hostname.if <<EOS
join <アクセスポイントのECS-ID> wpakey <アクセスポイントの暗号化キー>
inet 192.168.101.2/24
EOS
# echo 192.168.101.1 > /etc/mygate

おわりに

めっちゃ遅い。

参考文献

  1. 料金プラン-50ギガの大容量SIM | donedone(ドネドネ) ドネーション型モバイルサービス.donedone.2022-01-14閲覧
  2. VLAN.RTpro.2022-01-14閲覧
  3. QoSとは.RTpro.2022-01-14閲覧
  4. Yamaha RTX ルータのセキュリティのデフォルト設定解説(CLIの場合).ネットワークチェンジニアとして.2022-01-14閲覧