简介

Kevin2li大约 2 分钟

简介

下面以一个具体案例说明代理服务器的设置与使用。

aaa.png
aaa.png

如图,我的台式机目前无法上网,现在想借助代理服务器上网。

方法

配置代理服务器

首先,需要选择一款支持http/https代理服务的软件,本文以Tinyproxyopen in new window为例进行配置。

:::info{title="Tinyproxy介绍"} Tinyproxy是一个轻量级的开源HTTP/HTTPS代理守护程序,它从一开始就设计得既快又小,是一个理想的解决方案,适用于需要全功能HTTP代理的嵌入式部署等用例,但无法使用较大代理的系统资源。

Github: https://github.com/tinyproxy/tinyproxyopen in new window :::

安装

# For Ubuntu:
sudo apt install tinyproxy

编辑配置

配置文件位置:/etc/tinyproxy/tinyproxy.conf

基本配置:

User tinyproxy
Group tinyproxy
Port 8888
Timeout 600

# Allow 127.0.0.1
# Allow ::1
# Allow 192.168.0.0/16
# Allow 172.16.0.0/12
# Allow 10.0.0.0/8

# BasicAuth user password

重启服务

sudo systemctl restart tinyproxy
sudo systemctl status tinyproxy

验证

curl -x localhost:8888 https://www.baidu.com

输出:

image.png
image.png

这样,代理服务器的设置就基本完成了。

路由器端口转发

由于代理服务器位于内网上,我的台式机无法直接访问,需要对路由器管理界面上设置端口转发,将路由器的指定端口(如8888)转发到内网代理服务器的端口8888上。

image.png
image.png

如此,便可通过10.14.129.235:8888访问到内网代理服务器192.168.2.1:8888的服务。

客户端设置代理

终端设置代理

先简单测试一下:

curl -x 10.14.129.235:8888 https://www.baidu.com

输出:

image.png
image.png

成功!

如果只是在当前终端临时使用,可以输入如下命令:

export http_proxy="http://10.14.129.235:8888"
export https_proxy="http://10.14.129.235:8888"

# socks代理
export http_proxy="socks5://dante_user:123456@127.0.0.1:1080"
export https_proxy="socks5://dante_user:123456@127.0.0.1:1080"

如果经常使用,可以把它写入配置文件(如/etc/profile,~/.bashrc等)最后,每次自动加载。

:::warning{title="注意"} 由于tinyproxy代理http/https流量,因此ping命令可能还是ping不通(走的ICMP协议)。 :::

Ubuntu-apt设置使用代理

参考:https://askubuntu.com/questions/23666/apt-get-does-not-work-with-proxyopen in new window

当设置好代理后,发现apt命令仍然无法正常使用,需要手动进行下面的设置。

配置文件路径:/etc/apt/apt.conf,添加下面内容:

Acquire::http::proxy "http://User:Password@host:port/";
Acquire::https::proxy "https://User:Password@host:port/";
Acquire::ftp::proxy "ftp://User:Password@host:port/";

docker设置使用代理

参考:https://docs.docker.com/network/proxy/open in new window

  • 全局代理(应用到所有容器) 在~/.docker/config.json中加入下面条目:
{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://192.168.1.12:3128",
     "httpsProxy": "http://192.168.1.12:3128",
     "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
   }
 }
}
  • 局部代理(指定容器使用代理)
# 使用宿主机代理(进入容器内部执行)
export ALL_PROXY=http://host.docker.internal:7890

代码中设置代理

  • Python
import os
os.environ["http_proxy"] = "http://10.14.129.235:8888"
os.environ["https_proxy"] = "http://10.14.129.235:8888"