일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- M8200
- self-signed ssl
- 한 번만 실행
- 기념일관리
- 설치제거
- MFC
- crashlog
- 블루투스 헤드셋
- phpmailer
- Antialiasing
- 크래시로그
- ClickOnce
- VS2008
- PDA
- 데이터 전달
- EUC-KR
- .net
- 자바스크립트
- JavaScript
- docker
- plcrashreporter
- GDI
- php
- Font
- protobuf-c
- C#
- 와이브로
- C/C++
- net
- API
- Today
- Total
~☆~ 우하하!!~ 개발블로그
PostgreSQL 접속 설정하기 본문
우분투 22.04 에 PostgreSQL 설치하기 포스트에서 PostgreSQL 을 설치하는 방법에 대해서 알아봤는데, 설치를 했다면 접속을 해봐야 하지 않겠어?
그래서 이번에는 PostgreSQL 에 접속할 수 있도록 설정하는 방법과 접속하는 방법에 대해서 알아보려고 해.
접속 설정
현재 나는 MicroServer 의 폐쇄망 네트워크 안에 가상 시스템들을 만들고 있어. 내가 구성한 폐쇄망 네트워크의 IP 주소범위는 10.10.1.0/24 이지. 이 IP 주소 범위는 외부에서 접근할 수 없는 사설 IP 대역이야. 게다가 pfSense 라는 방화벽이 버티고 있어서 이 방화벽을 뚫지 않고는 내부 폐쇄망에 접근이 허용되지 않거든. 그만큼 보안성이 높다는 거지.
그렇다면 어떻게 폐쇄망 네트워크 안에 있는 가상 시스템에 접속할 수 있도록 할 수 있을까?
만약 폐쇄망 네트워크가 아니라 공유망 네트워크에 PostgreSQL 이 설치되어 있다면, DB 서버 외부에서 접근할 수 있도록 설정하는 방법은 이렇게 돼.
$ sudo vi /etc/postgresql/14/main/postgresql.conf
/etc/postgresql/14/main/postgresql.conf 파일을 열어서 listen_addresses 의 값을 디폴트값인 ‘localhost’ 에서 ‘*’ 로 수정하는 방법이야.
listen_addresses 가 주석처리되어 있는 경우에는 기본적으로 localhost (또는 127.0.0.1) 값이 적용되거든. 아래 대기포트 목록은 postgresql.conf 수정전의 상황이야.
이번에는 postgresql.conf 의 listen_addresses = ‘*’ 으로 수정해서 적용한 후의 대기포트 목록이야.
보다시피 127.0.0.1:5432 값이 0.0.0.0:5432 로 바뀌었지? 외부 IP 에서 5432 포트를 사용해서 접속하면 모두 받아들여진다는거지. 물론 방화벽이 열려있다는 가정하에 말이야.
그리고 pg_hba.conf 파일의 내용도 수정을 해 주어야 해.
$ sudo vi /etc/postgresql/14/main/pg_hba.conf
pg_hba.conf 파일은 클라이언트 연결 제어 내용을 관리하는 파일인데, IPv4 local connections: 영역이 외부에서 들어오는 연결을 제어하는 내용이야.
초기값으로는 127.0.0.1/32 와 같이 해당 서버에 대해서만 연결이 가능하도록 설정되어 있는데, 외부에서 들어오는 접속도 허용해야 하기 때문에 0.0.0.0/0 으로 수정을 해준거지.
여기까지 수정했다면 postgresql 서비스를 재시작시켜줘야 하지.
$ sudo systemctl restart postgresql
이제 내부망에 존재하는 다른 PC에서 PostgreSQL 서버에 접속은 가능해졌어(DBeaver 프로그램을 사용해서 연결을 테스트해봤지).
DB명과 사용자계정은 우분투 22.04 에 PostgreSQL 설치하기 포스트에서 생성한 정보를 활용했어.
DBName : db01, Username : userid01, Password : userid01_pw01
그런데, MicroServer 환경에서는 pfSense 방화벽에 5432 포트가 허용 목록에 들어있지 않아서 외부로부터의 접속이 불가능한 상황이지. 그렇다면 pfSense 방화벽이 5432 포트에 대한 포트포워딩 규칙을 추가하여, 5432 포트를 postgres-ubuntu 서버로 연결시키면 되겠네.
일단 pfSense 방화벽에 포트포워딩 규칙을 추가해볼께.
Firewall / NAT 메뉴로 이동한 다음 “Port Forward” 탭을 선택한 뒤 아래쪽의 “Add” 버튼을 눌러서 추가하면 돼.
TCP 프로토콜에 대해서 5432 포트로 들어오는 패킷을 10.10.1.11 (postgres-ubuntu) 주소의 5432 포트로 연결해준다는 설정이야. Description 에는 이 규칙을 이해할만한 설명을 기록해주면 돼.
이제 외부에서 postgresql 서버에 접속이 가능해졌는지를 확인해보자.
접속 테스트
DBeaver 를 실행시켜서 연결하고자 하는 서버주소로 pfSense 의 외부 IP 주소(192.168.219.254)를 기록해주면 돼. postgres-ubuntu 에 할당된 내부 IP 주소인 10.10.1.11 로 입력하게 되면 네트워크 대역대가 달라서 아예 접근이 안되는건 잘 이해할거야.
그런데 이렇게 설정해 놓는건 보안상 위험해. 나만 이 DB서버에 접근할 수 있는게 아니라 전세계 인터넷에서 이 서버에 접근이 가능하게 되지. 내가 DBeaver 에서 pfSense 서버에 할당된 192.168.219.254 라는 사설 IP 주소를 사용했지만, pfSense 는 웹서비스를 위해서 도메인으로 연결될테고 IP 주소가 도메인과 연결되는 순간 PostgreSQL 서버는 외부 인터넷 세계와 연결이 되어 버릴거야.
접속 보안
그래서 pfSense 의 5432 포트포워딩 규칙은 제거해서 5432 포트가 직접 PostgreSQL 서버로 연결되지 않도록 설정하는게 바람직하지.
포트포워딩 규칙을 삭제하더라도 외부에서의 접속이 가능하도록 설정해 둔 상태이기 때문에 내부 폐쇄망 안에 있는 서버들이 PostgreSQL 서버에 접속하는건 가능해.
그러면 PostgreSQL 서버에 접속해서 DB 작업을 해야 할때는 어떻게 해야 하냐고? 조금 불편하더라도 VPN 을 연결해서 마치 내부망에 존재하는 PC처럼 10.10.1.X 대역의 IP 에 접근되도록 구성하면 돼.
VPN 을 구성하는 과정은 다른 포스트에서 자세하게 다루어볼 예정이야. (준비되면 알려줄께)
'개발환경' 카테고리의 다른 글
DNS 관리하기 – DDNS 와 함께 (0) | 2024.03.04 |
---|---|
pfSense – VPN (WireGuard) 구성하기 (0) | 2024.03.04 |
우분투 22.04 에 PostgreSQL 설치하기 (1) | 2024.03.04 |
pfSense – HAProxy (0) | 2024.03.04 |
pfSense 모습 살펴보기 – 초기 설정 (2) | 2024.03.04 |