ubuntu网络代理设置
Ubuntu的网络网络代理设置,说穿了就是代理改几个文件的事。但很多人卡在“改了没用”上,设置原因多半是网络没分清系统代理和终端代理的区别。
桌面环境里,代理Settings → Network → Network Proxy,设置选Manual,网络填上IP和端口,代理点Apply。设置浏览器、网络软件中心立刻走代理,代理这招对大多数GUI程序有效。设置但你要是网络打开终端敲curl或者git pull,会发现压根不走代理——因为终端程序不读GNOME的代理设置,它们只认环境变量。设置
所以真正干活的地方是/etc/environment。用sudo编辑它,加上这几行:
http_proxy="http://127.0.0.1:7890" https_proxy="http://127.0.0.1:7890" ftp_proxy="http://127.0.0.1:7890" no_proxy="localhost,127.0.0.1,::1" 存盘后重启或重新登录,然后echo $http_proxy验证。这里有个坑:如果代理服务器本身需要认证,URL里得写成http://用户名:密码@IP:端口,密码里带特殊字符还得URL编码,麻烦得很。
临时调试场景就别动全局文件了。直接在终端里export http_proxy=http://127.0.0.1:7890,当前会话生效,关掉终端就失效,干净利落。我自己经常这么干——公司网络时好时坏,临时挂代理抓个包,完事重启终端,不留痕迹。
apt命令的代理是独立配置的。在/etc/apt/apt.conf.d/下新建一个文件,比如proxy.conf,写入Acquire::http::Proxy "http://127.0.0.1:7890";,同理https和ftp也要单独写。不写的话,apt update会一直卡在连接阶段,直到超时。
还有一类特殊情况:代理只对特定域名生效。比如你只想让访问GitHub的流量走代理,其他直连。那就在环境变量里用no_proxy排除不需要代理的地址,但反过来想“只代理某些域名”就比较麻烦——要么用ALL_PROXY配合PAC脚本,要么装个proxychains4,在命令前加前缀:proxychains4 git clone https://github.com/xxx。这工具读/etc/proxychains4.conf,默认socks5,改一下端口就能用。
最后提醒一句:别设完代理忘了关。有次我改完/etc/environment忘了删,结果第二天所有网络请求都往一个已关闭的代理端口上撞,系统卡得像幻灯片。排查了半天才反应过来,脸都绿了。所以改完配置,先curl -I http://example.com测一下通不通,再跑实际任务。稳一手,不丢人。
