Yamahaルーター設定(1)

 どうも最近(随分前からの気もするが…)研究室のルーターが不調なのでいろいろ調べてみた記録。ちなみに機種はYamaha RT57i。セキュリティー対策しろとのお達しがあったのでSRT100に買い換え予定だけど、基本的に以下の問題は変わらない気がする…。

 Yamahaルーター全般に言える事らしいのだが、NATテーブルが溢れそうになると(しかも溢れやすい)非常に不安定になるらしい。うちの研究室はMaxで30人程度が同時に利用するので、デフォルトの設定では間違いなくNATテーブルが溢れる。細かい設定をできるのがYamahaルーターの良いところではあるのだが、この程度の利用で落ちるデフォルト設定って…。それ以外にもいろいろデフォルト設定は問題があるのでチューニングが必要なようです。はい。

 まず、動的NATのテーブルサイズだが、基幹用RTX3000を除いてYamahaルーターは全て4096で変更不可。市販のルーターの中では普通〜やや大きいぐらいのサイズなのだが、最近はみなさんタブブラウザとかで同時に大量にセッションを生成してくれるので、30人もいればあっという間に溢れてしまう。コマンド入力で

show nat descriptor address
とやれば現在のNATテーブルサイズが分かる。
だいたいうちの研究室の傾向としてはポート80(HTTP)が大半を占めていて、特に混雑時はテーブルサイズが常時3000を超える状況。誰もいないときに試してみたのだが、一人でもタブブラウザでいろいろページを見て回ってると最大で分速50セッションぐらいになるみたい。ここで問題になるのがTTLの値。本来通信が終わるとNATテーブルからセッションが消えるはずなのだが、80ポートはなぜか消えてくれない。タイムアウトがデフォルトで900秒に指定されているが900秒もテーブルに居座られるとたまったものではない。よってこれを短縮。
まず、全てのポートでタイムアウトを300秒に。(nat_descriptor番号は環境に合わせて変更)
nat descriptor timer nat_descriptor 300
でもって、HTTPポートに限っては90秒まで短縮。
nat descriptor timer nat_descriptor protocol=tcp port=80 90
これでしばらくして確認するとテーブルサイズが数百まで減っているので良い感じ。ちょっと短すぎる気もするが、今のところ苦情はない。
でもって、随所に書かれているが、FTPのように制御セッションとデータ転送セッションが異なるプロコトルでのTTL同期に関する設定がftpもしくはautoになっているのを確認。allにするとこれまたTTLが減らずにテーブルが溢れるらしい。
nat descriptor masquerade ttl hold auto
で、あとはSSHが良く切れるという苦情が来ていたので対処してみることに。rlogin,rcp,ssh等のポート番号を変更しないように設定すれば切れなくなるらしい。
nat descriptor masquerade rlogin on
これでok。というか、デフォルトでonにしておいてくれよ。
そんなこんなで様子を見てるけど、特に問題はなさそうかな。

ちなみにこんな対策をしても、torrentみたいに大量にセッションを張るソフトを動かされると一瞬で落ちるYamahaルーター
P2Pやる人は避けるべきかも。