
У меня есть сервер Postgres 9.1, работающий на порту по умолчанию 5432 на облачном сервере Ubuntu 12.04.
Я хочу открыть порт, чтобы иметь возможность выполнять удаленные запросы, но мне нужно открыть порт в таблицах IP, для чего необходимо указать протокол.Этот документне упоминает TCP/UDP и т. д.
Какой протокол следует разрешить в IP-таблицах?
решение1
Протокол — простой TCP/IP.
Из документации posgresql опротокол «фронтендов» и «бэкендов»:
PostgreSQL использует протокол на основе сообщений для связи между фронтендами и бэкендами (клиентами и серверами). Протокол поддерживается черезTCP/IPа также через сокеты домена Unix.Номер порта 5432зарегистрирован в IANA как обычный номер порта TCP для серверов, поддерживающих этот протокол, но на практике может использоваться любой непривилегированный номер порта.
Итак, относительноiptablesиспользуйте tcp
протокол, так как сокеты домена Unix не предназначены для использования по сети.
iptablesпример:
iptables <other_options> -p tcp -dport 5432 -j ACCEPT
Примечание:
Как отметилЛекенштейн, особенно разумно рассмотреть возможность активации SSL через это сетевое соединение (см. документацию postgresql относительноиспользование TCP-over-SSL).iptablesВ этом случае правило не изменится: тот же порт (5432), тот же протокол (tcp).
решение2
По умолчанию PostgreSQLt прослушивает TCP-порт 5432. Используйте следующие правила iptables, чтобы разрешить входящие клиентские запросы (открыть порт 5432).
-A INPUT -p tcp --dport 5432 -s xxx.xxx.xxx.xxx -j ACCEPT
Где xxx.xxx.xxx.xxx — это IP-адрес сервера, с которого вы подключаетесь, поэтому вы не открываете postgres для всего мира.
решение3
-A INPUT -p tcp --dport 5432 -s xxx.xxx.xxx.xxx -j ACCEPT
Изменит ли эта команда pg_hba?