中間サーバーを使用してPostgresサーバーをパブリックネットワークに公開する

中間サーバーを使用してPostgresサーバーをパブリックネットワークに公開する

私のローカルネットワーク上で実行されているpostgresサーバーがありますが(すべてのサービスであると思います)、データベースにアクセスするための仲介者として使用したいサーバー(AWS EC2インスタンス)があります。

これまで、ローカルサーバーから仲介サーバーへのリバースSSHトンネルを正常に設定しました。

autossh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -fnN -R 5432:localhost:5432 user@intermedite-host

トンネルをサーバーに「転送」してから自分のラップトップにlocalhost:5432接続すると、ラップトップからデータベースにアクセスできます。

しかし、私がしたいことは単にintermedite-host:5432

今まで私は別のSSHトンネルを内部専用にしてみましたがintermedite-host...iptables難しいので理解できません。どんな助けでも大変感謝します。

答え1

あなたが要求したもの(以下)を実行する方法はありますが、これが実際にあなたのケースに適しているかどうかを知りたいです。

AWS で必要なものを達成する標準的な方法は、Linux ホスト転送ポートの代わりに AWS 機能を使用することです。これは一般的に次のようになります。

  • 独自のパブリックIPアドレスでサービス(PostgreSQL)を実行するEC2インスタンスを設定します。セキュリティグループを使用して、パブリックアクセスを1つのポート(5432)のみに制限できます。
  • または1つを設定NATゲートウェイAWS はポート 5432 を EC2 システムに転送します。

Stunnel 構成の使用

これをパブリックインターネットに公開するので、仲介システムをSSLゲートウェイにすることを検討することができます。設定できますトンネルSSL暗号化ポート5432をインターネットに提供し、暗号化されていない端をPostgreSQLサーバーに転送します。


IP テーブルを使用した構成

Linuxでこれを行うには、中間コンピュータをNATゲートウェイとして設定できます。しかし、問題は、PostgreSQLがアウトバウンドトラフィック(クライアントに戻る)を処理する方法を正しく理解していることを確認することです。あなたが必要とする:

  • すべてのアウトバウンドトラフィック(ポート5432)を中間サーバーを介してパブリックIPアドレスにルーティングするようにPostgreSQLサーバーを設定します。
  • 2つのNAT(パブリック1つ、プライベート1つ)を使用して中間サーバーを構成します。このように、PostgreSQLは常に中間サーバーがそれと通信していることを確認します。

これを行うための正しいコマンドがないので、後で戻って編集します。

関連情報