На моем компьютере с Windows запущен Postgres, и мне нужно подключиться к нему изнутри WSL2.
psql
172.31.210.120
, сетевая маска 255.255.240.0
(определяется с помощью ipfconfig
). 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
Если я попытаюсь подключиться к ней из 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 \
не показывают ошибок или каких-либо признаков попытки подключения.
Что мне здесь не хватает?
누군가가 같은 문제를 가지고있는 경우이 문제를 해결하는 방법은 다음과 같습니다.
Windows 방화벽 규칙을 추가해야했습니다.
원래 질문에서 다른 모든 작업을 수행 한 경우 (두 IP를 모두 가져오고 pg_hba.conf
에 VM IP를 추가) 연결 한 다음 WSL2 명령 줄에서 호스트 IP 로의 연결이 작동합니다.
분명히 네트워크의 내용을 모르기 때문에 같은 IP 주소 일 수 있지만 cmd에서 ipconfig
을 실행하고 Windows 시스템의 거기에서 내부 IP 주소? WSL은 네트워크의 다른 장치 인 것처럼 해당 IP에서 통신 할 수 있어야합니다. 따라서 IP 주소를 psql 구성에 입력합니다.