**一、socks5/HTTP 代理**
1. **系统级全局代理:**
- 针对于Socks5代理,在终端输入如下命令:
echo 'export http_proxy=socks5://proxy_server_ip:port' >> ~/.bashrc
echo 'export https_proxy=$http_proxy' >> ~/.bashrc
source ~/.bashrc
对于 HTTP(S) 代理,则替换为相应的协议格式:
echo 'export http_proxy=http://username:password@proxy_server_ip:port' >> ~/.bashrc
echo 'export https_proxy=$http_proxy' >> ~/.bashrc
source ~/.bashrc
这样设定后,你的所有基于Unix Socket的应用程序(如wget/curl等)都将通过指定的代理服务器来发送请求。
2. **针对个别应用配置代理:**
- 若仅需部分应用程序走代理,比如Firefox浏览器,可在其偏好设置 -> 网络设置里手动添加SOCKS或HTTP proxy。
3. **利用Privoxy或者Polipo作为本地中间代理层:**
可安装这些软件并将它们指向远程 SOCKS 或 HTTP(s) 代理,并将其监听地址设为localhost以便其他应用直接连至本机上的这个端口即可达到间接使用远端代理的目的。
**二、透明代理与 PAC 脚本**
- 在企业环境中经常使用的透明代理可以通过iptables规则配合squid服务实现在内核层面拦截流量并通过代理转发:
shell
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port <your_squid_port>
同时需要在 squid 的配置文件 `/etc/squid/squid.conf` 中正确设置相关参数和服务内容。
另一种方式是采用PAC (Proxy Auto Configuration)脚本来自动决定哪些URL应经过代理,这对于有复杂策略要求的情况非常有用。首先创建一个pac文件然后告知环境去读取该文件路径:
javascript
function FindProxyForUrl(url, host) {
if(shExpMatch(host,"*.internal")) { // 内部域名直连
return "DIRECT";
} else { // 其他情况都用代理
return "PROXY your-proxy-server-ip:port; DIRECT";
}
}
之后再修改系统的环境变量或是对应应用的配置项引导到此 pac 文件位置。
**三、SSH隧道代理(动态 socks 代理)**
当你拥有一台可公网接入的VPS时,可以构建 SSH 隧道做为加密通道提供 socksv5 代理功能:
shell
ssh -D localhost:<local_bind_port> user@example.com
执行上述命令并在后台运行后,你可以在本地 `localhost:`<local_bind_port>` 上建立一个 SOCKSv5 代理用于其它客户端连接。
总结起来,无论你是出于何种原因要在 Linux 下启用代理上网,都有多种解决方案供选择。从简单的系统级别静态配置到高级灵活的 ssh tunneling 和自定义 PAC 规则,理解不同应用场景下所适用的技术手段有助于更好地应对复杂的网络状况以及提升工作效率。不过务必注意网络安全和个人隐私保护,在必要时候合理合法合规使用此类技术工具。