Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

windows11 wsl2,The WSL_PAC_URL configuration does not take effect #11998

Open
1 of 2 tasks
yuwenlong opened this issue Sep 6, 2024 · 16 comments
Open
1 of 2 tasks

windows11 wsl2,The WSL_PAC_URL configuration does not take effect #11998

yuwenlong opened this issue Sep 6, 2024 · 16 comments
Labels

Comments

@yuwenlong
Copy link

Windows Version

Microsoft Windows [版本 10.0.22635.4145]

WSL Version

2.3.17.0

Are you using WSL 1 or WSL 2?

  • WSL 2
  • WSL 1

Kernel Version

5.15.153.1-2

Distro Version

Ubuntu 23.10

Other Software

image

Repro Steps

1、windows .wslconfig
image

2、The wsl is started and the WSL_PAC_URL environment variable is found
image

3、HTTP_PROXY and HTTPS_PROXY are not set
image

4、Proxy service is available
image

5、WSL_PAC_URL is invalid
image

Expected Behavior

For the reason of Chinese GFW, WSL2 needs to automatically implement PAC implementation proxy according to WSL_PAC_URL.

Windows uses ShadowsocksR, which is set to allow Intranet access, and step 4 above proves to be valid.

image

Actual Behavior

WSL_PAC_URL is invalid

Diagnostic Logs

No response

Copy link

github-actions bot commented Sep 6, 2024

Logs are required for review from WSL team

If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'.
Otherwise please attach logs by following the instructions below, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.

How to collect WSL logs

Download and execute collect-wsl-logs.ps1 in an administrative powershell prompt:

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1

The script will output the path of the log file once done.

If this is a networking issue, please use collect-networking-logs.ps1, following the instructions here

Once completed please upload the output files to this Github issue.

Click here for more info on logging
If you choose to email these logs instead of attaching to the bug, please send them to [email protected] with the number of the github issue in the subject, and in the message a link to your comment in the github issue and reply with '/emailed-logs'.

View similar issues

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it!

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

@yuwenlong
Copy link
Author

/question

I hope developers take a closer look at what I submitted above, thank you

Copy link

github-actions bot commented Sep 6, 2024

Diagnostic information
Found '/question', adding tag 'question'

@yuwenlong
Copy link
Author

/emailed-logs

The email has been sent with the subject line windows11 wsl2, The WSL_PAC_URL configuration does not take effect #11998

Please note that check, thank you.

Copy link

github-actions bot commented Sep 6, 2024

Diagnostic information
Found '/emailed-logs', adding tag 'emailed-logs'

@CatalinFetoiu
Copy link
Collaborator

hello. thanks for reporting the issue

Linux does not support PAC URLs by default, so WSL configures the WSL_PAC_URL env variable so that it can be manually consumed by Linux apps that support using PAC URLs
please refer as well to docs at https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#considerations-when-using-autoproxy-for-httpproxy-mirroring-in-wsl

my understanding is that curl does not support PAC URLs
you will need to use a Linux tool that knows how to resolve PAC URLs and feed the value of WSL_PAC_URL to this tool

let us know if you have any questions

@yuwenlong
Copy link
Author

@CatalinFetoiu
Linux does not support PAC URLs by default, so it may be possible to add a configuration parameter to the "ubuntu.exe" file to enable support. For example:

ubuntu.exe --proxy-pac-url=http://127.0.0.1:1080/pac

The idea could be to add a virtual network card that intercepts traffic to the PAC server.

@JonathanDLee24
Copy link

I can also confirm this issue. My functional WPAD is at 192.168.1.6 on my network however the /etc/enviroment settings in the distribution are not being added it seems. I had to manually add them to get access to apt update for example.

@JonathanDLee24
Copy link

Image

@JonathanDLee24
Copy link

JonathanDLee24 commented Jan 24, 2025

I created a script that you can run once logged in I could not get the environment variables to load when running this from root so you have to run it sudo -E ./autoproy.sh


#!/bin/bash
#check_status=$( env | grep "proxy" )
check_status=$HTTP_PROXY

echo $check_status
http="http"
if [[ $check_status == *"$http"* ]];
then
	echo "proy on"
	cp proxyon /etc/environment
else
	echo "proxy off"
	cp proxyoff /etc/environment
fi

You must have a wpad (autoproxy server on network ) running and your Windows 11 getting your settings correctly also your WSL must show the proxy info when you run
echo $HTTP_PROXY"

after that you can simply adapt the /etc/environment have a copy of the old one with no proxy for when your on a network without a proxy and $HTTP_PROXY shows nothing and another for your proxy you use

Example:

proxy on


PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
export http_proxy=http://192.168.1.1:3128
export https_proxy=http://192.168.1.1:3128

and one without

proxy off


PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
#export http_proxy=http://192.168.1.1:3128
#export https_proxy=http://192.168.1.1:3128

I also attempted to just add the $HTTP_PROXY variable into /etc/environment again it will not use it with export it wants a string.

Just an idea and more info on the actutal problem,

/etc/environment is not adding any autoproxy info everything else does in WSL.

My basic script just replaces the /etc/enviroment with a proxy copy as needed.

again it must be run with the -E to keep the user enironment's auto proxy settings for the if else conditional checks

so to run the script I created the file edited it with chmod and crown and run it like this when I need it.

sudo -E ./autoproxy.sh

crude but a temp fix. I wanted to use an @reboot crontab with it again that requires the user environment and sudo to do the copy over.

Any other ideas for a longterm automatic fix?

@JonathanDLee24
Copy link

JonathanDLee24 commented Jan 24, 2025

What I would like to do is just use the output from echo $HTTP_PROXY that is auto populated with WSL and just place it into /etc/environment

like this

better /etc/environment


PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

export http_proxy=$HTTP_PROXY

export https_proxy=$HTTP_PROXY

but it wont recognize the system variable that is already generated with auto proxy enabled and populated by way of wpad on the host Windows 11 machine for some reason.

@CatalinFetoiu
Copy link
Collaborator

@JonathanDLee24 thanks for reaching out - can you please elaborate on how /etc/environment is used in your scenario? as you pointed, if the autoProxy WSL setting is enabled, WSL automatically populates env variables such as $HTTP_PROXY with the http proxy information from Windows, but we do not populate /etc/environment

@JonathanDLee24
Copy link

JonathanDLee24 commented Jan 25, 2025 via email

@JonathanDLee24
Copy link

JonathanDLee24 commented Jan 25, 2025 via email

@CatalinFetoiu
Copy link
Collaborator

@JonathanDLee24 thanks for following up and for the additional context

to help our tracking (since this is a different issue than the WSL_PAC_URL originally reported here), could you please open a separate issue and tag me there?

thanks!

@JonathanDLee24
Copy link

Sorry this all resolves around the auto proxy configuration URL so I will not be opening another ticket. This is not a change of scope. This is related to the same problem. Auto proxy should automatically configure those environment variables and it is not doing that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants