🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Q&A

解決済

1回答

2121閲覧

Debian にPostgreSQLをインストールまでは完了したのですが、外部接続を許可できずに悩んでおります。(さくらVPSでポート5432を解放できない件)

yskmtg

総合スコア0

さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

0グッド

1クリップ

投稿2020/12/05 02:12

前提

Debian にPostgreSQLをインストールまでは完了したのですが、外部接続を許可できずに悩んでおります。

  • 環境

macOS Catalina
バージョン 10.15.7
MacBook Air (11-inch, Early 2015)
サーバー:さくらVPS
debian_version 10.6
psql (PostgreSQL) 10.15

実現したいこと

  • Debian 10.6(buster)にPostgreSQL 10.15をインストールし、外部接続を許可する。

※Debian 10.6(buster)にPostgreSQL 10.15をインストールまでは完了しております。

参考にしたサイト:

](https://docs.koheitakahashi.com/entry/2019/06/30/124716)

発生している問題・エラーメッセージ

上記のサイトで外部接続を手順通りに行いました。

下記のコードで外部接続できると思ったのですが、、、

# psql -U ユーザー名 -d postgres -h ホスト名(さくらVPSの)

実行するとこんなエラーが・・・

psql: error: could not connect to server: Connection refused Is the server running on host "●●●●●●●●.vs.sakura.ne.jp" (IPアドレス) and accepting TCP/IP connections on port 5432?

さくらVPSでポート5432をパケットフィルタ設定で解放したのですが、上記のエラーが出てしまいます。
イメージ説明

外部接続の手順

postgresql.confファイルを編集。

# vi /etc/postgresql/10/main/postgresql.conf

59行目付近のlisten_addressesの記載を'localhost'から*に変更

listen_addresses = '*'

pg_hba.confファイルを編集

# sudo vi /etc/postgresql/10/main/pg_hba.conf

認証を受け付けるIPの範囲を追記

# IPv4 local connections: host all all 127.0.0.1/32 md5 host all all 160.16.150.148/0 md5 #自分のIPアドレス/0を追記

編集が終わりサービスをリスタート

# sudo /etc/init.d/postgresql restart

Macからlocalhostではpsql に接続できるのですが、自分のさくらVPSサーバーからは接続できません。

localhostから接続

yusuke-MacBook-Air:~ yusuke$ psql -U yusuke -d postgres -h localhost psql (13.1) Type "help" for help. postgres=#

●●●●●●●●.vs.sakura.ne.jp(さくらVPS )から接続

yusuke-MacBook-Air:~ yusuke$ psql -U yusuke -d postgres -h ●●●●●●●●.vs.sakura.ne.jp psql: error: could not connect to server: Connection refused Is the server running on host "●●●●●●●●.vs.sakura.ne.jp" (IPアドレス) and accepting TCP/IP connections on port 5432?

試したこと

  • telnetでの確認でConnection refusedとエラーが出たので、さくらVPSのポート開放の設定に原因があると考えたのですが、何ができるのかわからず、、、
yusuke-MacBook-Air:~ yusuke$ telnet ●●●●●●●●.vs.sakura.ne.jp 5432 Trying IPアドレス... telnet: connect to address IPアドレス: Connection refused telnet: Unable to connect to remote host

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/12/05 02:29

SSHトンネルするほうが自然かと思うのですが、直接開放したい理由があるのでしょうか?
yskmtg

2020/12/05 02:49

@maisumakun さんご回答いただきありがとうございます。 私が初心者でお答えする内容に誤りがございましたら申し訳ございません。 現在さくらVPSにSSHアクセスして、さくらVPSからDBにログインできる状態です。 ``` yusuke@さくらVPSホスト:~$ psql -U yusuke -d postgres -h localhost Password for user yusuke: psql (10.15 (Debian 10.15-1.pgdg100+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. postgres=# ``` ですが、ローカル環境から外部接続でさくらVPSのDBに直接アクセスした方が手順を省けて簡単かと思った次第でございます。
scsi

2020/12/05 02:52

Debian詳しくないですが、サーバ側のfirewallの設定が必要じゃないですかね。。 あと /0 じゃなくて /32 じゃないですか?
maisumakun

2020/12/05 02:53

> ローカル環境から外部接続でさくらVPSのDBに直接アクセスした方が手順を省けて簡単かと思った その状況でもSSHトンネルを活用できます。直接開放するのはリスクも高いですが、それでもやらないといけませんか?
ockeghem

2020/12/05 03:22

VPSのコンソールで sudo ufw status を実行するとどうなりますか?
yskmtg

2020/12/05 03:32

@scsiさんご回答いただきありがとうございます。 さくらVPS側のfirewallの設定ですね!調べてみます。 > あと /0 じゃなくて /32 じゃないですか? ここの/数字をよく理解できておらず失礼しました。/32という数字を調べて修正いたします。
yskmtg

2020/12/05 03:34

@maisumakunさん さくらVPSのDBに直接アクセスする場合でもSSHを活用できるんですね!知らなかったです。。。また、直接開放するのはリスクも高いとのこと承知しました???? SSHトンネルについて調べてみます。
yskmtg

2020/12/05 03:35

@ockeghemさん ご回答いただきありがとうございます。 >VPSのコンソールで sudo ufw status を実行するとどうなりますか? 下記のようになりました。 ``` [sudo] password for yusuke: sudo: ufw: command not found ```
ockeghem

2020/12/05 03:39

回答ありがとうございます。ufwではなくiptablesになっているようですね。
yskmtg

2020/12/05 05:22 編集

@ockeghemさん 失礼いたしました????‍♂️ utwはLinuxの「Netfilter」によるファイアウォールを管理して操作するためのiptablesをラッパーした機能のことなんですね。またiptablesの設定を簡略化してくれるのがufwということ理解しました。 ファイアウォールの知識もなかったため、調べて理解いたしました。 ※ファイアウォール(Firewall):企業などの内部ネットワークをインターネットを通して侵入してくる不正なアクセスから守るための“防火壁”。 ufwではなくiptables -L を実行し、下記の内容が出てきました。 ``` $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ```
hentaiman

2020/12/05 06:30

フィルタリングにしかFW使ってないならFW停止してしまえば?さくらのフィルターで十分でしょ
yskmtg

2020/12/06 12:25

@hentaimanさん コメントいただきありがとうございます!FW停止する手もあるんですね!調べて試してみます!
hentaiman

2020/12/06 13:21

うん、とりあえずFW停止して疎通確認出来たらSSLにするなりsshポートフォワード設定するなりしたら良いと思います。 5432でSSL設定するよりはポートフォワードの方が楽なので、ポートフォワードの方法調べて設定する事をおすすめします。
guest

回答1

0

自己解決

これまでの順序を再確認したところ、postgresql.confファイルのlisten_addresses = '*'# listen_addresses = '*'となっておりました。 私の確認不足でお時間お取りしてしまい申し訳ございませんでした。

また、下記で得られたグローバルIPをpg_hba.confに設定(/32をつける)してアクセスすることができました!

% curl inet-ip.info xxx.xxx.xxx.xxx

アドバイスいただきありがとうございました!

投稿2020/12/07 04:58

yskmtg

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問