띄띄뽱뽱
50
2020-09-14 19:35:22
5
2450

postgres 외부접속이 되지 않습니다. [unable to connect to server: timeout expired]


안녕하세요,

ubuntu16.04에서 postgre를 설치 후, 외부접속을 허용하게 하기 위하여 다음과 같이 명령어를 작성하였는데

pgadmin에서 접속하려고 보니 "unable to connect to server: timeout expired"이라고 뜹니다.


이 에러를 구글링해봐도 문제 해결이 되지 않고 있는데..

혹시 이것의 해결법을 아시는 분이 계시다면, 알려주실 수 있을까요?

netstat -ntlp 

vim /etc/postgresql/9.5/main/postgresql.conf
# listen_addresses = '*'  #(59번 라인)주석 풀고 수정
vim /etc/postgresql/9.5/main/pg_hba.conf
# host	all	all	0.0.0.0/0		trust  #IPv4 라인 수정
					        #md5는 pgadmin 안 된다는 글을 보고 trust로 함

sudo service postgresql stop
sudo service postgresql start

#방화벽 설정
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload

netstat -ntlp



#postgresql.conf



#pg_hba.conf


#pgadmin

0
  • 답변 5

  • seacont
    82
    2020-09-14 19:53:36

    우분투가 호스팅 서버(예: EC2)에 설치되어 있나요?

  • cyberjet
    228
    2020-09-14 20:54:04

    구글에서 검색하니. stackoverflow.com 사이트에

    비슷한 오류가 있네요.

    거기에는 pg_hba.conf 파일에 ip 주소가 등록되어 있지 않으면 등록해야 한다고 나와 있네요.

    https://stackoverflow.com/questions/60532791/timeout-expired-pgadmin-unable-to-connect-to-server


    위의 링크 참조해 보세요.

  • 띄띄뽱뽱
    50
    2020-09-15 00:01:10

    두 분 답변 감사합니다.


    제가 네트워크 개념이 많이 약해서.. 제대로 모르겠습니다만

    우분투는 클라우드에서 생성된 인스턴스를 사용하고 있습니다.


    그리고 저 사이트 봤었는데 제가 제대로 안 읽은 모양이네요.

    찾아주셔서 감사합니다. 그런데 mask라는 게 윈도우 cmd에서 쳐서 ㄴㅏ온

    서브넷 마스크가 255.255.255.0 이면 /24 를 적으면 되는 것인가요..?

    윈도우 ip랑 추가해도 해결되지 않네요..ㅠㅠ..

  • seacont
    82
    2020-09-15 08:36:33

    그렇다면 클라우드단의 방화벽도 열어주셨나요? EC2같은 경우는 security group의 inbound rules를 설정해주시면 됩니다. 위 스택오버플로우의 두번째 답변처럼 하시되 Type을 PostgreSQL로, My IP 대신 Custom으로, CIDR값은 0.0.0.0/0으로 해주세요. /0은 모든 IP주소로부터의 트랙픽을 허용하겠다는 뜻입니다. 만약 MyIP를 설정하면 해당 IP로부터의 트래픽만 허용하겠다는 뜻이고 따라서 CIDR값을 해당 IP주소/32로 해주셔야 합니다. /32는 IP주소의 범위를 나타낸다고 보면 되는데 32는 IP주소 1개를 의미합니다. 31은 IP주소 2개를 의미하고요.

    a.b.c.d/32 -> a.b.c.d
    a.b.c.d/31 -> a.b.c.d - a.b.c.(d+1) 또는 a.b.c.(d-1) - a.b.c.d
    a.b.c.d/24 -> a.b.c.0 - a.b.c.255
    a.b.c.d/0 -> 0.0.0.0 - 255.255.255.255

    pg_hba.conf 설정도 0.0.0.0/0으로 해주시면 모든 IP주소를 허용하겠다는 뜻이고 특정 IP주소/24로 하시면 해당 IP주소를 포함한 256개의 IP주소를 모두 허용하겠다는 뜻입니다.

    마지막으로 md5는 포스트그레스 접속시 암호를 요구하겠다는 뜻이고, trust는 암호없이도 접속을 허용하겠다는 뜻입니다.

  • 띄띄뽱뽱
    50
    2020-09-22 15:02:16

    안녕하세요 seacont님 !!

    seacont님이 말씀해주신 대로 하니까 해결되었습니다.

    단순하게 그 리눅스서버에서만 작업하고 포트포워딩하면 되겠다고 생각했는데

    근본적인 것부터 했었어야 하는 거였더라고요.

    너무 친절한 설명과 함께 자세히 알려주셔서 감사합니다.

    여러 군데에서 찾았던 자료들이 모여있어서 잘 모르지만 더욱 쉽게 이해할 수 있었던 것 같습니다.

    감사합니다 !

  • 로그인을 하시면 답변을 등록할 수 있습니다.