時々、自宅にいないときに自宅のコンピューターの電源を入れる必要があります。 通常、私は心配せず、出産休暇で家に座っている私の妻にそのようなリクエストで電話したり、メッセージを送ったりしました。 音声インターフェースを備えた非常に便利なリモートコントロールツール。 ただし、この方法にはいくつかの欠点があります-散歩に出かけたり、子供を寝かせたり、他の何かで忙しいです。 手元にあるものから簡単な解決策が欲しかった。
まず、マザーボードのBIOSでWake on LANをオンにします。これはすべて独自の方法で行われ、多くの場合、デフォルトで有効になっています。 私のPCの1つでは、このオプションも存在しません。常にオンになっています。
次に、WinBoxに移動してルーターに接続します(必要に応じて、SSHまたはHTTP(S)を使用して、WinBoxですべてを実行できます)。 RouterOSテキストコンソールを開いて/ツールセクション(またはWikiマニュアル)で探し回ると、次の構文でwolユーティリティを見つけることができます。
/tool wol mac=XX:XX:XX:XX:XX:XX interface=ifname
ifnameがマジックパッケージの送信元のインターフェイスの名前である場合、XX:XX:XX:XX:XX:XXはコンピューターのMACアドレスです。
すべてが単純に思えますが、電話からのWinboxは実際には起動せず、メモリからMACアドレスを入力するように拷問されます。 SSHを実行して1つのコマンドを送信できますが、これも長くて面倒です。 ファイアウォールを使用します!
フィルタールールから直接コマンドの実行を開始することは不可能です;すべてのアクションの中で、アドレスリストにアドレスを追加するのが最適です。 スクリプトからアクセス可能な、ルーターのオペレーティングシステムに新しいオブジェクトを作成できます。
入力チェーンに新しいルールを追加し、このチェーンのその他の許可ルールの間に配置します。 tcpプロトコルとdst-port-上位ポートのいずれかを指定します。
srcを選択するアクション(dstも可能)をアドレスリストに追加し、リーフの名前を指定します。
レコードの発生を追跡するには、スケジューラを使用します。 [システム]-> [Sheduler]に移動し、スケジューラータスクを作成し、名前を設定します。 開始時間:起動、および15秒ごとなどの目的の間隔を示します。
on eventフィールドに、簡単なスクリプトを記述します。
:local WAKEPC [/ip firewall address-list find where list="WAKEPC"] :if ($WAKEPC!="") do={ /tool wol mac=00:11:22:33:44:55 interface=bridge_lan /ip firewall address-list remove [find where list="WAKEPC"] }
正しいMAC、インターフェイス名、およびアドレスリストを指定することを忘れないでください。 このスクリプトは、アドレスリストの要素を検出すると、マジックパケットをコンピューターに送信するコマンドを実行し、その後、アドレスリストからエントリを削除します。
コンピューターの電源を入れるには、ブラウザーを開いてMikrotikのIPに移動し、ファイアウォールルールで指定したポートを指定します:http://your.router.net:port。その後、ファイアウォールはアドレスリストにエントリを作成し、スケジューラーのタスクはこれを見つけます。レコード、wolユーティリティを実行し、アドレスリストからレコードを削除します。 カブをペアリングするだけで、毎回入力しないように、お気に入りにアドレスを追加できます。
セキュリティを忘れないでください。この方法は何によっても保護されておらず、だれでもコンピュータの電源を入れることができ、正しいポートを知っているか、選択できます。 保護のために、VPN、ポートノッキング、ホワイトリスト、またはElusive Joe方式を使用できます-あなたが決定します。 この方法で複数のコンピューターを個別に有効にする必要がある場合、異なるポートで適切な数のルールを作成し、それぞれが独自のアドレスリストにアドレスをスローします。スケジューラータスクのスクリプトは、Ctrl + C、Ctrl + V、または皆のためのタスク-あなたが望むように。