Как я могу подключиться к Postgres, работающему на Хост Windows изнутри WSL2?

На моем компьютере с Windows запущен Postgres, и мне нужно подключиться к нему изнутри WSL2.

  • Служба Windows postgres работает
  • Я могу подключиться к нему из командной строки Windows, используя psql
  • IP-адрес виртуальной машины WSL2: 172.31.210.120 , сетевая маска 255.255.240.0 (определяется с помощью ipfconfig ).
  • IP-адрес хоста Windows изнутри виртуальной машины равен 172.31.208.1 (определен с помощью cat /etc/resolv.conf)
  • Я могу подключиться к простому веб-серверу, работающему на хост из виртуальной машины с curl http://172.31.208.1:8080 . Если я регистрирую IP-адреса входящих запросов, я получаю 172.31.210.120 , что подтверждает правильность обоих IP-адресов.
  • Я добавил следующую строку в pg_hba.conf : host all all 172.31.210.120/20 scram-sha-256
  • Я перезапустил службу Windows postgres

Если я попытаюсь подключиться к ней из WSL с помощью следующей команды:

$ psql --host=172.31.208.1 --port=5432 --user=postgres

Я получаю эту ошибку:

psql: error: could not connect to server: could not connect to server: Connection timed out
        Is the server running on host "172.31.208.1" and accepting
        TCP/IP connections on port 5432?

ПРИМЕЧАНИЕ. Я также пытался проверить соединение с помощью telnet , но это тоже не удалось.

Журналы в c: \ Program Files \ PostgreSQL \ 13 \ data \ log \ не показывают ошибок или каких-либо признаков попытки подключения.

Что мне здесь не хватает?

1
задан 10 November 2020 в 12:58
2 ответа

누군가가 같은 문제를 가지고있는 경우이 문제를 해결하는 방법은 다음과 같습니다.

Windows 방화벽 규칙을 추가해야했습니다.

  • "Windows Defender를 엽니 다. 고급 보안 방화벽 "(시작 메뉴에서 검색하여 찾을 수 있음)
  • "새 규칙 ... "을 클릭합니다.
  • 새 TCP / IP 규칙 만들기
    • 프로토콜 : TCP
    • 포트 : 5432
    • 연결 허용
  • 추가 한 후 새로 생성 된 규칙을 클릭하고 사이드 바에서 "속성 ..."을 선택합니다.
  • 범위 탭에서 다음을 지정합니다. WSL2 가상 머신의 IP 주소 (예 : 172.31.208.0/24)

원래 질문에서 다른 모든 작업을 수행 한 경우 (두 IP를 모두 가져오고 pg_hba.conf 에 VM IP를 추가) 연결 한 다음 WSL2 명령 줄에서 호스트 IP 로의 연결이 작동합니다.

1
ответ дан 4 January 2021 в 08:45

분명히 네트워크의 내용을 모르기 때문에 같은 IP 주소 일 수 있지만 cmd에서 ipconfig 을 실행하고 Windows 시스템의 거기에서 내부 IP 주소? WSL은 네트워크의 다른 장치 인 것처럼 해당 IP에서 통신 할 수 있어야합니다. 따라서 IP 주소를 psql 구성에 입력합니다.

0
ответ дан 4 January 2021 в 08:45

Теги

Похожие вопросы