Postgres Отказано в соединении при удаленном подключении с указанного c IP - PullRequest
0 голосов
/ 24 апреля 2020

Issue

postgres не позволяет мне подключиться через командную строку, если указан мой IP-адрес, независимо от того, какие обновления я пытаюсь внести в мой файл pg_hba.conf`. Если я запускаю своего пользователя с адресом, указанным в любом месте, то он работает без проблем.

Настройка

  • Я запускаю свою базу данных postgres вне виртуальной машины Google.
  • Я включил белый список брандмауэра для входящего трафика c с моего IP-адреса на TCP-порту 5432.
  • Я настроил то же самое при тестировании базы данных mariadb и могу подключиться к этому без проблем, поэтому не должно быть проблем с моим брандмауэром сервера.

Сообщение об ошибке

user@Work-Station-A:~$ psql -U user -h <google vm public IP> -p 5432 cheese
psql: could not connect to server: Connection refused
        Is the server running on host "<google vm public IP>" and accepting
        TCP/IP connections on port 5432?

/ etc / postgresql / 10 / main /pg_hba.conf

local   all             postgres                                peer
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             user           <my ip address>         md5
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

/ etc / postgresql / 10 / main / postgresql .conf

listen_addresses = '*'          # what IP address(es) to listen on;
port = 5432
ssl = on

Что я заметил

Когда я удаляю строку для моего 'user' ip-соединения в файле pg_hba.conf, я вижу, что порт слушает:

user@work-server:~$ ss -nlt | grep 5432
LISTEN   0         128                 0.0.0.0:5432             0.0.0.0:*
LISTEN   0         128                    [::]:5432                [::]:*

Но если я верну линию, ничего не вернется, когда я проверяю порты прослушивания на 5432. Если я запустил свой pg_hba.conf`, чтобы он был

host all user 0.0.0.0/0 md5

тогда он будет слушать, и я могу подключиться к моей базе данных без проблем. По некоторым причинам мой IP-адрес, кажется, заставляет порты закрываться, но я не смог понять, почему. Может ли кто-нибудь подтвердить, что я что-то не так делаю или нужно исправить, чтобы решить эту проблему, поскольку я не хочу, чтобы моя база данных была доступна откуда-либо?

1 Ответ

0 голосов
/ 24 апреля 2020

Можно также оставить базу данных открытой для всех IP-адресов и выполнить фильтрацию на сервере с помощью IPTABLES, создавая правило доступа только для вашего Publi c IP-адреса или нужных вам IP-адресов

Примерно так должно быть инструкция:

iptables -A INPUT -p tcp -m state --state NEW --dport 5432 --source <google vm public IP>

Вы можете прочитать немного IPTABLES в следующем LINK

...