Skip to content

Ubuntu全局代理设置

配置SwitchyOmega代理设置仅仅能够实现浏览器代理,还需要设置全局代理才能在命令行访问国外资源

生成pac文件

安装pengac后生成pac文件

$ genpac --proxy="SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"

系统配置

打开系统设置->Network->Network proxy,选择MethodAutomatic,在Configuration URL中填入生成的文件路径

file://文件路径
# 我的
file:///home/zj/software/vpn/autoproxy.pac

点击Apply system wide即可生效

代理工具设置

代理操作使用SOCKS5协议,大多命令行操作使用HTTP/HTTPS协议,所以需要使用代理工具进行转换。可以使用工具 proxychains 或者 polipo,以 proxychains 为例

安装ProxyChains

安装:

sudo apt-get install proxychains

修改配置文件 /etc/proxychains.conf

#socks4     127.0.0.1 9050
socks5 127.0.0.1 1080

重启应用

sudo /etc/init.d/proxychains restart

测试命令

$ proxychains curl www.google.com
# 或
$ proxychains wget www.google.com

问题一:proxychains ping www.google.com出错

ProxyChains-3.1 (http://proxychains.sf.net)
ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
PING www.google.com (74.86.17.48) 56(84) bytes of data.

这里面共有两个问题,第一个问题:没有预加载 libproxychains.so.3

查找:

locate libproxychains.so.3

/usr/lib/x86_64-linux-gnu/libproxychains.so.3
/usr/lib/x86_64-linux-gnu/libproxychains.so.3.0.0

可以修改预加载文件 /usr/bin/proxychains

cat /usr/bin/proxychains

#!/bin/sh
echo "ProxyChains-3.1 (http://proxychains.sf.net)"
if [ $# = 0 ] ; then
    echo "  usage:"
    echo "      proxychains <prog> [args]"
    exit
fi
export LD_PRELOAD=libproxychains.so.3
exec "$@"

或者自己添加到环境变量

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libproxychains.so.3

问题二:proxychains 对 ping 没用

proxychains 使用的协议和 ping 使用的协议不同

相关阅读