プロが教える店舗&オフィスのセキュリティ対策術

わたしは素人ですが、今のインターネットではサイバー攻撃と言って、ひとつのサーバーに多数がアクセスしてサーバーをダウンさせるということが行われています。
なぜこんなことが可能なのか、改善することは出来ないのかを素人ながら考えたので、詳しい方は是非ご意見をお聞かせください。

たとえば、P、Q二人のユーザーがサーバーSからデータを取っていたとします。
途中にはA、B、C、Dのルーターを経由してデータが送られるとします。
データのパスは、

P<-C<-B<-A<-S
Q<-D<-B<-A<-S

と流れるとします。つまり、サーバーSから、ルーターA,Bまでは同じパスを通りますが、Bからはデータは分岐して、PへはC経由、QへはD経由とします。

P,Qが全く同じデータをサーバーから取ってくる場合は、にもかかわらず、サーバーは2回アクセスされて、A,Bには全く同じデータが2回通ることになるのですよね。だから、ユーザー数が同時に何万とかになるとパンクすると認識しています。
ですが、Pが最初にサーバーにアクセスして、そのデータがルーターA,Bに残っていたら、QはデータをSまで取っていかずに、ルーターBに残っているデータを取ってきたらいいのではないですか。

中継ルーターに残る残存時間はサーバーSのデータを作る際に指定します。HPを作る際に指定します。
このデータはほとんど変更しないので60秒にしよう、とか、このデータはリアルタイムに変更されるから、0.1秒ごとの更新にしようとか。

で、中継ルーターにはこのルーター残存時間も送られるので、この時間内であれば中継ルーターにはこのデータは残っているので、ほかの人がアクセスした場合はサーバーSまでいかずに、中継ルーターからデータをとってきたらいい。

こうなっていると、多量にサーバーを攻撃しようとしても、中継ルーターでデータが返されるので攻撃できませんよね。

また、大阪の人1000人が東京のネットテレビを見ようとすると、東京ー大阪間のネットに1000人分の全く同じデータが流れますが、上記のようになっていると、東京ー大阪間にもデータが1人分づつしか流れないのでネットの使用効率が劇的に向上すると思うのですが、現在はそうはなっていないのですか。

ミラーサイトというのがあるのは知っていますが、これはリアルタイムに自動的にされるものではなく意図的に作られるものなので、これはちょっとはずして考えています。

A 回答 (9件)

1.全ての映像配信プログラムはL3/L4を直接制御するように書き換えるの?


2.1000人が同じ番組と書いているけど、6Mbpsの番組としても全部で6Gbpsだよね数百Gbpsのルータにとってどれだけありがたいの?
3.L3と同じようにハードウェア処理と書いているけど、IPv4で50万ルートくらいでしょ(IPv6は知らないけどかなり省略できるはずなのでそれほど多くない)
  一方、安めのルータだって1秒に1000万パケットは処理できて、60秒間同じパケットがあるかマッチングしたら、1パケットあたり6億回の比較だよね。しかも、キャッシュヒットの比較もあるので倍。50万回比較が12億回比較に増えたらつらいよね。
4.誰が儲けるの?ルータを持っているのはキャリアだけど、通信料が減ったら収入も減るよね。機器代が減るって考えもあるけど、普及が怪しい仕組みに投資はしないでしょうね。
5.そうそう、映像要求のパケットからどうやっても目的の映像と判断するの?
  IPがわかったとしても、クライアントは次の映像のLUTはわからないから要求できないし、ルータもLUTからじゃ次に渡すパケットがわからないよね。
    • good
    • 0
この回答へのお礼

メリットはすでに書きましたが、極端な話、読み出し専用のサーバーの場合、サーバーと最初のルーター間は一人分のデータ転送で済みますよね。そのルータから100台のルーターにつながり、さらに100人づつに繋がっていれば、1万人が同時にアクセスしてもサーバーからは1人分のデータが出てくるだけです。
なので、ユーザーが増えてもサーバーをさほど増強しなくても済むし、トラフィックも劇的に減るし、ルーターを通るデータ量も減って負荷が軽減されるし、これらは大きなメリットだとは思いませんか。
1000人が動画で6MBpsっていうのもそれだけではなく、ほかの読み取りリクエストすべてが圧縮されるでしょう。
ユーザーも貧弱なサーバーをアクセスしてもネットを重く感じることはなくなります。

わたしのシステムを簡単に言うと、宛先のIPアドレスとオプション番号でサーバーへリクエストします。
サーバーはLUTを見て、それぞれのオプション番号にあった処理をしますが、データをサーバーから読み出す(送出)、サーバーに書き込む、それ以外の処理、に分かれます。
サーバーから読み出す処理にはどこのデータを読み出すかが書いてあります。ルータの残存時間はこの場合のみ設定し、他の場合はゼロで素通りになります。

