wsl을 Windows localhost에 연결하는 방법은 무엇입니까?

wsl을 Windows localhost에 연결하는 방법은 무엇입니까?

내 Windows에서 WSL이 로컬 호스트 프록시(실제로는 Fiddler)를 사용하도록 하려고 하는데 그런 연결이 보이지 않고 일반적으로 다운로드가 실패합니다. 어떻게 해결합니까?

Windows에서 Linux 로컬 호스트에 연결할 수 있다는 것을 알고 있지만 어떻게 되돌릴 수 있습니까?

WSL은 우분투 18.04입니다.

답변1

다음이 바인딩된 응용 프로그램에서 작동하는지 확실하지 않습니다.단지localhost이지만 Fiddler 및 WSL2에서는 작동했습니다.

  1. Fiddler 옵션 "원격 컴퓨터 연결 허용"을 설정하고 Fiddler를 다시 시작합니다. Fiddler 옵션: 원격 컴퓨터 연결 허용

  2. WSL 네트워크 연결 정보를 확인하세요(내 컴퓨터에서는 어댑터가 이라고 함 vEthernet (WSL)). WSL 네트워크 연결 세부정보

  3. 해당 주소를 사용하십시오(예: 일반적으로 localhost를 사용하는 경우 172.26.224.1). 컬 -I 172.26.224.1 WSL2의 출력

답변2

관리자 권한으로 실행되는 Powershell에서 다음 명령을 실행해야 합니다.

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

이 명령은 다음에서 비롯됩니다.WSL2 티켓. WSL2 IP는 매번 변경되므로 WSL IP 주소와 관련된 방화벽 규칙은 적용되지 않습니다.

2023년 편집: 새로운네트워크 미러 모드그리고 새로운방화벽 관리 도구구현되었습니다.

답변3

WSL 2는 WSL 1에 비해 몇 가지 추가 작업이 필요합니다.

  1. 방화벽을 통해 필요한 포트를 허용하십시오.

    1.1 출시Windows Defender Firewall with Advanced Security

    1.2 왼쪽 창에서 을 선택합니다 Incoming Rules.

    1.3 오른쪽 창에서 을 클릭합니다 New Rule.

    1.4 규칙 유형으로 를 선택합니다 Port. 다음.

    1.5 TCP및 를 선택합니다 Specific local ports. 포트, 쉼표로 구분된 포트 목록 또는 포트 범위를 삽입하십시오. 다음.

    1.6 선택합니다 Allow connection. 다음.

    1.7 Public프로필만 확인하세요. 다음.

    1.8 규칙 이름을 입력합니다. 예를 들어 WSL. 완료.

  2. 그 안에서 WSL의 IP 주소를 알아보세요.

grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'

이는 네트워크 인터페이스의 IPv4 주소입니다 vEthernet (WSL).

  1. curl또는 다음을 사용하여 Windows 호스트에 대한 연결을 테스트합니다 telnet.

    3.1curl ip.from.step.2:port

저는 이 절차를 사용하여 Windows에서 실행되는 Oracle 서버와 X 서버에 연결했습니다.

업데이트: WSL의 IP 주소는 Windows를 다시 시작할 때마다 변경되므로 자동으로 가져와 파일을 업데이트하는 것이 편리합니다 hosts.

WSL에서:

  1. cat /etc/hostsWindows 호스트의 이름을 찾으려면 실행하십시오 .

  2. 다음에 다음 코드를 추가합니다 ~/.profile.

    HOST=<WINDOWS_HOSTNAME>
    IP_HOST=$(grep -m 1 $HOST /etc/hosts)
    OLD_IP=$(echo "$IP_HOST" | awk '{print $1}')
    NEW_IP=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}')
    
    if [ "$NEW_IP" != "$OLD_IP" ]; then
       echo "Updating IP Address-hostname mapping"
       sudo sed -i "s|$IP_HOST|$NEW_IP\t$HOST|" /etc/hosts
       echo "$HOST has the IP Address $NEW_IP"
    fi
    

답변4

편리한 '기능'이 함께 제공됩니다.WSL-VPN킷. README 지침에 표시된 대로 이 배포판을 설치하고 가져오면 host.internalIP 주소를 몰라도 Windows 호스트에 연결하는 데 사용할 수 있습니다 .

다운로드 후,

wsl --import wsl-vpnkit --version 2 $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz

~/.bashrc에 추가하세요.

wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit status >/dev/null || wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit start

터미널을 다시 로드한 후 host.internalWSL에서 실행해 보세요. 예를 들어 Fiddler 프록시 포트가 8888인 경우

nc -v -w5 -z host.internal 8888

관련 정보