네트워크

Dbeaver 연결 시 127.0.0.1은 되고 localhost는 안되는 이유

알면 알 수록 재밌다! 2024. 6. 6. 13:30

 

# 네트워크 인터페이스와 루프백

 

 

localhost와 127.0.0.1은 DNS 방식으로 호출하냐 TCP/IP 방식으로 호출하냐 차이

 

  1. 루프백 인터페이스:
    • 127.0.0.1은 IPv4의 루프백 주소로, 컴퓨터의 로컬 네트워크 인터페이스를 통해 내부적으로 자기 자신과의 통신을 가능하게 합니다.
    • 일반적으로 운영 체제는 루프백 인터페이스를 자동으로 설정합니다. Linux에서는 lo라는 이름을 가지고 있으며, 윈도우에서는 명시적인 이름 없이 내부적으로 처리됩니다.
  2. localhost와 인터페이스:
    • localhost는 일반적으로 127.0.0.1로 해석되지만, 시스템에 따라 IPv6 루프백 주소인 ::1로 해석될 수도 있습니다
    • 네트워크 설정에 따라 localhost가 올바르게 작동하지 않을 수 있다. 예를 들어, 시스템이 IPv6 주소를 우선으로 해석하고 애플리케이션이 IPv6를 제대로 지원하지 않으면 문제가 발생할 수 있습니다.
  3.  IPv4와 IPv6 이해
    • 127.0.0.1: IPv4 루프백 주소입니다. 이는 네트워크 계층 3 (Network Layer)에서 동작합니다.
    • ::1: IPv6 루프백 주소입니다. 이는 네트워크 계층 3 (Network Layer)에서 동작합니다.

/etc/hosts 파일을 확인하여 localhost가 올바르게 설정되어 있는지 확인해야한다.

// IPv4

127.0.0.1   localhost
::1         localhost

// IPv6만 설정
::1         localhost

// IPv4만 설정
127.0.0.1   localhost

 

때문에 IPv4, IPv6 둘 다 하고 싶은지 한개만 하고 싶은지에 따라서 /etc/hosts 파일을 설정해줘야합니다.

 


# postgresql localhost로 접근 안 될 때

 

이렇게 파일을 설정했음에도 불구하고 localhost로 접근이 안 된다면, 애플리케이션 또는 데이터베이스 클라이언트의 설정을 확인해봐야 합니다. 일부 클라이언트는 localhost 대신 127.0.0.1을 명시적으로 사용해야 하는 경우도 있다.

 

1. PostgreSQL 설정 파일 확인

PostgreSQL이 localhost를 올바르게 인식하고 있는지 확인합니다.

1-1. pg_hba.conf 파일 확인

PostgreSQL의 호스트 기반 인증 설정 파일인 pg_hba.conf 파일을 열어 localhost와 관련된 항목이 있는지 확인합니다. 이 파일의 경로는 보통 PostgreSQL 데이터 디렉토리에 있습니다. 예를 들어, Linux에서는 /etc/postgresql/<version>/main/pg_hba.conf입니다.

 

sudo nano /etc/postgresql/<version>/main/pg_hba.conf

 

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

# IPv6 local connections:
host    all             all             ::1/128                 md5

 

이 설정은 다음을 의미합니다:

  • 127.0.0.1/32: IPv4 주소인 127.0.0.1을 통해 접속할 수 있습니다.
  • ::1/128: IPv6 주소인 ::1을 통해 접속할 수 있습니다.

 

1-2. postgresql.conf 파일 확인

PostgreSQL의 메인 설정 파일인 postgresql.conf 파일을 열어 listen_addresses 설정을 확인합니다.

sudo nano /etc/postgresql/<version>/main/postgresql.conf

 

다음과 같이 설정되어 있는지 확인합니다:

listen_addresses = 'localhost'

 

이렇게 하면 postgresql을 localhost로 연결이 가능합니다.

 

 


정리

용어

  • IPv4 주소: 127.0.0.1 (루프백 주소)
  • IPv6 주소: ::1 (루프백 주소)
  • localhost는 보통 호스트 파일에 설정된 대로 127.0.0.1과 ::1로 해석됩니다.

이유

1. 호스트 파일 설정: 대부분의 운영 체제에서 localhost127.0.0.1로 해석되도록 /etc/hosts 파일에 설정되어 있습니다.(mac 기준)

127.0.0.1   localhost
::1         localhost

만약 이 설정이 누락되거나 잘못되어 있다면 localhost가 제대로 해석되지 않을 수 있습니다.

 

2. 네트워크 인터페이스

루프백 인터페이스: 127.0.0.1은 루프백 인터페이스의 주소로, 운영 체제가 부팅될 때 자동으로 설정됩니다. 이는 네트워크 인터페이스 카드(NIC)와 상관없이 항상 존재합니다.

# Linux에서 루프백 인터페이스 확인
ifconfig lo

mac 기준 위 명령어로 확인 가능합니다.

 

3. IPv6 문제

IPv6을 사용하는 경우 localhost::1로 해석되기도 하는데, 일부 시스템에서는 IPv6 설정이 완벽하지 않을 수 있습니다. 이로 인해 localhost가 올바르게 해석되지 않을 수 있습니다.

 

4. DNS 해석 문제

일부 애플리케이션은 localhost를 DNS를 통해 해석하려고 시도할 수 있으며, 이 과정에서 문제가 발생할 수 있습니다. 반면 127.0.0.1은 해석 없이 직접 사용됩니다.

 

5. Postgresql에서 설정문제

localhost가 제대로 동작하지 않는다면, 호스트 파일 설정을 확인하고 pg_hba.conf 파일에 IPv4와 IPv6 설정을 추가하여 PostgreSQL에 대한 접근을 설정하면 됩니다.