因为 windows 分配给 wsl2 的 IP 是动态变化的,所以我在.bashrc 设置了如下环境变量,我想用curl cip.cc
检测终端是不走代理,但返回的是国内当地的 ip 地址
export host_ip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
export https_proxy="http://${host_ip}:7890"
export http_proxy="http://${host_ip}:7890"
export all_proxy="http://${host_ip}:7890"
所以请教下大家,终端走代理的正确姿势该怎么操作呢?
1
Nerv 2021-10-23 10:18:44 +08:00 4
https://docs.cfw.lbyczf.com/contents/tun.html
直接 windows 端用 tun 吧,方便的很。 |
3
nojsja 2021-10-23 10:26:31 +08:00 1
linux 上我一直用 proxychain + ssr
|
4
ScepterZ 2021-10-23 11:52:21 +08:00
我现在直接路由器挂小软件了,公司里应该也差不多是这么搞的吧,用起来比较省事
|
5
canbingzt 2021-10-23 12:05:50 +08:00 via iPhone 1
|
6
TypeError 2021-10-23 12:11:04 +08:00 via Android 1
proxychains
|
7
jswh 2021-10-23 12:14:38 +08:00 1
|
8
charlie21 2021-10-23 12:49:26 +08:00 1
你这就是终端走代理的正确姿势
终端走代理的检测办法是 > curl "https://www.youtube.com" -X GET -I 如果有 200 结果,则说明终端的当前 session 对 youtube.com 网址已经走代理了 |
9
hingbong 2021-10-23 13:08:30 +08:00 via Android 1
你 ping 一下$(hostname). 就能发现神奇的地方了,记得有个点
|
10
ch2 2021-10-23 13:11:19 +08:00 1
终极办法:windows 下开 openvpn 或者 pptp,任何流量都会走代理
次要:wsl2 下 proxychains |
11
charlie21 2021-10-23 14:00:57 +08:00 1
win clash - Proxies 选 Global (而非 Rule)
以上设置可以达到你想要的效果 |
12
johnniang 2021-10-23 15:00:05 +08:00 via Android 1
试试 “宿主机名称.mshome.net” 域名,可以不用担心 IP 变动。
|
13
mchl 2021-10-23 15:20:16 +08:00 1
分享一个我一直在使用的解决方案:
|
14
mchl 2021-10-23 15:24:22 +08:00
分享一个我一直在使用的解决方案:
新建文件 /etc/profile.d/myenv.sh 内容是: export http_proxy="http://$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):10809" export https_proxy=$http_proxy 保存后运行命令 source /etc/profile 这个文件会在每次重启时自动运行,而且是针对所有用户 别忘了设置 sudo 自动延用设置: 命令 sudo visudo 找到下面这行 Defaults env_reset 添加这一行 Defaults env_keep = "http_proxy https_proxy ftp_proxy all_proxy DISPLAY XAUTHORITY" 保存就可以了。 |
15
Knuth OP |
16
chihiro2014 2021-10-23 16:48:42 +08:00
用 docker ,wsl 里面装 docker ,然后要装软件的时候通过 docker ,它的 ip 就是你的 localhost ,而不是动态分配的了
|
17
SenLief 2021-10-23 17:07:27 +08:00
你的没问题呀,clash 有么有开局域网。
|
18
ch2 2021-10-23 17:20:29 +08:00
@Knuth #15 git 很简单:git config --global https.proxy 'http://宿主机的 ip:1080'
wget 也有类似的方法,你可以单独设置,不走全局的 |
19
airborne007 2021-10-23 18:03:28 +08:00
其实也可以反过来,在 wsl2 里面开 clash ,然后 windows 用 wsl2 里面的代理上网
|
20
Knuth OP |
21
Knuth OP @canbingzt 不太懂 bash ,请教一下,根据你这样设置后,git proxy 是有效的。但 http_proxy 、https_proxy 没有生效,我在终端`echo $http_proxy`没有返回呢?
|
23
SenLief 2021-10-23 20:16:33 +08:00
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
alias proxy="export ALL_PROXY="http://$host_ip:7890"" alias unproxy="unset ALL_PROXY" 我的配置,用的时候 proxy 就可以。不过现在用 tun ,没用这个了。 |
25
interim 2021-10-23 23:19:37 +08:00 1
用 clash 的 tun 模式就可以了,宿主机和 WSL2 直接走代理
|
26
Huelse 2021-10-24 00:40:13 +08:00
我就设置了 https_proxy 和 http_proxy ,不过 host_ip 是指定的 192.168...,因为 ip addr 里能看到我本地局域网的地址,然后 clash 开启了 lan 就能用了,git 之类的都能通过外面的 clash 跑
|
27
kohoh 2021-10-24 16:27:55 +08:00
|
28
w7938940 2021-10-24 20:34:28 +08:00
虚拟机开个 openwrt 装 openclash 做旁路由,wsl2 设置旁路由为网关
|
29
xgao 2021-10-25 09:18:58 +08:00
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
alias socks='ALL_PROXY=socks5://${hostip}:10800/ \ http_proxy=http://${hostip}:10800/ \ https_proxy=http://${hostip}:10800/ \ HTTP_PROXY=http://${hostip}:10800/ \ HTTPS_PROXY=http://${hostip}:10800/' 先查询 wsl 分配的 ip ,然后 alias 一个 socks 。想走代理的话加 socks 前缀就行了:socks curl cip.cc |
30
uni 2021-10-25 09:21:56 +08:00
我用 v2ray 的,按照这个帖子设置的没有问题: https://syz913.github.io/2021/03/20/wsl2/
但是 v2ray 好像对 ssl 支持非常差,很多东西(比如说 python )要访问网络都会报错,不知道大家有没有什么办法 |
31
AoEiuV020 2021-10-25 10:09:01 +08:00
我是直接写死 windows 在局域网的 ip ,就是路由器分配的那个,路由器上设置分配固定 ip ,然后把 windows 上的代理软件设置监听 0.0.0.0 允许局域网连接,再打开防火墙,
就不需要考虑 wsl ip 变化的影响了, |