Windows 포트를 WSL2로 전달

Windows 포트를 WSL2로 전달

Windows 및 WSL2에서 개발하고 .NET 애플리케이션이 Windows의 포트 44301에서 제공되고 localhost:44301의 WSL2(Ubuntu)에서 액세스할 수 있도록 해야 하는 사용 사례가 있습니다.

Windows 호스트에 WSL2 내에서 연결할 수 있는 IP가 있다는 것을 알고 있지만(검색을 사용할 수 있음 grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}') 이는 제가 달성하고 싶은 것이 아닙니다. 내가 하고 싶은 것은 Windows의 포트 44301을 WSL2의 localhost:44301로 전달하는 것입니다.

답변1

저는 WSL2에 대해 잘 모르지만 실제 Linux에서는 다음을 수행할 수 있습니다.

#!/bin/sh
SERVERIP=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}')

# Turn on the IPv4 packet forwarding master switch
sysctl net.ipv4.ip_forward=1

# Change the destination of TCP packets arriving to loopback interface's
# port 44301 to the same port on the actual Windows server
iptables -t nat -A PREROUTING -i lo -p tcp --dport 44301 -j DNAT --to-destination $SERVERIP

# Allow the forwarding of any existing forwarded connections
# (to ensure replies from the Windows server are also allowed)
iptables -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED -j ACCEPT

# Allow the forwarding of connections arriving to loopback TCP port 44301
iptables -t filter -A FORWARD -p tcp -i lo --dport 44301 -j ACCEPT

관련 정보