NetVolante NVR500 で WindowsUpdateのトラフィックに対抗する

毎月第2水曜日にネットワークの繋がりにくい状態が発生します。原因はWindowsUpdateが公開されて全てのPCが一斉にダウンロードを始めることです。
うちの回線はADSLで元々細いのでインターネットにまったく繋がらなくなり業務にも支障が出るレベルになります。
YAMAHA NetVolante NVR500を使用してある程度のコントロールができたのでまとめておきます。
ルーターのログを調べてWindowsUpdateに使われているIPを探して、アクセス制限をかける、という流れになります。

ルーター(YAMAHA NetVolante NVR500)からログを出力させる設定

GUI画面から「詳細設定」を押す
ログ(Syslog)レポート作成で「実行」を押す
デバッグモード、Infoモード、Noticeモードをチェックし、Syslogホストアドレスに受信する端末のIPを入れる。「設定の確定」を押す
注意点として、この状態ではログの数と実際の転送量は比例しません。
例えば激しくブラウジングすると大量のログが発生しますが、動画視聴ではそれほど発生しません。
ログの数とネットワーク負荷は比例しないことをわかった上でデータを見る必要があります。
このままではPassログが来ないので設定追加。
「詳細設定」画面のファイアウオール設定で「設定」を押す。
WANポート(PPPoE時はPP[01])、IPv4フィルタの「設定」を押す。
IPv4 静的IPフィルタの一覧の「99」の数字部分を押す。
IPv4 静的IPフィルタの修正のフィルタ・タイプをpass(ログなし)からpass(ログあり)に変える。「設定の確定」を押す。
「戻る」で1つ前の画面に戻って99が pass する になっているのを確認したら「設定の確定」を押す。
これでOUTのpassのログも来るようになる。
このpassのログの中に DNS Query ログが含まれるので、これを使ってホスト名正引きができるようになる。
更にログを増やす設定
上記設定では実際の転送量とログが比例せず、通信の多いIPを特定できないので追加設定が必要。
設定例を示します。ログが取れれば他の設定でもかまいません。
LAN側ファイアウォールにPassログを出力するよう設定を加える。
設定としては下記2行を加えるイメージです
ip lan1 secure filter in 100099
ip filter 100099 pass-log * * * * *

「詳細設定」画面のファイアウオール設定で「設定」を押す。
LANポート、IPv4フィルタの「設定」を押す。
IPv4 静的IPフィルタの一覧 の 「追加」を押す。
IPフィルタの登録画面で、フィルタ番号:99、フィルタ・タイプ:pass(ログあり)、後は全部 * にして「設定の確定」を押す。
前の画面に戻ると 99番が追加されているので、入か出にチェックを入れて「設定の確定」
この設定をすると通信量の多いIPが特定できるようになる。ただし大量のログが発生するのでルーター、PC、ネットワーク負荷になるので注意。



Syslogの受信、IPの拾い出し

WindowsUpdateには複数のIPが使用されていて、その時々でIPが異なるので、IPの拾い出しが必要です。
自作ソフトSyslogReceive2 を使用します。
起動したら設定画面を開き、ルーターIPを設定してください。それ以外はさしあたってデフォルトで動作するはずです。
一度終了して再起動し「Start」を押すと、ログが表示されるはずです。
ログが表示されない場合はルーターの設定とPCのファイアウォールの設定(udp/514を開ける)を確認してください。
数分すると右画面に集計結果が表示されます。この中からWindowsUpdateに使われているIPを拾い出します。
上記追加設定をしていれば、かなりトラフィックとカウント数が比例するので、数の多い端末やアクセス先を調べれば判断できます。
中段のOUT側IPでの集計で上位に来ているものを調べます。ホスト名が検索できていてそれらしい名前なら間違いないでしょう。
ホスト名が不明な場合、同じIPに複数の端末がアクセスしているならUpdateに使われている可能性が高いです。



ルーター(YAMAHA NetVolante NVR500)に優先制御の設定

最初は帯域制限機能を使えばいいと思っていたのですが、NVR500にはこの機能がついていないので使用できませんでした。
なので優先制御を設定して対応することにしました。(もっと良いルーターを買えと言われればそうなんですが。)
優先制御というのはルータから送出するパケットに優先順位を付けて優先順位の低いパケットは優先順位の高いパケットが無くなるまで送出されないという、ある意味帯域制限よりえぐい機能です。
コマンドのイメージとしてはこんな感じです。
speed lan2 150k
queue lan2 type priority
queue class filter 1 1 ip * XXX.XX.X.*
queue class filter 2 1 ip * XXX.XX.X.*
queue class filter 3 1 ip * XXX.XX.*.*
queue class filter 20 2 ip * *
queue lan2 class filter list 1 2 3 20

フィルターの設定
queue class filter N ? ip * XXX.XX.X.*
Nの部分は通し番号です。重複しないように設定します。
?の部分は優先度です。1から4まで設定可能で1が優先度が低く4が優先度が高くなります。
ip のあとの * はLAN側IPを指定します。ここでは*を指定して全ての端末に対応させます。
次がWAN側IPで、上記で調べたIPを設定します。
1個づつ設定してもいいのですが、(例)12.34.5.6、12.34.5.7、12.34.5.8、などと似たものが多いので 12.34.5.* のように設定します。
この設定ではフィルタ番号1-3で抑制したいIPを設定し、優先度を一番低い 1 に設定します。
それ以外のIPについては番号20で優先度をひとつ上の 2 に設定します。
今回は設定していませんが、特定の端末の優先度を上げたい場合は
queue class filter 10 3 ip XXX.XX.X.X *
のように設定すれば他の端末より優先されるはずです。

