私のローカルネットワーク上で実行されている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は常に中間サーバーがそれと通信していることを確認します。
これを行うための正しいコマンドがないので、後で戻って編集します。