前回、L2TP/IPsecの開通確認でWOL(Wake on LAN)でブロードキャストされたマジックパケットがフィルターに引っかかり破棄されている事を確認した。今回はそれを貫いてみようと思う。
通りすがりさんの提案(VPNは使わず大胆に穴をあける設定)
コメント欄に、通りすがりの匿名さんが解決案を提案してくれた。ありがとうございます。今回はこの設定は使わなかったが、頂いた提案をまとめるとこの様な事である。
# ip filter フィルタ番号 pass * 192.168.0.255 udp * 任意のポート番号
# nat descriptor masquerade static 1000 任意の番号 192.168.0.255 udp 任意のポート番号
# pp select 1
pp1# ip pp secure filter in 設定されていたフィルタ番号 フィルタ番号
pp1# no pp select 1
# ip lan1 wol relay broadcast
# save
#
#
これは、何をやっているかというと、遠隔地からマジックパケットを投げる任意のポート番号をあらかじめ決めて置いて、そのポートを使って我がネットワークの基幹ルーターであるところのRTX810のWAN側のIPアドレス宛にやって来た通信を、LAN側のネットワークのブロードキャストアドレス(この例では192.168.0.255)に静的IPマスカレード(NAPT)で転送してしまおうと言うのである。その為に、あらかじめ決めた任意のポートにWAN側のインタフェースに来た通信を通すようにフィルタに穴をあけるて、さらに、WAN側のインタフェースがブロードキャストパケットを中継するのを許可する様に設定している。
この設定を行うと、WAN側に割り振られたグローバルアドレス宛に、決められたポート番号に向かって起動させたい機器のMACアドレスを指定したマジックパケットを投げると、LAN内の機器を起動させる事が出来るようになる。これは便利だ。VPNなど張らずとも外から機器を起動させる事が出来る。この設定も有効そうだが、VPNを使っておらず開ける穴が大きいので注意する必要がある。
ここからが本題、VPNを通ったWOLのみ許可する
ご提案いただいた設定も便利だが、今回は折角L2TP/IPsecのセキュアな通信に成功しているのだ。これを使わない手はない。前回張ったVPNの中にそのままマジックパケットを流そうと思ったらLAN側のブロードキャストアドレス宛のパケットが破棄されていることがSyslogから知れた。問題はポートが閉じられている事では無く、あて先がブロードキャストアドレスだという事が問題であるようだ。VPNで内側のIPが振られていると言えども、外から来たブロードキャストとして認識されている様だ。
WOLは、落ちている機器のNIC(Network Interface card)に対してMACアドレスを頼りに投げられるのでプロトコルの仕様上、マジックパケットはブロードキャストされる。ツールを使ってIPアドレスを指定してWOLを投げても、全てブロードキャストされる運命なのだ。ブロードキャストアドレスに対する通信は、時として膨大なトラフィックを生みかねない。悪意を持って使われては事だ。だからこそ、ブロードキャストはデフォルト設定では禁じられている。今回は、これを許可してみる。しかし、外から来たやつ誰でもいいと言うわけではない。VPNを通ってきた奴だけOKとしたい。つまり、こういう事だ。
# ip lan1 wol relay broadcast
# save
#
lan1と言うのはWAN側のインターフェースである。外から来てlan1のインターフェース通るブロードキャストをLAN側に中継することを許可した。しかし、静的IPマスカレードも、フィルターに穴をあける事もしない。許可はしたが、フィルターで破棄されるようにしたのだ。実質意味のない設定のように思われるかもしれない。ジュースを飲む事を許可しますが、コップの使用は許可しませんと言っているようなものだからだ。しかし、ここを大手を振って罷り通る事の出来る人が居る。VPNさんである。VPNさんは自前のコップを持っている。それはLANの内側へ自由に出入りすることが許されていると言う意味だ。ブロードキャストのみ許されていなかったのだ。だから許可してやった。するとどうでしょう、L2TP/IPsecでVPNを張ってマジックパケットを投げれば、WOLによるサーバ起動に成功したではありませんか。VPNを通ったWOLのみ許可され、VPNさん以外は弾かれる設定の出来上がりだ。
因みに、YAMAHAルーターには、”ip filter directed-broadcast“というコマンドもある。あて先がブロードキャストアドレスとなっているパケットの扱いを指定するコマンドだ。各インターフェース共通なので注意が必要である。”ip filter“コマンドで指定した条件から好きなものをフィルタ番号で選び、マッチしたブロードキャストパケットだけを通すという物だ。このコマンドは、”ip lan1 wol relay“コマンドではじかれたパケットをのみを対象としている。”ip lan1 wol relay“コマンドはマジックパケットかどうか、マジックパケットなら通すかどうかの判断を行い、”ip filter directed-broadcast“では”ip lan1 wol relay“が通さないと判断したパケットに敗者復活のチャンスを与えるイメージだ。”ip lan1 wol relay“コマンドを”off”に設定し、全てのマジックパケットを通さない様にして置いて、”ip filter directed-broadcast“コマンドで細かな設定を行えば、WOLの為に開く穴をもっと絞る事が出来るだろう。その場合はマジックパケットかどうかという選択はできず、あて先、送信元、ボート番号という条件でのフィルタリングとなるので、やはり事前にマジックパケットを投げるポートを決めて運用する必要がある。
マジックパケットのポート番号は発信するツールによって、”7″であったり”9″であったり”2034?”であったり、任意に設定出来たりと様々だ。そもそもマジックパケットはLayer2のブロードキャスト・フレームなので本来ポート番号などどうでもよいのだ。そもそも電源が落ちていてIPアドレスも割り振られていないNIC(Network Interface Card)に対してMACアドレス宛でパケットを送り付けるのだから当然と言えば当然である。それを送信側の都合でIPv4パケットとして構成して送り付けるので、受け取る側はポート番号など気にしておらず、それを気にしているのは、その通信を通してよい物かどうか判断しようとする中継者達なのである。ここが本来単純であるはずのWOLのややこしポインツであると私は思う。
ともあれ、ブロードキャストに対してマジックパケットかどうかで判断したいのか、ポートやあて先などで判断したいのか、どのような設定がお好みかは、管理者次第と言う所だろう。smurf 攻撃を防ぐためには、”ip filter directed-broadcast on”として置くことが望ましいとコマンドリファレンスでは推奨している様だ。
また一つ、我が環境にアガルタに近づいた。自前LANに遠隔地からアクセスすることで、自由を手に入れる。今流行のクラウドと真逆の方向性を持つスーパーローカルな思想だが、提供されるソリューションは同一の物である。昨今言われているクラウドとは、単なるサーバクライアント型であり本来の意味でのクラウドではない。顧客は雲の上に置いたつもりでも、事業者から見ればただのWebサーバだ。そんなものはクラウドでもなんでもないと、一言も二言も云いたいのだが、それはまた別の機会に譲る事にする。我がアガルタへの野望は尽きない。
3 件のコメント!
[…] 参考URL:YAMAHAルーター RTX810のL2TP/IPsecをWOLで貫くに至るいきさつ […]
I love your blog
I have read this article and enjoyed it
Thank you!