SSH 経由で特定のドメインにアクセスするためにプロキシを透過的にバイパスする

SSH 経由で特定のドメインにアクセスするためにプロキシを透過的にバイパスする

私は、数十のファイアウォールと大規模なプロキシ サーバーを備えた大企業で働いています。時々、分離されたネットワークにあるいくつかのサービスにアクセスする必要があり、そのネットワーク内のサービスにアクセスできます。現在、私は次のアプローチを採用しています。

  1. ローカルトンネルを設定するアプリがあります。

    ssh -L 30001:super01.secret.host:3419 secretServer1
    ssh -L 30002:super01.secret.host:8080 secretServer1
    ssh -L 30011:super02.secret.host:8080 secretServer1
    ssh -L 30021:super03.secret.host:4000 secretServer2
    
  2. 私は各Webサービスのブックマークを(例えば)localhost:30001に指定しています

  3. 開発するローカル プログラムを localhost:30001 URL を使用するように構成します。

動的ポート転送と Socks プロキシを使用する別の方法があることは知っていますが、それを構成するのは本当に面倒です (いずれにしても、会社のシステム全体のプロキシが必要であることを考慮すると)。

super01.secret.host:3419 に送信されるリクエストをリダイレクトし、localhost:30001 経由でルーティングする方法はありますか? そうすると、secretServer1 サーバー経由で super01.secret.host にアクセスするように定義するアプリ (スクリプト) を実装でき、ローカル ポート転送を開いてリダイレクトを作成できます。または、これを構成するさらに良い方法はありますか。

私の主な目標: - すべてのネットワーク設定をシステム全体に行う - 分離されたネットワークからサービスに透過的にアクセスできるようにする (つまり、そのネットワークから super01.secret.host:8080 にアクセスする必要がある場合、ローカル マシンから同じホストとポートにアクセスできるようにする) - 残りのすべてのネットワークを以前と同じように機能させる (つまり、リクエストは noproxy リストにない限り、会社のプロキシを経由してルーティングされる)

答え1

sshプロキシとiptablesを使用したポート転送の両方を使用できます。

  1. いつものように、SSH プロキシを設定します。

  2. ポート転送、例:最初のリダイレクト用

    iptables -A PREROUTING -t nat -i eth0 -p tcp -d secretServer1 --dport 3419 -j DNAT --to localhost:3001
    

注記: これはテストされていません

関連情報