SDB:配置代理
本页面讲述了如何让应用程序通过代理;对于代理服务所需的客户端,详见图形客户端。
对于架设代理服务所需的技术和文档,或者如何获取、使用第三方架设的付费服务,请自行谷歌。
目录
环境变量类
环境变量是最原始的方式。理论上讲,所有合格的 Unix 程序都会遵循环境变量,而 YaST、桌面环境的设置中心(如KDE的系统设置)、/etc/sysconfig/proxy
配置文件本质上是这种方式。
临时环境变量
设置代理:
export http_proxy=http://<代理服务器IP>:<代理服务器端口>; export https_proxy=$http_proxy;
例如:
export http_proxy=http://127.0.0.1:7890; export https_proxy=$http_proxy;
取消代理:
unset http_proxy&&unset https_proxy
如果你要将这条命令简化,请编辑 ~/.bashrc
,将上述的命令添加至 bash shell 配置文件中,例如:
alias set-proxy="export http_proxy=http://127.0.0.1:7890; export https_proxy=$http_proxy;" alias unset-proxy="unset http_proxy&&unset https_proxy" #设置环境变量的快捷命令
或者设置为永久变量:
export http_proxy=http://127.0.0.1:7890; export https_proxy=$http_proxy #设置环境变量
Sysconfig
图形化界面(YaST)
假设,您代理软件支持以下代理方式,并且监听地址是 127.0.0.1 ,socks 监听端口是 1089,HTTP 端口是 8889,那么,sock 代理地址应该为:socks://127.0.0.1:1089
打开 YaST ,找到 Sysconfig Editor,打开,依次点击 Network、Proxy,进入代理编辑页面。
在 PROXY_ENABLE ,把值从 no 修改为 yes 在 HTTP_PROXY,填入 http://127.0.0.1:8889/ 在 HTTPS_PROXY,填入 http://127.0.0.1:8889/ 在 FTP_PROXY,填入 http://127.0.0.1:8889/ 在 SOCKS_PROXY,填入 socks://127.0.0.1:1089
第三步,点击确定更改,保存退出,重新登陆系统即可。
纯文本界面
打开 /etc/sysconfig/proxy 文件:
sudo nano /etc/sysconfig/proxy
假设,您代理软件的监听地址是 127.0.0.1,socks 监听端口是 1089,HTTP 端口是 8889,那么请修改下列设置项目:
PROXY_ENABLED="yes" HTTP_PROXY="http://127.0.0.1:8889/" HTTPS_PROXY="http://127.0.0.1:8889/" FTP_PROXY="http://127.0.0.1:8889/" SOCKS_SERVER="socks://127.0.0.1:1089" SOCKS5_SERVER="socks://127.0.0.1:1089"
保存文件,重新登陆系统即可。
编辑 desktop 文件
除了在 shell 会话中设置全局变量,你可以将变量写入到启动程序的快捷方式(desktop 文件)中,而不必为整个系统设置代理。
例如,Flathub 的 com.discordapp.Discord
的 desktop 快捷启动文件信息如下:
poplar@c004-h0:~> cat /home/poplar/.local/share/flatpak/app/com.discordapp.Discord/current/active/export/share/applications/com.discordapp.Discord.desktop [Desktop Entry] Name=Discord StartupWMClass=discord Comment=All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone. GenericName=Internet Messenger Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=discord com.discordapp.Discord Icon=com.discordapp.Discord Type=Application Categories=Network;InstantMessaging; Path=/usr/bin X-Flatpak-Tags=proprietary; X-Flatpak=com.discordapp.Discord
此时,为了给 discord 单独设置代理,你可以编辑 Exec=
命令,加入:
env http_proxy=http://127.0.0.1:7890 https_proxy=http://127.0.0.1:7890
然后将修改后的 desktop 文件另存至 ~/.local/share/applications
,例如:
poplar@c004-h0:~> cat ~/.local/share/applications/"Discord X.desktop" [Desktop Entry] Name=Discord X StartupWMClass=discord Comment=All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone. GenericName=Internet Messenger Exec=env http_proxy=http://127.0.0.1:7890 https_proxy=http://127.0.0.1:7890 /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=discord com.discordapp.Discord Icon=com.discordapp.Discord Type=Application Categories=Network;InstantMessaging; Path=/usr/bin X-Flatpak-Tags=proprietary; X-Flatpak=com.discordapp.Discord
注意,请为编辑后的 desktop 文件设置一个不同的 Name=
信息以便于与原始应用区分。
Proxychains
你可以使用 proxychains-ng 劫持系统进程,强行代理。
ProxyChains 是一个 UNIX 程序,它通过预加载的DLL(dlsym(),LD_PRELOAD)钩住动态链接程序中与网络相关的 libc 函数,并通过 SOCKS4a/5 或 HTTP代理重定向连接。它仅支持TCP连接(不支持UDP、ICMP等)。实际使用过程中,一些 Java、Go 应用不会遵循 Proxychains。
1. 运行命令安装 proxychains-ng :
sudo zypper in proxychains-ng
2. 编辑配置文件:
sudo nano /etc/proxychains.conf
然后在文件的末尾输入代理服务器地址和端口(具体取决于你代理服务的配置,如果你的代理服务软件支持 socks 代理,你可以考虑只填入 socks5 ):
http 127.0.0.1 8889 socks5 127.0.0.1 1089
按 Left CTRL + O 保存更改,按 Left CTRL + X 退出文件。
3. 让某个应用程序走代理。
普通程序:
proxychains4 <你的命令行>
如:
proxychains telnet targethost.com
对于需要 Root 权限的程序,在原有的 sudo 命令后,插入 proxychains4 ,例如:
sudo proxychains4 zypper ref
如果你想要让 proxychains4 的输出内容变少(以避免干扰其他命令输入),你可以在配置文件中,将 #quiet_mode
文本行前的 # 删除,启用 quiet_mode 模式。
4. 设置别名
你可以在 ~/.bashrc
配置文件中写入:
alias sudo="sudo " #对 sudo 后的字符启用别名 alias zypper="proxychains4 zypper" #对 zypper 使用代理
然后运行:
source ~/.bashrc
这样,你就不必每次都输入很长的命令
图形客户端
对于客户端,建议提前准备好 appimage 或者二进制文件,而非依赖包管理器(如果要使用包管理器管理客户端,尽量使用 openSUSE 官方 oss 或 non-oss 仓库内的软件包);并熟悉客户端的配置文件位置(如果允许,尽量启用便携模式)。以防止出现以下情况在线仓库被阻断,无法下载软件包,或软件源提供的更新包导致客户端崩溃等影响代理网络服务正常运行的情况。
网络代理服务对于 Linux 非常重要,非常多的资源需要网络代理服务正常运行的情况下才能访问。
有关于此,查阅 Clash.Meta 和 V2Ray。
以下是一些流行的客户端和相关资源: