PerlさんPerlくん
[pgSQL] リモートからの接続
最終更新:
atwikimyj
-
view
今回はpgADMINがpgSQLが動作しているPCではない別のPCからの操作を想定します。
pgSQLサーバが動作しているPCのインターフェイスの指定と、pgSQLサーバを外部
から操作するPCの認証に関する設定を行います。
pgSQLサーバが動作しているPCのインターフェイスの指定と、pgSQLサーバを外部
から操作するPCの認証に関する設定を行います。
[1]postgresqlのサーバーホスト内でどのインターフェイスを使うかの指定
サーバに複数のネットワークカードが存在したりする場合、特定にIPからし
か通信を認めない、というような指定ができます。
デフォルトはlocalhostとなっており、内部からの操作のみ受け付けています。
たとえばpgADMINのようなクライアントソフトがpgsqlサーバと同じPCで使用
する場合はlocalhostでいいのですが、そうじゃない場合が多いと思います。
その場合はpgSQLのホストとなっているPCのIPアドレスを指定するか、もしくは
特に指定する場合がなければ'*'を指定します。
一応、pgSQLが動作しているPCのIPアドレスをifconfigで確認し、それを入れます。
か通信を認めない、というような指定ができます。
デフォルトはlocalhostとなっており、内部からの操作のみ受け付けています。
たとえばpgADMINのようなクライアントソフトがpgsqlサーバと同じPCで使用
する場合はlocalhostでいいのですが、そうじゃない場合が多いと思います。
その場合はpgSQLのホストとなっているPCのIPアドレスを指定するか、もしくは
特に指定する場合がなければ'*'を指定します。
一応、pgSQLが動作しているPCのIPアドレスをifconfigで確認し、それを入れます。
cd /usr/local/pgsql/data vi postgresql.conf
ここで以下の行
listen_addresses = 'localhost'
のlocalhostをpgSQLが動作するサーバPCのIPを指定する。
listen_addresses = '192.168.99.10'
[2]pgSQLサーバを外部から操作するPCの認証に関する設定
pg_hba.confを書き換える。
ここはちゃんとした理解が必要。
[2-a]pgSQLsvrのホストが仮想PCの場合でGatewayにNATを使っている場合
ゲストOS(仮想PC)は固定されているので問題ない。クライアント側の
IPがNATのもので有効ならばそれを指定すればいけるはず。
pg_hba.confを開き、修正する。
ここはちゃんとした理解が必要。
[2-a]pgSQLsvrのホストが仮想PCの場合でGatewayにNATを使っている場合
ゲストOS(仮想PC)は固定されているので問題ない。クライアント側の
IPがNATのもので有効ならばそれを指定すればいけるはず。
pg_hba.confを開き、修正する。
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# kaihatsu
host all all 192.168.99.0/24 trust
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# kaihatsu
host all all 192.168.99.0/24 trust
このような記述がある。pgSQLはこれを上から読んでいって、問題ない場合
のみ接続を許す。この記述の後ろに最終行のようにipアドレスを入れて
ここからの接続を許可させる。(上記の例はVMwareでの設定なので
パスワードや暗号化などの設定がないので注意)
のみ接続を許す。この記述の後ろに最終行のようにipアドレスを入れて
ここからの接続を許可させる。(上記の例はVMwareでの設定なので
パスワードや暗号化などの設定がないので注意)
[2-b]pgSQLsvrのホストがリモートサーバの場合はいくつか気をつける
必要がある。
必要がある。
* 通信の暗号化 * パスワードによる認証
が最低限必要になる。
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Remoto
hostssl postgres 192.168.99.0/24 md5
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Remoto
hostssl postgres 192.168.99.0/24 md5
ここで注意するのは、3つ目の要素にて、IPアドレスが
たとえ単一であっても、
172.20.143.89
ではだめで、マスクを設定する必要がある。
マスクはスラッシュを使ったCIDR表記のみ許可され、
それ以外の表記だとエラーになります。
単一の場合はスラッシュの後ろのネットワークアドレス部
を示す値が32になります。
172.20.143.89/32
これでOK。
IPアドレスやCIDR表記についての説明は
このページが詳しいです。
たとえ単一であっても、
172.20.143.89
ではだめで、マスクを設定する必要がある。
マスクはスラッシュを使ったCIDR表記のみ許可され、
それ以外の表記だとエラーになります。
単一の場合はスラッシュの後ろのネットワークアドレス部
を示す値が32になります。
172.20.143.89/32
これでOK。
IPアドレスやCIDR表記についての説明は
このページが詳しいです。
Tef-Room - Windowsセキュリティ対策
グローバル・プライベートIPアドレス、サブネットマスク、CIDR
http://www.tef-room.net/main/ip-address.html
グローバル・プライベートIPアドレス、サブネットマスク、CIDR
http://www.tef-room.net/main/ip-address.html