「ホームオフィス」、または仕事に行く必要がない場合
私は長い間それを夢見ていた、そして今、ついに、それが起こった! 私は自宅で仕事をして、(ほとんど)私が普段オフィスでしていることすべてをすることができます。 そして、ホームサーバーにリバースSSHトンネルを設定し、このトンネルを管理する方法を学んだので成功しました。
続き...
オフィスで、私はこれをしなければなりません:
- ORACLEでの作業(要求、手順など)-サーバーへの接続が必要です(ポート1521、1527)
- UNIX(スクリプト、ファイルのコピーなど)で動作します-telnetまたはSSH接続が必要です
- オフィス郵便
- 同僚とのコミュニケーション
- Habrおよびその他のサイトの表示
ホームプロバイダーが直接IPを提供しているという事実と、職場のネットワーク管理者のおかげで、稼働中のマシンからホームにアクセスできます。 この機会に、 VNCを介して自宅のラップトップ(私は3台持っています)から仕事にアクセスし、ホームサーバーとの間でファイルをコピーします。 もちろん、入り口にはNATとその他の機能を備えたルーターがあり、着信接続
しかし、私は自宅から作業中のマシンにアクセスできません。 会社のセキュリティポリシーでは許可されていません。 VPNと他のもの(今のところ)がありません。 お母さん、お母さん、私はどうしますか? く!
タスクを設定します:自宅からアイテム(1-5)の作業を提供します。 職場-Windowsでは、稼働中のコンピューターの電源は切れません。 自宅には、 LinuxベースのNSLU2サーバーがあります。 Apacheはサーバー上で実行されており、そのログは読み取りと分析に使用できます。
アイテム3、4、および5は、電話、ブラウザ、およびチャットエージェントを使用して自宅からアクセスできます。 しかし、通常の方法で1と2-方法はありません。
そして、ここに「甘いカップル」が来ます-作業マシン(以下、クライアントと呼びます)側のパテ とホームサーバー(以下、サーバーと呼びます)の側からsshd 通常、クライアントはSSH経由でサーバーへの接続を開き、安全な「トンネル」を確立します。 「そこ」の接続の開始者は常にクライアントです。
SSHのすべての機能については説明しません。そのうちの1つだけに興味があります。 いわゆる「リバーストンネル」をインストールすることができます。これは、サーバーが指定されたクライアントポートにデータを送信し、クライアントがこのデータをネットワーク上でさらに送信できることを意味します。
「逆トンネル」を設置すると何が得られますか? そして、このトンネルを介して、ホームネットワークから稼働中のネットワークにアクセスします。 通常、実稼働ネットワークからのみアクセス可能なすべてのサーバーと連携する機能。 トンネル構成を正しく設定する必要があります-どのサーバーポートがどのクライアントアドレスとポートにつながるか。 これは、接続を記述するときにPutty設定で行われます。
このようなトンネルを常に維持することは不可能です。通信が切断され、必ずしも必要ではありません。 解決策は、必要に応じてトンネルを設置することです(自宅でコーヒーを飲み、最終的に仕事を決めた後)。 はい、しかし誰も働いていませんか? 誰が接続を確立するためにPuttyを実行しますか? どなた? もちろん、祖父のファイト。 動作中のコンピューター自体が起動します。必要なのはそれだけです。 しかし、どのように? 動作中のコンピューターは、「接続を確立したい」という私の考えを読んで実行する必要があります。
残りはあなたの考えを具体化する方法を学び、それらを理解するために働くコンピューターに教えることです。 そして、すべてが簡単です。
私は自分の考えを通常のテキストファイルに具体化することにしました。 はい、考えはシンプルで短いものでなければなりません。 アップ! そしてトラは私の足元に座った。 -ある意味では、「UP」-接続を上げます。 「DN」-接続を省略します。 短くて明確。
クライアント/サーバーシナリオは次のようになります。
- 1行のテキスト(コマンド)でファイルを作成し(cmdファイルと呼びましょう)、それをホームページに配置して、作業コンピューターがコマンドを読み取って処理できるようにします。
- 稼働中のコンピューターがコマンドを読み取るのを待っています(Apacheログを監視しています)。 ワーキングアドレスからcmdファイルをダウンロードするGETリクエストが到着すると、コマンドが受信されたと言えます。
- 稼働中のコンピューターは、UPコマンド(接続を上げる)またはDN(それを中断する)を実行します。
- コマンドを実行した後、作業コンピューターは追加のパラメーター「?ANS」を含むcmdファイルをホームページから要求します。 GETを受け取ったので、チームは成功したと言えます。
残りは、クライアント側(オフィス内)およびサーバー側(自宅)ですべてのプロセスを自動化することです-それだけで、自宅で仕事をするために
クライアント用のスクリプトは、 フロントエンド (常に実行中)とバックエンド (コマンドを実行するために起動)で構成され、サーバー側管理用のスクリプトは1つだけです。
動作させるには、動作中のコンピューターでフロントエンドスクリプトを実行する必要があり、家に帰ることができます。 サーバーの自宅でスクリプトを起動し、 UPコマンドを指定すると、1〜2分でコマンドが完了したという確認を受け取ります。 すべて、プロダクションサーバーがホームネットワーク上にあるかのように作業を開始できます。 作業が完了したら、 DNコマンドを指定する必要があり、すべてがオフになります。
接続が切断されると、動作中のコンピューターを使用して数分後に自動的に接続が確立されます。 接続は存在しているように見えても機能しない場合は、 DNコマンドを実行し、数分後にUPコマンドを実行する必要があります。
将来の計画には、PSTN <-> VoIPゲートウェイをセットアップして、自宅で職場の電話を使用できるようにすることが含まれます。 さて、そして、いつものように、究極の目標は宇宙の捕獲です。