在配置好代理的情况下, apt-get命令无法正常使用代理.
解决方案是更改apt-get的配置文件. 理论上也可以配置环境变量来完成, 但是在我这里不work
解决方案: 引用自:
https://blog.csdn.net/gong_wejoy/article/details/118545887
apt-get专用代理设置
这种方法要用到/etc/apt/文件夹下的apt.conf文件。如果您希望apt-get(而不是其他应用程序)一直使用http代理,您可以使用这种方式。
注意: 某些情况下,系统安装过程中没有建立apt配置文件。下面的操作将视情况修改现有的配置文件或者新建配置文件。
sudo gedit /etc/apt/apt.conf
在您的apt.conf文件中加入下面
1 | Acquire::http::proxy "http://web-proxy.oa.com:8080"; |
保存apt.conf文件。
如果conf文件行不通,也可以直接设置apt的临时变量
1 | sudo apt-get -o Acquire::http::proxy="http://web-proxy.oa.com:8080/" update |
关于ping与VPN
尝试将clash设置为tun模式, 从而使ping能够正常工作. 但是发现设置成tun模式后, 其他东西依然正常, ping却彻底失效了, 连百度都ping不通. 排查了好一阵也没有解决. 最后还是作罢, 老老实实用普通的模式.
下面是GPT关于这部分知识的回答
怎么样在终端中使用代理
要在终端中配置环境变量以使用代理,你可以在 ~/.bashrc
或 ~/.bash_profile
(取决于你的 shell)中添加以下内容:
1 | export http_proxy="http://127.0.0.1:7897" |
如果你使用的是 SOCKS 代理,可以配置如下:
1 | export ALL_PROXY="socks5://127.0.0.1:7898" |
添加后,保存文件并在终端中运行以下命令使更改生效:
1 | source ~/.bashrc |
或
1 | source ~/.bash_profile |
这样配置后,终端中的网络请求就会通过代理服务器。如果你有其他需要特别配置的工具,请告诉我!
配置好了, 为什么终端还是ping不通?
如果你在终端中配置了代理环境变量,但仍然无法 ping 通 Google,可能是因为 ping
命令不使用 HTTP(S) 代理。ping
直接通过 ICMP 协议进行通信,而代理只适用于 HTTP/HTTPS 流量。
你可以尝试使用其他工具来验证网络连接,例如 curl
或 wget
,并确保它们能够通过代理访问外部网站。例如:
1 | curl -I https://www.google.com |
如果 curl
能够正常工作,但 ping
仍然无法连接,这并不意味着你的代理配置有问题。如果你需要完全依赖于代理来访问所有网络请求,可以考虑使用 VPN 软件,它会将所有流量都通过代理,而不仅限于 HTTP/HTTPS。
当你运行 curl -I https://www.google.com
时,正常输出通常包括 HTTP 响应头,示例如下:
1 | HTTP/2 200 |
输出中的关键字段包括:
- HTTP/2 200: 表示请求成功,返回状态码为 200。
- content-type: 表示响应内容的类型。
- date: 表示响应时间。
- expires 和 cache-control: 指定缓存策略。
如果你的代理配置正确且网络正常,你应该能看到类似的响应。如果输出中有错误信息或状态码不是 200,请检查代理配置和网络连接。
clash使用VPN
使用 Clash 设置 VPN 功能通常涉及配置 Clash 的代理规则,以便它能够将流量路由通过代理服务器。以下是基本步骤:
-
安装 Clash: 确保你已经安装了 Clash,并能够正常启动。
-
配置 Clash:
- 打开 Clash 的配置文件,通常是
config.yaml
,并确保你已经添加了相应的代理节点。 - 你可以在
proxies
部分添加你的代理节点信息。
- 打开 Clash 的配置文件,通常是
-
设置规则:
- 在
rules
部分,你可以设置流量路由规则。可以使用DIRECT
、PROXY
等规则将特定流量通过代理发送。 - 示例:YAML
1
2
3
4
5rules:
- DOMAIN-SUFFIX,google.com,PROXY
- DOMAIN-SUFFIX,youtube.com,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY
- 在
-
启动 Clash: 启动 Clash,并确保它正常运行。
-
系统代理:
- 确保在系统网络设置中选择使用 Clash 作为代理。通常可以在网络设置中选择手动配置代理,设置代理地址为
127.0.0.1
,端口为 Clash 配置中的mixed-port
(例如7890
)。
- 确保在系统网络设置中选择使用 Clash 作为代理。通常可以在网络设置中选择手动配置代理,设置代理地址为
-
VPN 功能:
- 如果 Clash 支持 TUN 模式,你可以在配置文件中启用它,通常需要添加或调整以下内容:YAML
1
2
3tun:
enable: true
stack: gvisor - 启动 Clash 后,它将创建一个虚拟网络接口,所有流量将通过 Clash 进行路由。
- 如果 Clash 支持 TUN 模式,你可以在配置文件中启用它,通常需要添加或调整以下内容:
-
验证: 使用
curl
或其他网络工具检查流量是否正确通过代理,确保你能够访问被限制的网站。
请根据你的具体需求调整配置,并确保你的 Clash 版本支持这些功能。如果遇到具体问题,随时告诉我!
apt命令使用什么协议
apt-get
命令主要使用 HTTP 或 HTTPS 协议与软件源进行通信。通过这些协议,它可以下载软件包和更新。因此,如果你希望 apt-get
通过代理访问外部软件源,可以使用与 http_proxy
和 https_proxy
环境变量相同的设置。
你可以在终端中设置这两个环境变量,或者在使用 apt-get
时通过 -o
选项指定代理。例如:
1 | sudo apt-get -o Acquire::http::Proxy="http://127.0.0.1:7897" -o Acquire::https::Proxy="http://127.0.0.1:7897" update |
这样,apt-get
就会通过你指定的代理进行更新。如果你想让这个配置永久生效,可以在 /etc/apt/apt.conf.d/
目录下创建一个配置文件,例如 99proxy
,并添加以下内容:
1 | Acquire::http::Proxy "http://127.0.0.1:7897"; |
保存后,apt-get
将自动使用这些代理设置。
环境变量正常, 而apt-get还是没有走代理
如果 curl
能够正常工作,但 apt-get
无法通过代理访问网站,可能有以下几种原因:
-
环境变量未正确设置:
- 确保你已经在终端中设置了
http_proxy
和https_proxy
环境变量。你可以在终端中输入以下命令检查是否设置成功:BASH1
2echo $http_proxy
echo $https_proxy
- 确保你已经在终端中设置了
-
APT 配置问题:
- 检查你的 APT 配置文件是否正确。确认
/etc/apt/apt.conf.d/99proxy
文件中是否包含以下内容:PLAINTEXT1
2Acquire::http::Proxy "http://127.0.0.1:7897";
Acquire::https::Proxy "http://127.0.0.1:7897"; - 确保语法正确,文件没有格式问题。
- 检查你的 APT 配置文件是否正确。确认
-
APT 服务未重新启动:
- 如果你在设置了代理后没有重新启动终端或服务,APT 可能不会立即识别新的代理设置。尝试重启终端。
-
代理类型不兼容:
- 确保你使用的代理能够处理 APT 的请求。有些 SOCKS 代理需要额外的设置,确保你使用的 HTTP 代理兼容 APT。
-
网络问题:
- 确保你的网络连接正常,且没有其他防火墙或网络策略阻止 APT 通过代理进行通信。
-
使用
-o
选项手动指定代理:- 尝试使用以下命令手动指定代理:BASH
1
sudo apt-get -o Acquire::http::Proxy="http://127.0.0.1:7897" -o Acquire::https::Proxy="http://127.0.0.1:7897" update
- 尝试使用以下命令手动指定代理:
如果以上步骤仍无法解决问题,查看 APT 的错误信息可能会提供更多线索。你可以运行 sudo apt-get update
并观察输出中的错误信息。
v1.5.1