動画のリアル配信の場合は、たとえばオプション番号1にして読み出し専用にしてサーバーは1秒ごとにサーバー上の取り出すデータ領域を書き換えていって、中継ルーターの残存時間を1秒にしてやる。ユーザーのブラウザからは1秒ごとにデータを読みに行く。すると、ルーター内のデータも1秒経てば消えるので、次に最初にアクセスした人がサーバーから次のデータを中継ルータにバッファしてくれて最新のものになってるし、ブラウザでバッファリングして表示してやれば問題ないのではないですか。
送出するデータには通し番号をつけたりこの辺はいくらでも方法は考えられると思いますよ。

マッチングですが、今のルーターでも専用LSIチップを使って入ってきたIPアドレスを、1クロックでテーブル上の数万のIPアドレスとの一致チェックってしてるのでしょ。それにカウンタをつけて、単純にトラフィックモニタみたいにすればいいだけじゃないですか。
1秒にもこだわる必要はありません。単位時間あたりに通る多いものから選択するハードウエア上のアルゴリズムはいくつか考えられます。この場合は、IPアドレス+オプション番号分のビットを一致チェックすることになります。

お礼日時:2011/02/23 19:36

>ここでは、既存のIPv4とかで実際に実装可能かとかの話をしているのではありません。


>こうなっていたらこんなメリットがあるのでは、という仮定、架空の話をしているだけですので念のため。
実装の可否とか、帯域削減の量的評価とか無しの仮想アイディアだったら何でもいいじゃん。
いつでもどこでも、機械なんか必要なしで脳内に映像が届く仕組みで。

ちなみにNo7でいっぱい書いてもらった方法も実現できませんよ。ちゃんと読んでないですが
    • good
    • 0
この回答へのお礼

おや、まあ。
もっといろんな人と議論してみたいですね。

お礼日時:2011/02/27 20:28

L3のIPパケットだと送信元と宛先のIPアドレスしか判断材料がないと思いますが、何を送信しているのか(どのファイルへのリクエストなのか、そもそもHTTPのリクエストなのかすら)もわからないQ→SのIPパケットに対してキャッシュしているやはり何かもわからないS→PのIPパケットを無条件に返信しようということなのでしょうか。



そんなものに意味があるとは思えませんから、お考えの事を行うにはL7での対応が必要となるでしょう。

しかし、サーバもクライアントも意識しない単なる中継機器が勝手にアプリケーションレベルの応答を返すシステムなんてプライバシーやセキュリティ面でも疑問ですし、トラブルシューティングも難しくなる可能性が高くなるように思います。
    • good
    • 0
この回答へのお礼

ここでは、既存のIPv4とかで実際に実装可能かとかの話をしているのではありません。
こうなっていたらこんなメリットがあるのでは、という仮定、架空の話をしているだけですので念のため。
No4,7さんへの回答を見てみてください。

お礼日時:2011/02/23 19:41

No5です。



私の書き方が悪かったのかも知れませんが、例えばクッキーはそれぞれのアクセスにつけるもので受信者全て同じ内容ではありませんよね。
認証という言葉のみを受け取られた様ですが、認証も一例で『送られてくる情報に違いの全くない/送られてくる情報の内容が全く同一』事は非常に少ないと書いたわけです。

また、アクセス状況はサイト運営者の知りたい情報でもあるわけですから、パケットが途中のルータで帰ってしまうような方法が導入されても回避するための手段を講じられる可能性も高いです。(利用者の動向のみならず、例えばどれ位のアクセスが行なわれているという情報も広告効果をアピールするために必要だったりしますし)

アクセス解析を行い、利用者の趣向も考えて提供する情報を変えていくのは普通に行なわれている事ですし。
アクセス数を材料に広告効果をアピールする事は普通に行なわれている事ですし。


> HPが人気化してサーバへのアクセスが増えてくるとサーバーを増強なんて当た
> り前にしていますよね。これって単位時間あたりのアクセス数が増えるからでは
> ないのですか。確かに多くの人が全く別々のデータを取るのであれば、このシス
> テムは意味はありませんが、実際はそうではないと思っているのですが。

そういうサイト(それなりにアクセスの多い)でクッキー使って利用者の動向を全く追ってないサイトは非常に少ないと思いますが。

