
Windows 上で WSL にローカルホスト プロキシ (実際は Fiddler) を使用させようとしていますが、そのような接続は確認できず、ダウンロードも通常は失敗します。どうすれば修正できますか?
Windows のローカルホストから Linux のローカルホストに接続できることはわかっていますが、これを逆にするにはどうすればよいでしょうか?
WSLはUbuntu 18.04です
答え1
答え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 起動
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
: 完了。WSL の IP アドレスをその中から見つけます。
grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'
これはネットワーク インターフェイスの IPv4 アドレスですvEthernet (WSL)
。
curl
またはを使用して Windows ホストへの接続をテストしますtelnet
。3.1
curl ip.from.step.2:port
この手順を使用して、Windows 上で実行されている Oracle サーバーと X サーバーに接続しました。
アップデート: WSL の IP アドレスは Windows を再起動するたびに変更されるため、自動的に取得してファイルを更新すると便利ですhosts
。
WSL の場合:
を実行して
cat /etc/hosts
、Windows ホストの名前を確認します。次のコードを追加します
~/.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.internal
IP アドレスを知らなくても 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.internal
WSLから実行してみてください。たとえば、Fiddlerプロキシポートが8888の場合、
nc -v -w5 -z host.internal 8888