내 로컬 네트워크에서 실행 중인 postgres 서버가 있지만(모든 서비스일 수 있다고 생각함) 데이터베이스에 액세스하기 위한 중개자로 사용하려는 서버(AWS EC2 인스턴스)가 있습니다.
지금까지 로컬 서버에서 중개 서버로의 역방향 SSH 터널을 성공적으로 설정했습니다.
autossh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -fnN -R 5432:localhost:5432 user@intermedite-host
터널을 서버로 "전달"한 다음 내 localhost:5432
랩톱에 연결하면 랩톱에서 데이터베이스에 액세스할 수 있습니다.
하지만 제가 하고 싶은 것은 단순히 intermedite-host:5432
.
지금까지 나는 또 다른 SSH 터널을 내부 전용으로 사용해 보았지만 intermedite-host
... iptables
너무 어려워서 이해할 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.
답변1
귀하가 요청한 내용(아래)을 수행할 수 있는 방법이 있지만 이것이 실제로 귀하의 경우에 적합한지 알고 싶습니다.
AWS에서 원하는 것을 달성하는 표준 방법은 Linux 호스트 전달 포트 대신 AWS 기능을 사용하는 것입니다. 이는 일반적으로 다음과 같습니다.
- 자체 퍼블릭 IP 주소로 서비스(PostgreSQL)를 실행하는 EC2 인스턴스를 설정합니다. 보안 그룹을 사용하여 공용 액세스를 하나의 포트(5432)로만 제한할 수 있습니다.
- 또는 하나를 설정NAT 게이트웨이AWS에서는 포트 5432를 EC2 시스템으로 전달합니다.
Stunnel 구성 사용
이를 공용 인터넷에 노출하므로 중개 시스템을 SSL 게이트웨이로 만드는 것을 고려할 수 있습니다. 당신은 설정할 수 있습니다터널SSL 암호화 포트 5432를 인터넷에 제공하고 암호화되지 않은 끝을 PostgreSQL 서버로 전달합니다.
IP 테이블을 사용하여 구성
Linux에서 이를 수행하려면 중간 컴퓨터를 NAT 게이트웨이로 설정할 수 있습니다. 그러나 문제는 PostgreSQL이 아웃바운드 트래픽(클라이언트로 돌아오는)을 처리하는 방법을 올바르게 이해하는지 확인하는 것입니다. 당신이 필요로 할:
- 모든 아웃바운드 트래픽(포트 5432)을 중간 서버를 통해 공용 IP 주소로 라우팅하도록 PostgreSQL 서버를 구성합니다.
- 두 개의 NAT(공용 하나, 개인 하나)를 사용하여 중간 서버를 구성합니다. 이런 식으로 PostgreSQL은 항상 중간 서버가 그것과 통신하고 있음을 확인합니다.
이 작업을 수행하기 위한 올바른 명령이 없으므로 나중에 돌아와서 편집하겠습니다.