返答にでてきたYahooもログインしてない状態でもクッキー送ってきてますし。
※返事見て確認しました。利用者からyahoo側の送信データもyahooから利用者側への受信データも全く同じではありませんでした。gooは下記ながらログアウトして試して書き直したりするのは面倒そうに思い試してません。でも、送ってそうな気はします。


httpヘッダなどを見てみられるとわかると思いますよ。
    • good
    • 0
この回答へのお礼

クッキーですかあ。なるほど、それは全く考えていませんでしたね。確かにそうですね。
チェックした商品、とか、最近見た物、とかですか。
確かに同じHPをアクセスしても、ユーザーごとにレイアウトが全く違ったり表示が違うと問題ですね。
でも、ブラウザにはキャッシュもあるし、一度、ユーザー固有の情報を取ってきたらこれをパソコン側に置いといて、あとは共通のデータをとってきてブラウザ側でパソコン内の固有データと合成して表示とか工夫できませんかね。ここは考えないといけませんね。ユーザー固有の情報は頻繁に変わるものではないでしょう。
ご指摘のように、もちろん、毎回異なるデータをアクセスして全く異なる表示をするような場合は、この方法は無力です。

それとカウンタですが、これがこの方法では使えないのがデメリットです。
ですが、たとえばカウンタ部はアプレット等で実装して、リロードしたり押したりするたびにサーバーに最低限のアックのみを要求するようにして、ここでは残存時間をゼロにしておけば、強引ですが対処はできますね。こればっかりは必ずサーバーにいかないといけませんね。対処方法はあると思います。

お礼日時:2011/02/23 19:25

> P,Qが全く同じデータをサーバーから取ってくる場合は、にもかかわらず、サーバーは2回アクセスされて、A,Bには全く同じデータが2回通ることになるのですよね。


> だから、ユーザー数が同時に何万とかになるとパンクすると認識しています。

全く同じデータという場合がそんなに多いのでしょうか。
それなりの規模なサイトではほぼ接続ごとに違う認証系のデータも送ってますので、P,Qが全く同じデータを受け取ってくるわけではないですよね。

同じコンテンツを取得していても、2者の受け取るデータは全く同じわけではないのが普通だと思います。(取得するコンテンツは全く同じでも、送られてくるパケットの内容は全く同じでない)


> 大阪の人1000人が東京のネットテレビを見ようとすると、東京ー大阪間のネットに1000人分の全く同じデータが流れますが、上記のようになっていると、東京ー大阪間にもデータが1人分づつしか流れないのでネットの使用効率が劇的に向上すると思うのですが、現在はそうはなっていないのですか。

テレビの放送は視聴者全員が同じ時刻にみます。
今回のご提案はその1000人は0.1秒単位で同じ時刻に同時にアクセスした場合にしか良くなりそうに思えないのですが。
テレビの様に同時に見れば可能ですが、そういう事をお書きになっている様にも見えません。


> 現在はそうはなっていないのですか。

http://e-words.jp/w/IPE3839EE383ABE38381E382ADE3 …

ユニキャストとマルチキャストってご存知ですか。
    • good
    • 0
この回答へのお礼

ログインしたり毎回暗号化するようなサイトならそうかもしれませんが、普通の企業のHPとかってそんな認証とかってあるのですか。
たとえば、YAHOOやgooのHPにログインせずに入るときにも、そんな認証とかしているのですか。それはなんのために必要なのですか。
わたしは、たとえばテレビを見て、これ面白いな、と思って関連するHPを見るとアクセスが集中していてなかなか見れないとか、しょっちゅうありますよ。夜になるとみんながネットを使いはじめるのでネットが重くなるなんてよくある話だと思いますが。認証があるHPとは全く思っていませんでしたよ。
具体的にはどういうサイトなのでしょうか。

マルチキャストは知っていますよ。でもそれってHPを作る人は誰でも自由に使えるのですか。わたしはそういうのは認可制とかにしないと使えないものだと勝手に思っていたのですが。

HPが人気化してサーバへのアクセスが増えてくるとサーバーを増強なんて当たり前にしていますよね。これって単位時間あたりのアクセス数が増えるからではないのですか。確かに多くの人が全く別々のデータを取るのであれば、このシステムは意味はありませんが、実際はそうではないと思っているのですが。
わたしのシステムではHPを見る人が増えても、サーバの増強はそんなに必要のないシステムです。
アクセスする人が増えても時間的に分散していれば、サーバーは増強する必要はないですよね。
ですが、同じ時間帯にアクセスが集中するからサーバーを増強すると思っていますが、60秒というのはその辺に兼ね合いから適当にこんなもんで、と出した数字です。60秒以上の間隔でアクセスするものをまとめる必要はないでしょう。
そのときはサーバーを増強する必要もないと思います。

