linux设置代理,可以设置环境变量,如
export http_proxy="socks5://127.0.0.1:1080"export https_proxy="socks5://127.0.0.1:1080"这里的socks5://127.0.0.1:1080为你的socks5代理服务器,具体的按你实际情况替换,(代理服务器可以为socks、socks5、http、https协议)
你配置好之后,可以用curl命令测试一下代理是否正常
但如果你要问代理服务器怎么弄,那你只有自己折腾了,
比较常见squid代理服务器以及ssh、ssr、v2ray这些隧道代理
qv2ray的代理端口可以在它的那一大堆配置中查看,应该不是1080,我记得好像默认是8889
如果只是GitHub访问的问题,使用GItHub的镜像站就能解决,fastgit和taobao速度都挺快的,也可以代理网页访问。
您可以修改git的全局配置文件(Linux下为~/.gitconfig),使用镜像站完全替代指向http://github.com的链接:
# 或者使用[url ""] [url ""] insteadOf = [protocol "http"] allow = always订阅节点刚开始我也试过好几个不能用,还不如自己动手搭一个,按照GitHub上面的教程来步骤很简单的,相关文档都挺完备的。服务器的费用随便找两个人一起均摊就行,比订阅更好用划算
搞明白你的报错究竟是什么是关键。
首先你确认你的qv2ray具有v2ray核心。首选项->内核设置中查看是否能识别可执行文件和资源目录/usr/bin/v2ray以及/usr/share/v2ray中是否正确。如果不正确,可能需要安装v2ray核心。
我不知道ubuntu下是否需要额外添加软件源,总之如果没有安装v2ray核心的话,尝试执行下面的命令:
sudo apt-get install v2ray其次你更新你的订阅,然后选一个服务器连接,如果这一步正确,qv2ray客户端一般会自动设置浏览器的代理,你可以尝试访问http://google.com,同时在qv2ray主界面观察qv2ray的日志输出情况。这一步是为了了解你的服务器是否正确。如果你的服务器正常,那么应该能访问http://google.com,否则日志会输出warnning …… failed ……之类的。如果是服务器问题,你需要换服务器连接或者重新选个靠谱的机场。
如果你已经确认核心和服务器都是正常的,那么连接服务器后gnome下qv2ray会自动设置终端代理,你在终端中输入
curl cip.cc查看结果,如果终端已经代理,会输出服务器位置;如果输出的是你当前所在地的电信服务提供商,说明终端尚未代理。这时你需要手动为终端设置代理。
查看你的qv2ray 首选项中的入站设置,观察socks5和http的端口号,比如说qv2ray默认设置的http端口号是8889,于是你可以使用http代理方式,终端输入:
export http_proxy="127.0.0.1:8889" export https_proxy="127.0.0.1:8889"你也可以选择socks代理方式,比如默认的socks5代理端口是1089,终端输入:
export http_proxy="socks5://127.0.0.1:8889" export https_proxy="socks5://127.0.0.1:8889"代理完成后再使用上面那个curl命令查看是否代理成功。
工作完成后,需要取消代理的话,可以使用:
unset http_proxy export https_proxy来解除终端的代理,然后断开服务器的连接,退出qv2ray就可以了。
熟练后,你可以使用alias命令简化设置环境变量和解除环境变量的步骤,比如设置:
alias ep=export https_proxy="127.0.0.1:8889" && export http_proxy="127.0.0.1:8889" alias uep=unset https_proxy && unset http_proxy这样以后你连接上服务器以后,终端输入ep即可为终端设置代理,输入uep即可为终端取消代理。
本文转载自我的个人博客,欢迎打开原文查看
目录
缘起
过一段时间后会去鹅厂实习,听在里面的好哥哥说现在公司变抠门了,实习生不给发mac了,然后一直以来都在 windows 上踩了不少坑,遂决定用linux开发适应一段时间,如果还可以的话到时候实习就自己装一个用咯
其实一直都想试试,但之前都没啥时间,现在刚好有个实习前的空档期,那就折腾一下吧。发行版选择了 kubuntu(主要是考虑到ubuntu较为方便、稳定,而个人又比较喜欢kde)装好系统后,第一件事情就是配好梯子,所以就有了这篇水文
代理 or 镜像源
当我们开发过程中使用各种服务时,经常会因为 GFW 的原因,遇到种种网络问题,使用镜像源一般能解决基本的下载问题(也有很多例外情况),但是没有普适性而且不优雅,假如你要下载的包/服务刚好镜像源没有呢?而且镜像也仅仅只能满足你下载的需求
而为你的开发环境配置好代理服务能从根本上解决问题
环境说明
测试环境:kubuntu20.04LTS 、Clash for Windows
配置需求:任意linux发行版、机场 or 代理
推荐应用:Clash for Windows 、proxychains-ng 、privoxy
认识你的代理
推荐这篇文章了解不同的翻墙协议:科学上网的主流协议大对比电丸科技AK的频道:「硬核翻墙/科学上网」系列机场的测速与选择:DuyaoSS-机场测速和简介不同的机场、不同的价格、不同的产品会提供不同的翻墙协议的代理服务,目前主流的翻墙协议有ss、ssr、VMess、trojan等所以首先你需要弄明白你的供应商给你的是什么类型的节点(通常都会提供ss),然后提供的类型选择对应的代理客户端
除此之外,你还需要获取机场提供的托管 or 订阅连接方便节点导入
代理客户端
可以看看这篇文章的整理:SS/SSR/V2Ray/Trojan/Clash 简介和客户端软件下载linux上可以选择的代理客户端也挺多,比较流行的有 shadowsocks 客户端(最流行的代理协议,大多数机场都支持),v2ray衍生,Clash 系列,他们都有对应不同平台的GUI/CLI版本,这里简单搜集一下方便大家选择:
shadowsocks 社区官方客户端(仅支持ss):https://shadowsocks.org/en/download/clients.htmlv2ray 官网列举的客户端(必然支持VMess,其他协议支持情况不同):https://www.v2ray.com/awesome/tools.html注:Qv2ray 原项目已经停止维护,但有原作者另开项目更新维护,详情见此(甚至还出了3.0版本!)Clash:本身就是一个支持VMess, Shadowsocks, Trojan, Snell协议的多平台代理客户端(CLI,一般配合web gui用),图形客户端的话推荐下面3个,别的不推荐Clash for Windows 一个支持 Windows/macOS/Linux 的很流行的图形客户端(后文简称CFW),推荐使用 ClashX:Clash 的 Mac 图形客户端ClashForAndroid:Clash 的 Android 图形客户端,上面除了 Qv2ray 新维护版本以及 ClashX 我没用过,其他的客户端都有使用或者正在使用,考虑到博客篇幅以及简单易用的原则,我在这里选择使用CFW的linux版本,他基本上和win版差不多,比较方便使用,客户端选择适合自己的即可,如果你是冲浪小白,建议选择博主推荐的CFW
配置客户端的时候需要注意提供代理服务的相应端口,比如Clash新版使用Mixed Port可以提供端口都是7890 (default)的http和socks5 proxy服务;而如果你使用shadowsocks作为你的客户端,他只能提供端口为8080 (default)的socks5 proxy,然而并不是所有应用都支持socks5的,大部分只支持http/https proxy,所以你可能需要额外使用一些工具(比如 privoxy )监听socks5端口并将它转换为http proxy
CFW 安装及配置
安装
在这里提供CFW的配置方法,其他客户端的配置待未来更新(不保证)
仅供参考,请勿无脑照搬命令在CFW的 releases 页面下找到对应的版本复制下载链接,并打开终端使用wget下载并解压到/usr/local(你也可以用自己的方式下载并解压到你心仪的目录):
# 切换到下载目录 $ cd ~/Downloads/ # 可以自行最新版本(因为github没有被墙,所以只是网速慢,可以多试几次) $ wget Fndroid/clash_for_windows_pkg/releases/download/0.19.12/Clash.for.Windows-0.19.12-x64-linux.tar.gz # 解压到当前文件夹 $ tar -xvf Clash.for.Windows-0.19.12-x64-linux.tar.gz # 移动到/usr/local/并重命名为CFW[可选] $ sudo mv Clash\ for\ Windows-0.19.12-x64-linux/ /usr/local/CFW # 后台静默运行CFW $ /usr/local/Clash\ for\ Windows/cfw &启动后将会有CFW的GUI弹出,在左侧General栏中可以看到(你的栏目可能与我的有所不同,这是因为我的托管配置提供了额外的Providers选项),clash默认使用的端口是7890,我们要记住这个端口号,后面会经常使用
老版本的 CFW 的 http端口 和 socks5 端口是不同的, 新版本后使用Mixed Port 就统一成7890导入代理配置
clash使用yaml文件配置节点信息,CFW会自动读取~/.config/clash/profiles/下存放.yaml/yml配置文件,通常情况下,我们只需要复制机场供应商提供的clash托管连接粘贴至Profiles并点击下载即可使用
如果很不幸,你只有可以使用的少量节点需要自行配置,那你可以编辑配置文件,细节请查看此文档
配置 Service Mode [可选]
在linux版本中,默认的代理模式只有全局,也无法使用一些高级功能(比如TUN Mode),我们需要安装额外的插件
官方文档提供以下快捷方式:
$ curl> cfw-tun.sh && chmod +x cfw-tun.sh && sudo ./cfw-tun.sh install <cfw安装目录>在本例中,<cfw安装目录>为/usr/local/CFW/
我们也可以点击Manage自动安装,前提是系统需要先装有nftables和iproute2,可以直接使用包管理工具自动安装:
# ubuntu/kubuntu可以使用apt $ sudo apt install nftables $ sudo apt install iproute2安装完成后再点击Install
如果安装成功,重启后General栏显示的Service Mode项的地球图标将变为绿色,可以发现右下角的小猫咪已经支持各种代理模式了,这里的话推荐大家使用Rule模式,如果遇到一些外国网站无法
使用 TUN/TAP Mode [推荐]
需要先安装好Service Mode,对于不遵循系统代理的软件,TUN/TAP 模式可以接管其流量并交由 CFW 处理,因为他们分别作用在网络层和数据链路层,就像是安装了一个虚拟的翻墙网卡,操作系统的所有应用的流量都交给这个网卡处理,你可以实现真正的全局代理,不论是浏览器、终端应用(如git)。借助CFW的可以方便你进行代理模式的切换
这里推荐使用TUN,在General页中打开TUN模式开关即可。如果想安装TAP模式,请自行查阅相关资料
我之前没怎么使用过TUN模式,最近打开尝试了一段时间暂时没发现什么问题,也可以curl google、git pull,甚至连docker也能用(下图第一次命令未打开)
理论上,如果你使用CFW作为客户端并开启了TUN模式并且能正常使用,那么从实用性的角度来说是你可以关闭本文了,如果你后续使用发现TUN模式出现很大问题,你再回头看本文选择别的方式。考虑到目前这种方法只有少数的客户端支持,并且相关的资料不多,难以debug,所以我还是在后文提供了一些较为通用且比较流行的方法(其实就是想水文)
浏览器代理
如果你使用了TUN模式(详情见前文),无需进行此设置因为kde的系统代理就像一个玩具,不仅大多数应用不会使用其代理配置,甚至连kde自己的系列应用也不会使用,所以这里需要自行进行配置,显示地配置了心里也踏实,建议统一使用SwitchyOmega
Firefox 开箱即用 [可选]
127.0.0.1(localhost)是一个在计算机网络中用于表示“此计算机”的主机名。它被用于通过本地环回网络接口,来访问本机运行的服务,并且将会绕过任何物理网络接口硬件,详情请见维基百科代理客户端正常启动后,根据服务的端口进行配置,clash默认使用的是7890端口,打开浏览器代理设置(可以搜索关键字proxy),选择 socks5 (当然,也可以是http/https,不过socks5效率更高所以选择它)并输入127.0.0.1:7890即可配置成功。注意,如果你使用的是别的客户端(比如ss),请将7890替换成你的端口设置,切勿无脑照搬
这样设置仅可以使 Firefox 使用全局代理,但是没有更多的配置支持,建议临时使用。而 Edge、Chrome 不原生支持代理设置,需要使用第三方插件来使用代理,
使用Proxy SwitchyOmega [推荐]
Proxy SwitchyOmega 是 Chrome 和 Firefox 浏览器上的代理扩展程序,可以轻松快捷的管理和切换多个代理设置,可以轻松在 Chrome 和 Firefox 的应用商店上安装,但如果要访问他们的应用商店需要先翻墙,所以这是一个先有鸡还是先有蛋的问题。幸运的是,switchyomega的官网好像没被墙,可以按照官网安装教程进行离线安装,以下是SwitchyOmega的浏览器商店页面:
Chrome/Chromium/Edge :由于新版Edge使用Chromium内核,所以Edge可以直接安装chrome商店的扩展Firefox/MozillaProxy SwitchyOmega For Edge (unofficial) 请注意!在Edge商店中的这是非官方版本且代码未开源的李鬼,不推荐大家使用安装好后点击右上角SwitchyOmega的扩展设置,在proxy栏中输入代理设置即可,左边apply保存后再点击小圆圈选择使用proxy即可
终端代理
如果你使用了TUN模式(详情见前文),无需进行此设置通常情况下,终端是无法使用系统代理的,这需要我们自行配置
export 代理环境变量
基本的使用方式是使用 export 设置当前终端的代理环境变量:
# http proxy $ export http_proxy=":port" $ export https_proxy=":port" # socks5 proxy $ export http_proxy="socks5://host:port" $ export https_proxy="socks5://host:port" # 之后就可以运行想要使用代理的应用 $ some commands对于本例(CFW),代码如下。再次强调,只是clash使用了mixed port才可以使得端口都是7890
# http proxy $ export http_proxy=":7890" $ export https_proxy=":7890" # socks5 proxy $ export http_proxy="socks5://127.0.0.1:7890" $ export https_proxy="socks5://127.0.0.1:7890"这种方式的缺点是只会作用在当前终端,如果关闭了下次还要重新配置一次,网上经常会将这种方式写入到~/.bashrc永久保存里方便使用,但是我并不推荐这么做(这样不是很优雅,会弄得脏脏的)所以我这里也不提供,实在有这种需求请自行查阅资料
使用这种方法,本质上是设置环境变量(上面是一次性的),有点像“终端版本的系统代理”,能否发挥作用完全看CLI应用是否读取,比如比如apt、docker等就不会读取,自然也无法使用代理,这时候需要使用额外的工具强制其走代理
使用 proxychains [推荐]
ProxyChains是Linux和其他Unices下的代理工具。它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP、SOCKS4和SOCKS5类型的代理服务器,并且可配置多个代理。ProxyChains通过一个用户定义的代理列表强制连接指定的应用程序,直接断开接收方和发送方的连接。经布鲁斯实测,大多数应用比如 git、apt、curl、wget 可以成功使用 proxychains 代理,少数如 docker 则不可使用
proxychains-ng 是proxychains的新版本,直接用包管理工具就可以安装
$ sudo apt install proxychains4也可以用源码安装
$ git clone [email protected]:rofl0r/proxychains-ng.git $ sudo make $ sudo make install $ sudo make install-config安装完之后修改/etc/proxychains4.conf文件,加入代理配置即可,本例(CFW)修改如下:
[ProxyList] # add proxy here ... # meanwile # defaults set to "tor" http 127.0.0.1 7890 socks5 127.0.0.1 7890配置好之后,在想要使用代理的情况下加上proxychains4前缀即可使用,例如:
$ proxychains4 curl -L www.google.com $ proxychains4 git clone xxx.git其他设置
使用 privoxy 将 socks5 转为 http 代理
前文有提到,如果你是使用ss客户端或者其他只提供socks5 proxy服务的客户端的话,那么你很需要额外配置一个http proxy,这是因为有很多应用不支持socks5,比如wget
$ export http_proxy=socks5://127.0.0.1:7890 $ wget www.google.com Error parsing proxy URL socks5://127.0.0.1:7890: Unsupported scheme ‘socks5’. $ export http_proxy=:7890 $ wget www.google.com --2022-03-19 14:50:04-- Connecting to 127.0.0.1:7890... connected.你需要使用 privoxy 将 socks5 转为 http 代理,使用包管理工具安装并配置:
$ sudo apt install privoxy # 在配置文件末尾加上代理配置 $ echo "forward-socks5t /<host:port> ." | sudo tee -a /etc/privoxy/config # 本例如下,如果你是使用ss的话,应该是8080端口 $ echo "forward-socks5t /127.0.0.1:7890 ." | sudo tee -a /etc/privoxy/config # 重启服务即可使用 $ sudo systemctl restart privoxy.service $ sudo systemctl enable privoxy.service现在,你将获得一个http proxy为:8118,8118是privoxy默认的服务监听端口,然后你就可以使用:8118作为你的http proxy使用在前文的配置中了