외부 postgresql에서 localhost로 포트 전달

외부 postgresql에서 localhost로 포트 전달

애플리케이션 서버 외부에서 호스팅되는 여러 데이터베이스가 있습니다. 예를 들면 다음과 같습니다. 데이터베이스 인스턴스:

192.168.178.21:5432
192.168.178.22:5432
192.168.178.23:5432

애플리케이션 서버:192.168.178.11

이제 외부 데이터베이스를 포트 5431-5433으로 전달하고 psql을 사용하여 localhost에 연결할 수 있기를 원합니다.

psql -h 127.0.0.1 -p 5432 -U <user> -d <db>

나는 얻다:

psql: could not connect to server: Connection refused
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

이 서버의 서비스는 localhost에 대한 연결만 허용합니다. 그렇지 않으면 해당 포트는 SSH를 통해 전달됩니다.

방화벽 위장을 시도했습니다.

firewall-cmd --zone=internal --add-masquerade --permanent
firewall-cmd --zone=internal --add-forward-port=port=5432:proto=tcp:toport=5432:toaddr=192.168.178.22 --permanent
firewall-cmd --reload

어떤 아이디어가 있나요? (CentOS, Fedora, Redhat 소개 등 여러 매뉴얼을 모았습니다)

편집: 해당 서버에는 Postgres 포트만 열려 있고 다른 것은 없습니다. 나는 다음과 같은 postgresql 인식 게이트웨이를 사용하려고 노력할 것입니다.바삭바삭한 에이전트

답변1

postgresql이 어떻게 작동하는지에 따라 다릅니다.pg_hba.confpostgresql 서버가 나열된 IP 주소를 수신하는지 여부를 구성합니다.

그렇지 않고 이러한 서버에 SSH로 연결할 수 있으면 -Lssh(1) 예제에서 SSH 포트 전달 옵션을 사용할 수 있습니다.

ssh [email protected] -L 5431:localhost:5432 -f
ssh [email protected] -L 5432:localhost:5432 -f
ssh [email protected] -L 5433:localhost:5432 -f

다음과 같은 방법으로 동일한 효과를 얻을 수 있습니다.~/.ssh/config

Host db1
        Hostname 192.168.178.21
        LocalForward            localhost:5431 localhost:5432

Host db2
        Hostname 192.168.178.22
        LocalForward            localhost:5432 localhost:5432

Host db3
        Hostname 192.168.178.23
        LocalForward            localhost:5433 localhost:5432

그 다음에

ssh -f db1
ssh -f db2
ssh -f db3

관련 정보