それとサイバー攻撃対策にもなります。一度に大量にアクセスするタイプです。もちろんサイバー攻撃は巧妙でそう単純ではないとは思いますが、簡単に言えば、読み出すだけのサイトなら、攻撃できなくなりますね。
書き込みなどのあるサイトであれば、全くダメですが、そのときには書き込み禁止にして読み出し専用のサイトにしてしまえば、すぐに攻撃は無効化されて普通のユーザーも普通にサイトを閲覧できるようになりますよね。

お礼日時:2011/02/22 19:37

まとめるほどのことでもないので殴り書きしますけど



>なので、もしルーターの負荷が増えてくれば、最悪ルーター側で強制的にこの時間をゼロにしてやれば現行のものとかわらないので、ルーターがパンクする、ということは考えていません。
>というか、今のルーターでも許容量を越えればパンクしたような状況になるのでは。
1.
ciscoのcrsのバックプレーンが300Tbpsほどでその稼働率を10%としても3TByte/secほどデータが通るのですよね。
当然HDDなんかには書き込めず、DDR3メモリが20GByte/sec以下ですから、150枚並列で動かさないと駄目ですね。でもこれでも書き込みに精一杯で読み出しはできない。
容量を見ても60秒で180TByteか。。キャリアクラスで1GBを5万円としても90億円か

2.
キャリアクラスのルータはハードウェア処理でL3までしか見ていませんからCPUの負荷が上がりません。
一方CPUを使ってL7を解析してキャッシュするなんて。。。ああ恐ろしい


て、わけでデータを止めて解析するくらいなら10,000倍位の量のデータ流したほうが安上がりな世の中なんです。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
わたしもアプリケーション層での解析とかは全く想定していません。
あくまでもL3、ハードウエア処理です。
私が考えているのは、先方サーバーのIPアドレスと16or32ビットのオプション番号をヘッダー内に用意して、サーバー内にはルックアップテーブルを用意して、どこのサーバのどこのデータ(LUTから)を取ってくるのかをヘッダーだけから判断できるようにするものです。
IPv6では128ビットのアドレスを想定しているのですから、これくらいのハードウエアマッチングはルータでも出来るでしょう。
サーバーに近いルーターはトラフィック量が100分の1、1万分の1になれば、それだけ処理速度も遅くできますから、どうでしょうか。そんなに無謀なものでもないと思いますが。甘いですか。
ルーターのバッファにはすべてのデータを溜め込む必要はなく、単位時間あたりアクセス回数が多いものを溜めればいいと思っています。
cgi等の処理はサーバーアプリとアプレット等を使ってLUTを書き換えたりしながらうまくやればある程度はできるのではと思っていますが、そもそも単位時間あたりに大量の同じデータを取り出さなければ、残存時間をゼロにしてしまってもいいかなとか。
今は、アクセス数が増えてくるとサーバーを増築して巨大サーバーにしなければ対応できませんが、この方法だと、サーバーのコストも相当減らせると思っているのですが。

お礼日時:2011/02/22 19:10

非常に面白い考えですが、現実的にはちょっと無理があります。


質問者さんの提唱する仕組みを作ろうとすると、ルータは流れるパケットの中身(コンテンツ)を全てチェックしなければなりません。
インターネットの基幹ルータは数Gbps~数十Gbps単位でトラフィックを捌いているので、はっきり言ってコンテンツデータまで見る余裕はないです。また、仮に見ようとした場合、基幹ルータの配下にあるサーバは何百何千何万台もあるわけで、そのデータを一時的とはいえ溜め込むだけでも大変だと思いませんか?
それに通信機器の機能を増やすと、構成が複雑になって値段が上がり、さらに故障も増えます。たぶん、今の料金でISPに繋ぐことはできなくなるでしょう。
また、ルータが応答を返す場合、大量のアクセスがあった際の負荷はサーバではなくルータにかかることになります。ルータの許容量を超えるアクセスが発生すると、サーバの前にルータが落ちることになります。こうなると影響範囲は現在の仕組みの時よりも大きくなってしまいます。これはまずいですよね?

質問者さんが提示された様になっていないのは、それなりに理由があるからなんです。今の仕組みが完璧というわけではありませんが、それなりに合理性を持たせた仕組みなのです。

質問者さんが提示したのと似た様な仕組みでは、既に回答がありますが「キャッシュサーバ」「マルチキャスト」の概念があります。
また、「一度データを取った人がサーバ機能(の一部)を代替する」という構造を突き詰めると、P2Pにつながっていきます。BitTorrentとかですね。

いろいろ調べてみて下さい。

