少女祈祷中...

在配置好代理的情况下, 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文件中加入下面

TXT
1
2
3
Acquire::http::proxy "http://web-proxy.oa.com:8080";
Acquire::ftp::proxy "ftp://web-proxy.oa.com:8080";
Acquire::https::proxy "https://web-proxy.oa.com:8080";

保存apt.conf文件。
如果conf文件行不通,也可以直接设置apt的临时变量

SHELL
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)中添加以下内容:

BASH
1
2
3
4
export http_proxy="http://127.0.0.1:7897"
export https_proxy="http://127.0.0.1:7897"
export ftp_proxy="http://127.0.0.1:7897"
export no_proxy="localhost,127.0.0.1"

如果你使用的是 SOCKS 代理,可以配置如下:

BASH
1
export ALL_PROXY="socks5://127.0.0.1:7898"

添加后,保存文件并在终端中运行以下命令使更改生效:

BASH
1
source ~/.bashrc

BASH
1
source ~/.bash_profile

这样配置后,终端中的网络请求就会通过代理服务器。如果你有其他需要特别配置的工具,请告诉我!

配置好了, 为什么终端还是ping不通?

如果你在终端中配置了代理环境变量,但仍然无法 ping 通 Google,可能是因为 ping 命令不使用 HTTP(S) 代理。ping 直接通过 ICMP 协议进行通信,而代理只适用于 HTTP/HTTPS 流量。

你可以尝试使用其他工具来验证网络连接,例如 curlwget,并确保它们能够通过代理访问外部网站。例如:

BASH
1
curl -I https://www.google.com

如果 curl 能够正常工作,但 ping 仍然无法连接,这并不意味着你的代理配置有问题。如果你需要完全依赖于代理来访问所有网络请求,可以考虑使用 VPN 软件,它会将所有流量都通过代理,而不仅限于 HTTP/HTTPS。

当你运行 curl -I https://www.google.com 时,正常输出通常包括 HTTP 响应头,示例如下:

PLAINTEXT
1
2
3
4
5
6
HTTP/2 200
content-type: text/html; charset=UTF-8
date: Fri, 01 Nov 2024 12:00:00 GMT
expires: -1
cache-control: private, max-age=0
...

输出中的关键字段包括:

  • HTTP/2 200: 表示请求成功,返回状态码为 200。
  • content-type: 表示响应内容的类型。
  • date: 表示响应时间。
  • expirescache-control: 指定缓存策略。

如果你的代理配置正确且网络正常,你应该能看到类似的响应。如果输出中有错误信息或状态码不是 200,请检查代理配置和网络连接。

clash使用VPN

使用 Clash 设置 VPN 功能通常涉及配置 Clash 的代理规则,以便它能够将流量路由通过代理服务器。以下是基本步骤:

  1. 安装 Clash: 确保你已经安装了 Clash,并能够正常启动。

  2. 配置 Clash:

    • 打开 Clash 的配置文件,通常是 config.yaml,并确保你已经添加了相应的代理节点。
    • 你可以在 proxies 部分添加你的代理节点信息。
  3. 设置规则:

    • rules 部分,你可以设置流量路由规则。可以使用 DIRECTPROXY 等规则将特定流量通过代理发送。
    • 示例:
      YAML
      1
      2
      3
      4
      5
      rules:
      - DOMAIN-SUFFIX,google.com,PROXY
      - DOMAIN-SUFFIX,youtube.com,PROXY
      - GEOIP,CN,DIRECT
      - MATCH,PROXY
  4. 启动 Clash: 启动 Clash,并确保它正常运行。

  5. 系统代理:

    • 确保在系统网络设置中选择使用 Clash 作为代理。通常可以在网络设置中选择手动配置代理,设置代理地址为 127.0.0.1,端口为 Clash 配置中的 mixed-port(例如 7890)。
  6. VPN 功能:

    • 如果 Clash 支持 TUN 模式,你可以在配置文件中启用它,通常需要添加或调整以下内容:
      YAML
      1
      2
      3
      tun:
      enable: true
      stack: gvisor
    • 启动 Clash 后,它将创建一个虚拟网络接口,所有流量将通过 Clash 进行路由。
  7. 验证: 使用 curl 或其他网络工具检查流量是否正确通过代理,确保你能够访问被限制的网站。

请根据你的具体需求调整配置,并确保你的 Clash 版本支持这些功能。如果遇到具体问题,随时告诉我!

apt命令使用什么协议

apt-get 命令主要使用 HTTP 或 HTTPS 协议与软件源进行通信。通过这些协议,它可以下载软件包和更新。因此,如果你希望 apt-get 通过代理访问外部软件源,可以使用与 http_proxyhttps_proxy 环境变量相同的设置。

你可以在终端中设置这两个环境变量,或者在使用 apt-get 时通过 -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-get 就会通过你指定的代理进行更新。如果你想让这个配置永久生效,可以在 /etc/apt/apt.conf.d/ 目录下创建一个配置文件,例如 99proxy,并添加以下内容:

PLAINTEXT
1
2
Acquire::http::Proxy "http://127.0.0.1:7897";
Acquire::https::Proxy "http://127.0.0.1:7897";

保存后,apt-get 将自动使用这些代理设置。

环境变量正常, 而apt-get还是没有走代理

如果 curl 能够正常工作,但 apt-get 无法通过代理访问网站,可能有以下几种原因:

  1. 环境变量未正确设置

    • 确保你已经在终端中设置了 http_proxyhttps_proxy 环境变量。你可以在终端中输入以下命令检查是否设置成功:
      BASH
      1
      2
      echo $http_proxy
      echo $https_proxy
  2. APT 配置问题

    • 检查你的 APT 配置文件是否正确。确认 /etc/apt/apt.conf.d/99proxy 文件中是否包含以下内容:
      PLAINTEXT
      1
      2
      Acquire::http::Proxy "http://127.0.0.1:7897";
      Acquire::https::Proxy "http://127.0.0.1:7897";
    • 确保语法正确,文件没有格式问题。
  3. APT 服务未重新启动

    • 如果你在设置了代理后没有重新启动终端或服务,APT 可能不会立即识别新的代理设置。尝试重启终端。
  4. 代理类型不兼容

    • 确保你使用的代理能够处理 APT 的请求。有些 SOCKS 代理需要额外的设置,确保你使用的 HTTP 代理兼容 APT。
  5. 网络问题

    • 确保你的网络连接正常,且没有其他防火墙或网络策略阻止 APT 通过代理进行通信。
  6. 使用 -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 并观察输出中的错误信息。

Powered By Valine
v1.5.1