Ubuntu「一键」设置全局代理
Ubuntu「一键」设置代理
sonictl note: the DNS problem may be still there. Except proxychains.
WSL (Windows Subsystem for Linux) or Ubuntu is OK for this tutorial. Other linux can also try this.
1. Windows first
Proxifier --> Clash
Walls on UWP apps: Use Fiddler
WinConfigtool to disable it.WSL:
- 使用 SSTap 直接接管 Windows 除了 Windows 系统进程以外的网络层,当然也包括 WSL
- Proxifier 并不能实现对 WSL 启用代理
- 相对最完美的方法是使用 Proxychains, 但不方便
- 直接在终端配置 proxy, 如果在WSL上使用的app不多。
2. Linux, WSL: Configure proxy in Terminal
two lines of cmds:
export ALL_PROXY="socks5://127.0.0.1080"
export all_proxy="socks5://127.0.0.1080"
这样 curl wget 是都走代理了,包括 git npm yarn .
如果需要设置 APT 走代理,需要修改 /etc/apt/apt.conf:
echo -e "Acquire::http::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
echo -e "Acquire::https::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
3. Linux, WSL:【一键】解除、设置代理:
在 ~/.bashrc or ~/.zshrc 里把解除代理和启用代理写成两个 function:proxy() 和 noproxy(),每次只要执行 proxy 就可以启用代理、执行 noproxy 解除代理,近似实现「一键操作」。可在 function 中加上 curl ip.gs 来测试当前 IP。
here are the codes:
proxy () {
export ALL_PROXY="socks5://127.0.0.1:1080"
export all_proxy="socks5://127.0.0.1:1080"
echo -e "Acquire::http::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
echo -e "Acquire::https::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
curl https://ip.gs
}
noproxy () {
unset ALL_PROXY
unset all_proxy
sudo sed -i -e '/Acquire::http::Proxy/d' /etc/apt/apt.conf
sudo sed -i -e '/Acquire::https::Proxy/d' /etc/apt/apt.conf
curl https://ip.gs
}
ps: zsh是一个终端环境,和bash类似。~/.zshrc就是zsh的配置文件,你可以自行更改。
read more: Mac OSX终端走shadowsocks代理
原文:
2018-11-29 笔记本
首先虽然题目包含 Ubuntu 但是实际上苏卡卡解决的是 WSL 的代理问题的 WSL 是最好的 Linux 发行版;而且 Ubuntu 超级棒的 不出内部错误的话!苏卡卡的方案也是通用于几乎所有 Linux 的。
在 Windows 上使用全局代理亦或是透明代理真是太困难了。我之前在用 SSTap 实现全局代理;后来 Clash 和 Clash for Windows 出来以后就直接去用 Clash 了 界面漂亮才是第一生产力! 我就直接把 难看的 SSTap 丢掉了。但是 Clash 只是一个代理程序,并不能提供全局代理的方案。
好在 Windows 上实现全局代理或者分应用代理还有一个常用的方案——Proxifier,我可以通过 Proxifier 把绝大部分应用的流量转发到 Clash 上面去,Windows 给 UWP 应用做的应用隔离则可以使用 Fiddler 的 WinConfig 工具解除掉。
但关键是 WSL。之前使用 SSTap 直接接管 Windows 除了 Windows 系统进程以外的网络层,当然也包括 WSL。Proxifier 并不能实现对 WSL 启用代理了,所以用 Proxifier 就得解决 WSL 也走代理的方法。
在 Google 上找遍了「Linux 全局代理」,相对最完美的方法是使用 Proxychains,但每个指令前面都要带个 proxychains 真的太不方便了;使用 iptables 的透明代理方案在 WSL 上面也并不适用(WSL 和 Windows 两者是相互依赖的、我不想在 Ubuntu 上设置 iptables 结果把宿主 Windows 炸掉)。
既然没有,那就干脆不要了!直接在终端配置 proxy,反正目前在 WSL 上使用的应用和环境并不多。
给终端设置代理超简单的,直接一句命令搞定:
export ALL_PROXY="socks5://127.0.0.1080"
这样 curl wget 是都走代理了,但是 git npm yarn 这些不知为何不跟随终端的环境变量设置。一种解决方案是分别设置:
git config --global http.proxy "socks5://127.0.0.1080"
git config --global https.proxy "socks5://127.0.0.1080"
npm config set proxy "http://127.0.0.1090"
npm config set https-proxy "http://127.0.0.1090"
yarn config set proxy "http://127.0.0.1090"
yarn config set https-proxy "http://127.0.0.1090"
但是苏卡卡发现了一个奇怪的解决方法,就是除了设置 ALL_RPOXY 以外再添加一个 all_proxy :
export all_proxy="socks5://127.0.0.1080"
这样不仅 git npm yarn 这些读取环境变量不支持大小写的辣鸡,其它绝大部分终端应用程序不走代理的问题就都解决了~
不过包管理器 APT 就更麻烦了。如果需要设置 APT 走代理,需要修改 /etc/apt/apt.conf:
echo -e "Acquire::http::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
echo -e "Acquire::https::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
敲了好一会键盘以后苏卡卡想起了一个问题——如果要解除代理应该怎么办。。。
于是苏卡卡在 .zshrc 里面把解除代理和启用代理写成了两个 function:proxy() 和 noproxy(),每次只要执行 proxy 就可以启用代理、执行 noproxy 解除代理,近似实现「一键操作」。而且,还可以在 function 中加上 curl ip.gs 来测试当前 IP。
Talk is cheap, here are the codes:
proxy () {
export ALL_PROXY="socks5://127.0.0.1:1080"
export all_proxy="socks5://127.0.0.1:1080"
echo -e "Acquire::http::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
echo -e "Acquire::https::Proxy \"http://127.0.0.1:1090\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
curl https://ip.gs
}
noproxy () {
unset ALL_PROXY
unset all_proxy
sudo sed -i -e '/Acquire::http::Proxy/d' /etc/apt/apt.conf
sudo sed -i -e '/Acquire::https::Proxy/d' /etc/apt/apt.conf
curl https://ip.gs
}
稍加修改也可以写进
.bashrc之中
苏卡卡最终的版本用 read 实现了读取输入来获取代理地址、而不是直接使用预置 127.0.0.1:1080 的方案。代码开在 这里。如果各位路过的大佬有什么更高明的 Linux 全局代理或者 WSL 由 Windows 接管代理的方法,请务必点醒菜鸡苏卡卡。
本文作者 : Sukka
本文采用 CC BY-NC-SA 4.0 许可协议。转载和引用时请注意遵守协议!
本文链接 : https://blog.skk.moe/post/enable-proxy-on-ubuntu/
Ubuntu「一键」设置全局代理的更多相关文章
- Linux设置全局代理与yum代理
设置全局代理,方法如下: 修改 /etc/profile 文件,添加下面内容: http_proxy=http://username:password@yourproxy:8080/ ftp_prox ...
- C#程序中设置全局代理(Global Proxy)
1. HttpWebRequest类的Proxy属性,只要设置了该属性就能够使用代理了,如下: 1 //设置代理 2 WebProxy WP = new Web ...
- [Z] C#程序中设置全局代理(Global Proxy)
https://www.cnblogs.com/Javi/p/7274268.html 1. HttpWebRequest类的Proxy属性,只要设置了该属性就能够使用代理了,如下: 1 ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
- ubuntu 设置全局代理
ubuntu配置shadowsocks全局代理 在mac.window平台下都有shadowsocks客户端,因此这两个平台不叙述太多,现在介绍ubuntu下的配置方法. 1.安装python lin ...
- redsocks 设置全局代理
分享一下我的经验, http://lilydjwg.is-programmer.com/2014/2/7/linux-really-global-http-proxy.42701.html 1. 优点 ...
- Linux/CentOS设置全局代理(http)
说明:为什么说是http代理,其实这个还不能说是全称走代理,罪名写的区别就是ICMP协议这个设置就无效,只能说是90%的应用都可以使用这个设置来实现代理访问,只有个别不行,比如一些软件根本不走http ...
- Gradle 设置全局代理
#systemProp.socks.proxyHost=127.0.0.1 #systemProp.socks.proxyPort=7077 #systemProp.https.proxyHost=1 ...
- 「Ionic」设置开发环境
轉載請一定註明地址:http://www.cnblogs.com/surge/p/5983024.html 謝謝! 濤叔是在mac環境下進行的,涉及android環境的配置不保證成功. 少废话,跟着濤 ...
随机推荐
- 如何比较两个txt文件内容的细微差别
如何比较两个txt文件内容的细微差别 https://jingyan.baidu.com/article/19020a0a1dd04a529c284272.html 听语音 | 浏览:3500 | 更 ...
- excel 字母变大写 宏
Sub ConvertToUpperCase() Dim Rng As Range Worksheets("Sheet1").UsedRange.Select For Each R ...
- springmvc中获取request对象,加载biz(service)的方法
获取request对象: 首先配置web.xml文件--> <listener> <listener-class> org.springframework.web.con ...
- 002-Django数据库及后台admin配置
连接mysql数据库 数据库准备 如果连接本机数据库,mysql安装及配置可参考https://www.cnblogs.com/feizisy/p/11882521.html 如果连接阿里云RDS,需 ...
- 索尼A6300
1. 开机提示的NTSC NTSC和PAL,是两种不同视频录制标准,也就是说拍摄视频的时候才有用. a6300 1080P下,最大可以以 每秒 120p(ntsc下)或者 100p(pal下)录制.播 ...
- Flask框架(三)—— 请求扩展、中间件、蓝图、session源码分析
Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_requ ...
- JAVA日期时间相关库
Java的日期时间库比较乱,同样一个Date在java.sql下定义,同时也在java.util下也定义了一遍,真不知道SUN是怎么想的. java8以后,java通过jsr310标准引入了一套符合I ...
- JDK安装中配置Path无效解决办法
1. 问题 在安装jdk后,配置完环境变量,然后在控制台输入java -version出现与安装版本不一致的版本,如安装1.8后version仍显示1.7,即:修改环境变量没有生效且原先存在安装过的J ...
- TestCase维护和思维导图
在软件整个生命周期中,测试应该尽早地开始,因为测试对象不只是程序,还有文档和数据,所以针对需求分析说明书.概要设计和详细设计说明书,测试如何快速理解项目需求,进行下一步的工作呢? 本人觉得,如果只是看 ...
- linux系统管理基础知识
1.linux的安装配置 虚拟机安装 Linux安装和分区 IP地址的配置 ifup eth0,ifdoen eth0 关闭不常用的程序 关闭selinux 远程登录(多用户,多任务) 用户和角色划分 ...