queue lan2 type priority
queue lan2 class filter list 1 2 3 20
はフィルタの設定を適用させるために必要な行です。
queue lan2 class filter list の後の数字は、上で設定したフィルタのNの部分の数字を書きます。
書いた順番に実行されるので、例えば 20 1 2 3 と書いてしまうと、最初に全てのIPについて優先度2が設定されてその後は無視されるので、書く順番も大切です。


speed lan2 150k
が重要でここをどのくらいに設定するかで効果が変わります。
最初この部分の設定が分からずしばらく悩んでいました。
MRTGのグラフを見ると分かるのですが、受信するデータ量と送信するデータ量では受信の方が10倍以上多くなっています。
WindowsUpdateで遅くなるのは下り回線が限界に達しているのが原因なので下りを制御できれば良いのですがそういう機能ではありません。
ではどうするかというと、こちらから返事をしなければ次を送ってこないはずなので、WindowsUpdateに使うIPへの上りを制限しよう。ということです。
上りについては回線にはまだかなり余裕がある状態なので、わざと少なめに制限をかけてやらなければなりません。
MRTGのグラフ を見ると上りは20KB/s前後になっているようなので、150kを目処に色々設定を試して見ました。
100k以下にするとかなり受信量も減ってほとんどどこにも繋がらなくなり、200K以上にすると効果が全く無い状態でした。
今回は150kに設定するとそれなりの効果が得られました。
この部分は環境によって違うので。その都度試しながら設定するしかないと思います。

なおこの設定はアップロードの制限をする設定なので、必要なくなったら解除しておかないとせっかくのバンド幅が無駄になります。

PPPoE時の設定

WAN側にモデムを付けてPPPoE接続している時の設定です。
コマンドのイメージとしてはこんな感じです。
speed lan2 150k
queue lan2 type priority
queue class filter 1 1 ip * XXX.XX.X.*
queue class filter 2 1 ip * XXX.XX.X.*
queue class filter 3 1 ip * XXX.XX.*.*
queue class filter 20 2 ip * *
pp select 1
queue pp class filter list 1 2 3 20

上との違いは
pp select 1
queue pp class filter list 1 2 3 20
だけです。
pp select 1 は要らなそうですが、これを打ち込まないと次の行でエラーが出ます。
次行の queue lan2 を queue pp にする必要が有ります。






おまけ

Windows10 の Windows Update の設定
どうしてこのような事態に陥るのかというと、今までのWindowsではUpdateするかどうかを任意で設定できたのが、Windows10では強制的に実施されるように変更されたからです。
更に新機能としてP2Pで近くの端末にUpdateデータを送信する機能もあるらしいです。うまく働けばネットワーク負荷の軽減に役立ちますが逆にネットワーク負荷になる可能性があります。
設定を変更してLAN外の端末には送信しないように設定しておきます。
設定>更新とセキュリティ>「詳細オプション」>「更新プログラムの提供方法を選ぶ」で
Microsoftから更新プログラムを取得し、更新プログラムを・・・次の場所に送信する
部分で
「ローカルネットワーク上のPCとインターネット上のPC」がデフォルトなので、
これを「ローカルネットワーク上のPC」のみにします。
これで更新プログラムをインターネットに送信しなくなるはずです。

IPマスカレード変換セッション数制限機能
WindowsUpdateと直接関係ありませんが、特定の端末がネットワークを占有してしまわないようにNVR500の設定を変更してみました。
NVR500のNATテーブルの上限は4096個になっています。
(よく解らない人は、端末とインターネットサイトを関連付ける表をルーターが持っているというようなイメージで読んでください。)
特定の端末があちこちのサイトに接続するとテーブルの上限を超えて他の端末が接続できないという状況が発生します。
これを防止するためにNVR500には端末が使えるNATテーブルの数を制限する機能があります。
ここからはコマンド操作になります。
NATテーブル確認
show nat descriptor address
どの端末がいくつのNATテーブルを使用しているかが表示されます。
参照NATディスクリプタ : 200
200の部分を記録しておきます。

上限を300に設定する場合は
nat descriptor masquerade session limit 200 1 300
200の部分は使用しているNAT Descriptor の番号
自分の場合は
# LAN configurationの
ip lan2 nat descriptor 200
という設定がデフォルトで入っていたので、この200にあわせます。上で記録した値と同じです。環境によって異なる可能性があります。
1は固定
300が設定する数値
となります。

解除する場合は
no nat descriptor masquerade session limit 200 1
となります

この設定は激しくネットサーフィンをするような場合には有効ですが、youtubeやMicrosoftUpdateのように特定のサイトと多量の通信をする場合には効果がありません。

その他コマンド
[NAT アドレステーブルのクリア]
clear nat descriptor dynamic nat_descriptor

[全体のNATタイムアウトを短くする]
nat descriptor timer 200 300
300秒に設定、デフォルトは900秒。

[状態表示]
show environment

[DHCP割り当て状態表示]
show status dhcp
IPとホスト名・macアドレスの対応が確認できます。

[再起動]
restart


参考サイト


QoS機能を利用する
YAMAHAのサイトです。優先制御、帯域制御の説明・設定例があります。

優先制御
YAMAHAのサイトです。優先制御設定例があります。

IPマスカレード変換セッション数制限機能
YAMAHAのサイトです。IPマスカレード変換セッション数制限機能の説明があります。





TOPに戻る
2017/3/6