この回答への補足

もう少し言うと、同時にいろんなところから大量にアクセスされた場合ですが、
上記の
P<-C<-B<-A<-S
Q<-D<-B<-A<-S
というパスで、
Bの下にC,Dだけでなく100個くらい連なっているとしても、B<-A間では、1回のやり取りでデータをAからBに持ってこれるので、B-A間のトラフィック量は劇的に減ります。
また、Aの下にBだけでなく100個とかたくさんあった場合も、A<-S間のデータのやりとりは1回で済むので、A-S間のトラフィック量も劇的に削減されます。

上記で、B,C,Dなどの中継ルータがこの機能を持つことによって、全体のトラフィック量が劇的に減り、ルーターA、サーバーSの負担も劇的に減ることが最大のメリットです。

なので、プロバイダの基幹ルーターAだけがキャッシュを持ってるとかそういう話ではありません。
B,C,Dなどの下流の中継ルーターがキャッシュを持っているというシステムです。

補足日時:2011/02/21 12:39
    • good
    • 0
この回答へのお礼

丁寧なお返事ありがとうございました。
私のアイデアの核は一般的なキャッシュのようにずっと持っておくのではなく、1秒以下、長くても60秒以下の短期間保持するものです。
なので、もしルーターの負荷が増えてくれば、最悪ルーター側で強制的にこの時間をゼロにしてやれば現行のものとかわらないので、ルーターがパンクする、ということは考えていません。
というか、今のルーターでも許容量を越えればパンクしたような状況になるのでは。

それとコンテンツを全てチェックする、ということは必要なのでしょうか。
HPにコメントを書き込むなどサーバー側にデータを送る場合は全部サーバーまでアクセスする必要が出てきますが、サーバーからデータを取り出すだけ(多分これの方が多い)なら、どこのサーバーのどの内容というヘッダー情報のマッチングだけでいいと思っていたのですが。
ていうか、そのレベルのものを考えていましたが、それでは不十分ですか。

構成が複雑になってコストがあがり、というのはそのとおりだと思いますが、一方でネット回線の容量に余裕が出て、そちらのメリットの方が大きいのでは、と思いました。
上記に書いたようなネットテレビやラジオのリアルタイム配信のような場合です。

それと、プロバイダの基幹ルーターが落ちれば大変なのはわかりますが、ネットの最大の特徴のひとつとして、中継ルーターが落ちても自動的に他の経路を探索してつながる、と思っていたのですが、実際には通りうるパスの経路数(通るルーターの個数ではない)って数個とか少なく、中継ルーターが落ちるとかなり甚大な被害が出るようなものなのでしょうか。
私が想定しているのはプロバイダの基幹ルーター(上記ではルーターA)ではなく、中継ルーター(B,C,D)なのですが。
もちろん大容量のものもあるでしょうが結構無数に分散してあると思っていました。

お礼日時:2011/02/21 11:21

キャッシュサーバーやマルチキャスト配信の分類ですね。



もうちょっとネットワークの勉強をされた方がいいと思います。

で、ルータでデータを保持するにしても
そのデータ量はどの程度の容量になるんでしょう。
プロバイダのルータなんて配下にあるサーバーの台数が何台あって
その容量は・・・
容量があったとしても大量のデータをキャッシュしてその管理に
必要なプロセッサパフォーマンスは・・・
膨大なルーティング情報やり取りするだけでも大変なのに。

過去、ネットワーク帯域が少なかった時に
プロバイダで同様の役目をするプロキシ(キャッシュ)サーバを
立てるのが流行りましたが今は廃止の方向ですね。
(データ量の増加と共にキャッシュのヒット率が・・)
    • good
    • 0
この回答へのお礼

お返事ありがとうございました。
こういう話を聞いていただける人がまわりにいないのでちょっと素朴な質問してみました。
素人ですいません。
No3さんのお返事にまとめてかいてあります。

お礼日時:2011/02/21 11:25

ルータにキャッシュサーバの機能を持たせただけでは?


http://e-words.jp/w/E382ADE383A3E38383E382B7E383 …

普通にやっていることだと思いますけど
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
中継のキャッシュサーバですね。

HPの中には何回アクセスされたか、アクセスカウンターがあるものがありますが、こういうキャッシュサーバーの向こうにカウンターつきのHPがある場合、このカウンターってどうなるのでしょうね。

よくわかりませんが、この手のキャッシュサーバは汎用的にどこにでも置くものではなく、特定のサーバーに対して人為的に置かれているものなのではないのでしょうか。

わたしのものも、アクセスカウンターは意味がなくなります。

お礼日時:2011/02/21 12:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!