スキップしてメイン コンテンツに移動

DNSampにやられたようだ

以前からときどきルータのCPU使用率が98%の状態で高負荷が続くことがあった。
アクセス数が多い為とも思っていたのだが今までルータが悲鳴をあげることはなかった。
問題の切り分けが難しく、何が原因なのかわからなかったが原因をつきとめることができた。

DNSのDDoS攻撃だったようだ。いわゆるDNSampというやつで数年前から猛威をふるっているやつです。
しかし、DNSampは、オープンリゾルバなDNSに対して小さなDNS要求パケットを送ってその何倍ものサイズのパケットを生成させるからDNSamp(アンプつまり増幅)といわれるわけなのだが、DNSサーバがオープンリゾルバになっていなければ大丈夫だと思っていたし、さらにファイヤーウォールでフィルタかけたり制限したりとやっておいたにもかかわらずだったのだが、実はそれだけではすまないということだった。
ログみてもRefusedしているのにぃ・・・

使用しているルータはRTX1200でヤマハのサイトに
オープンリゾルバー(Open Resolver)に対する注意喚起について
のページがあったので対策することにした。
これは、ルータ自体がDNSの機能を持っている場合の対処だったのでオフにした。

いろいろ調べてるうちに
QoSをかけるとか出てくるのでやってはみた。帯域制限とかであるが。
しかし、変わらない。というか効いてない。
ヤマハのルータの場合、Dynamic Class Controlというのがあってそれを使えみたいなことがよく出てくる。
そこでそれも設定してみた。だが、効かない。
根本的なところで間違っているような気がしたのだ。
設定したのは、LAN2(WAN)側だったのだが、それをLAN1(LAN)側にかけたらうまくいった。
普通に考えてppに対してDCCかけるんじゃないのかと思ったのだがどうもこのファームウェアでは、サポートされていないらしい。つまり、入り口のところで制限することはできないということらしい。
でも、これはこれで一度中に入ったものを処理するわけだからそれなりに負荷がかかるような気もするのだけど、とりあえず20%から30%くらいで落ち着いている。

最近だとRTX1210という機種が出ている、これはCPUがPowerPCになっていてRTX1200のMIPS 300MHzからPowerPC 1.0GHzになりかなり性能がアップしている。
また、RAMも256MB、Flash ROM 32MBに倍増され、スループットも1Gbpsから2Gbpsとかなり向上している。
つまり、乗り換えろということなのだろうな。
どうしたってこの現状ではCPUが非力であると思う。本来は充分だと思うのだが。
こういろいろ処理する量が膨大になってくると必要になってくるのもわかるのだが・・・

で、設定の方だが
queue lan1 type shaping
queue lan1 class filter list 1 2
queue lan1 class property 1 bandwidth=100k
queue lan1 class property 2 bandwidth=60m
queue lan1 class control 1 forwarding=reject threshold=50%,15 time=900
speed lan1 100m

queue class filter 1 1 ip * * udp * domain
queue class filter 2 2 ip * * * * *
3行目のところでdnsの帯域を100kとして5行目でその50%を15秒以上使うとブロックして15分(900)経ったら解除という設定。
設定したとたんに負荷が下がった。

# show status qos dcc
LAN1

キューイングタイプ:             shaping
インタフェース速度:             100m
[Dynamic Class Control]
クラス IP アドレス           転送先       残り時間 (s)  開始日時
------ --------------------  -----------  ------------  -------------------
  1      1:   37.97.133.57       reject           210   2015/11/22 23:39:05
------ --------------------  -----------  ------------  -------------------
で確認すると引っ掛かってるわ。このIPずーっとやってんだけど。明日になったら変わってるんだろうからこのIP指定しても無駄なんだろうなぁ。

とりあえずこれでCPUは落ち着いた。
だが、問題は原因を突き止めるのに時間がかかるどころかわからない始末。
そこで、ルータに流れるパケットをキャプチャする必要が出てくるのだが、普通にLAN側からは見ることはできない。ルータがルーティングしているわけだし、スイッチは必要なところにしか送らないわけだからそれ以外のものをキャプチャすることはできない。
そこで、ルータにポートミラーリングという機能があるのでそれを使うつもりでいるのだが
それを使うことで下手をするとまた負荷がかかることがあるのでどう設定するか検討することにする。
疲れるねぇ。ネットワークエンジニアじゃないからわからないわ。


コメント

このブログの人気の投稿

Codebird-php (2.4.1)でエラーが出てツイートできない

Codebirdを新しくしようとソースをアップデートしたらいくつか変更があったのと下記のエラーがでたので対処。 PHP Fatal error:  Uncaught exception 'Exception' with message 'Error 60 while validating the Twitter API certificate. Stack traceが下記のように出た。 Stack trace: #0 codebird.php(294): Codebird\Codebird->_callApi('POST', 'statuses/update', 'statuses/update', Array, false, false) #1 twi_test.php(17): Codebird\Codebird->__call('statuses_update', Array) #2 twi_test.php(17): Codebird\Codebird->statuses_update(Array) #3 {main} thrown in codebird.php on line 923 codebird.phpの923行の何行か前を見てみると curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . '/cacert.pem'); CURLの設定部分がある。 そこでCA証明書の検証と証明書ファイルの指定がしてある。 ...

SABLE エックリアの影【ゲーム日記】

SABLEというオープンワールドのアドベンチャーゲームで2021年9月にSteamでリリースされてから最近日本語対応されたのでやっています。 その中で初期のクエストに「エックリアの影」というのがあったのですがなかなかクリアできなかったところ終盤で再度挑戦したら解決したのでその部分だけ解説したいと思います。 つまりネタバレですのでご注意ください。 本当は最初からVLOGにしたかったのですが途中から録画したので部分的に公開したいと思います。 公式サイト SABLE — SHEDWORKS クエストは、マズという男が世話をしている子供の一人が水を盗もうとして捕まって収監されているのを助けるのが目的。助けるには「影のマスク」を被って牢獄前にいる衛兵を脅して牢から出す。「影のマスク」は町の門にある「影のしるし」を探せばたどり着けるのだが探せとしか言われておらずその後どうするのかを説く必要がある。 門には2種類の印があり一つはマスクの場所、一つはマスク自体の印でマスクが見つかった後に繋がるものである。 まずは、門の側面にしるされたものがその先にも同じものがあるのでたどっていく。すると壺があるのでその中にマスクが入っている。 手に入れたらマズのところに行き、夜になるのを待ってマスクを付けてマズに再度話しかけるとイベント発生して助けにいく。助けた後は再度マズのところにいくのだが牢の近くの町の壁に門にしるされたもう一つのしるしと同じものがあるのでそこに行くとバイクのパーツが買える。ただし、夜でないとそれは出てこないようである。