web-dev-qa-db-ja.com

特定のドメインが別のサーバーにトンネリングされるように設定する方法

私は大学でリサーチアシスタントとして働いています。多くの場合、httpまたはsshを介して自宅から大学のリソースに接続したいのですが、外部からのアクセスがブロックされています。したがって、フロントエンドのsshサーバーがあり、そこから他のホストとの間でsshを実行できます。 httpアクセスの場合、次のようなsshトンネルを設定することをお勧めします。

ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi

ブラウザのプロキシ設定をポート1234を指すように設定します

すべてうまく機能していますが、他のすべてのインターネットトラフィックがこのプロキシサーバーを経由することを許可したくないので、大学に接続するたびに、この手順を再度実行する必要があります。

私は何が欲しいですか:

  • コンピューターにログインするたびにsshトンネルを設定します。証明書を持っているので、パスワードは必要ありません
  • 常に最初にssh-serverを介していくつかのワイルドカードドメインをリダイレクトする方法があります。そのため、ブラウザにintra.university.fiと入力すると、リクエストは透過的にトンネルを通過します。大学内の別のリソースにSSH接続したい場合も同じです

これは可能ですか? httpの部分については、これを簡単に実行できるように、独自のローカル透過プロキシを設定する必要があると思います。 sshの部分はどうですか?

8
Peter Smit

これは本当に簡単です。私はこれを常に使用して、本番Webサーバーの背後にあるデータベースにアクセスしています。

1)最初の部分は質問でした 少し前に尋ねました

〜/ .bashrcでエイリアスを作成できます。

その行を追加します

alias university_ssh="ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi" 

そして、ソース〜/ .bashrcでbashrcファイルをリロードします

そして今、あなたはあなたのデータベースサーバーにsshするためにuniversity_sshとタイプする必要があるだけです。

2)次に、/ etc/hostsファイルを編集してuniversity.loc(.locは偽のTLD)を追加し、ローカルホストを指すようにする必要があります。 :: 1234。たとえば、私のhostsファイルは次のようになります。

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       code2design.loc    localhost

これで、code2design.locと入力して、PC上のローカルバージョンのcode2design.comにアクセスできます。

3)最後に、ブラウザプロキシは不要になったため、何も戻さないように変更します。 university.locと入力すると、そのトンネルを使用するように設定されます。

更新しました

ポートをhostsファイル(127.0.0.1:portまたはlocalhost:port)に追加してみます。仮想が心配な場合は、.locTLDを実際の.fiTLDに変更することもできます。ホストが壊れています。

したがって、あなたにとっては次のようになります。

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       university.fi    localhost:1234
6
Xeoncross

これにはプロキシ自動設定(PAC)ファイルを使用します。ここに貼り付けますが、ウィキペディアにはニースがあります サンプルファイル

ブラウザで、[プロキシ自動構成の使用元]をそのファイル(共有Webサーバーでホストされている可能性があります)にポイントします。ほぼすべての半ばまともなブラウザで動作します。

ただし、SSHトンネルを設定する必要があることに注意してください。 (または、PACで定義されている特定のホストにのみssh -D SOCKSプロキシを使用しますが、SOCKSはOperaでは機能しません。)

[〜#〜]編集[〜#〜]:そうですね、あなたの側からはあまり関心がないようですので、答えを広げていきます少し。 :-)

SSHトンネルを自動的に設定するには、Sudo apt-get install autosshして、これをcrontabに配置します。

@reboot autossh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi

または、sshコマンドを~/.bash_profileまたは〜/ .bashrcに配置することもできます。

ここで、プロキシするドメインと直接接続するドメインを決定する場合は、次のようなPACを作成します。

function FindProxyForURL(url, Host)
{
    var httpProxy = 'PROXY 127.0.0.1:1234';
    var noProxy = 'DIRECT';
    var default_ = noProxy;

    // Host matches that use the HTTP proxy.
    var httpProxyMatches = [
        'intranet.university.fi',
        'webmail.university.fi',
        '*yourwildcard*'
    ];
    // Check all Host patterns and network masks.
    for (var i = 0; i < httpProxyMatches.length; i++) {
    if (shExpMatch(Host, httpProxyMatches[i])) {
        alert('HTTP ' + httpProxy + ' match for Host: ' + Host + '; url: ' + url);
        return httpProxy;
    }
    alert('DEFAULT ' + default_ + ' for Host: ' + Host + '; url: ' + url);
    return default_;
}
alert('PAC loaded at ' + new Date() + '.');

次に、Firefoxの詳細なネットワーク設定に移動し、そのファイルをポイントします。成功すると、JavaScriptコンソールに「PACがロードされました」というメッセージが表示されます(Ctrl + Shift + J)。 Firefoxを使用していない場合は、「アラート」行を削除してください。

これはかなり基本的なPACですが、途中で役立つはずです。鉱山はまた、IPネットマスクを調べて内部/外部サービスなどを決定します。

どうやって仲良くしているのか教えてください。

8
janmoesen

FoxyProxy( http://foxyproxy.mozdev.org/ )は、自動プロキシ選択の問題を解決します。それはまさにこの目的のために設計されていますが、もちろん、Firefoxに固有のものです。

1
TREE

免責事項:これはテストされていません。ただのアイデアです。

おそらく、ローカルシステムのホスト構成を編集するだけで、プライベートドメインに「プロキシ」を使用させることができます。すべてのドメインを手動でlocalhostにポイントし、トンネルを確立した場合、次のことは行われません。

http://privateaccess.tld:1234

リクエストを送信する:

localhost:1234

これは実際には内部ネットワークプロキシサーバーへのポートフォワードです。リクエストは引き続き同じドメインに対するものである必要があるため、プロキシサーバーは正しく応答する必要があります。

またはそう私には思えます。繰り返しますが、ただのアイデアです。

1
Tim Lytle

最も簡単な方法は、サーバーに接続するsshコマンドを〜/ .bash_profileに追加することです。

次に、Firefoxで、このプロキシ設定を使用する別のプロファイルを作成します。

$ firefox -profilemanager

デスクトップに実行するショートカットを作成できます

firefox -P ProfileName -no-remote

No-remoteコマンドを使用すると、Firefoxの複数のインスタンスを同時に実行できます。この新しいプロファイルでプロキシ設定を構成していることを確認してください。

このように、大学のリソースが必要なときはいつでも、この代替のFirefoxプロファイルを開くだけです。

0
teknikqa

Ssh(ssh -D <portnumber> publicsshserver.university.fi)を使用してSOCKS-proxyを設定し、プロキシとして127.0.0.1と<portnumber>を使用するようにブラウザを設定してみてください。次に、プロキシを使用する必要があるドメインと使用しないドメインを追加できます。他のサービス(vncなど)の場合は、 tsocks を使用してトンネルを使用することができます。

0
Jimmy Hedman

この問題については、sshだけでなくVPNの使用を検討する必要があります。 openvpnを調べてください。

0
txwikinger