Linux环境下使用Tinyproxy代理详解
一、Tinyproxy简介
Tinyproxy是一个轻量级的HTTP/HTTPS代理守护进程,专为POSIX操作系统设计。它体积小、速度快,非常适合资源受限的环境。
主要特点:
- 轻量级,内存占用小
- 支持HTTP和HTTPS代理
- 支持透明代理
- 支持访问控制列表
- 支持匿名代理
- 易于配置和管理
二、安装Tinyproxy
Ubuntu/Debian系统:
sudo apt update
sudo apt install tinyproxy
CentOS/RHEL/Fedora系统:
# CentOS/RHEL 7/8
sudo yum install epel-release
sudo yum install tinyproxy
# CentOS/RHEL 9/Fedora
sudo dnf install tinyproxy
从源码编译安装:
# 下载最新版本
wget https://github.com/tinyproxy/tinyproxy/releases/download/1.11.1/tinyproxy-1.11.1.tar.gz
tar -xzf tinyproxy-1.11.1.tar.gz
cd tinyproxy-1.11.1
# 编译安装
./configure
make
sudo make install
三、配置文件详解
配置文件通常位于:
/etc/tinyproxy/tinyproxy.conf (Debian/Ubuntu)
/etc/tinyproxy.conf (CentOS/RHEL)
常用配置选项:
# 监听地址和端口(默认监听所有接口,端口8888)
Port 8888
Listen 0.0.0.0
# 允许访问的客户端IP(可配置多个)
Allow 127.0.0.1
Allow 192.168.0.0/16
# 如果想允许所有客户端,注释掉所有Allow行
# 基础认证(可选)
BasicAuth username password
# 匿名代理(隐藏客户端IP)
Anonymous "Host"
Anonymous "Authorization"
Anonymous "Cookie"
# 连接超时设置
Timeout 600
# 日志设置
LogFile "/var/log/tinyproxy/tinyproxy.log"
LogLevel Info
# LogLevel可选:Critical, Error, Warning, Notice, Info, Connect
# 最大连接数
MaxClients 100
# 禁止访问的域名/URL
Filter "/etc/tinyproxy/filter"
FilterURLs On
FilterExtended On
# 启用上游代理
#Upstream http 1.2.3.4:8080
#Upstream http proxy2.example.com:8080
# 启用HTTPS支持
# 需要生成SSL证书
#SSLCertFile "/etc/tinyproxy/cert.pem"
#SSLKeyFile "/etc/tinyproxy/key.pem"
四、基本使用
1. 启动服务:
# 系统服务方式
sudo systemctl start tinyproxy
sudo systemctl enable tinyproxy
# 手动启动(调试用)
sudo tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf
2. 查看状态:
sudo systemctl status tinyproxy
3. 停止服务:
sudo systemctl stop tinyproxy
4. 重启服务:
sudo systemctl restart tinyproxy
5. 查看日志:
sudo tail -f /var/log/tinyproxy/tinyproxy.log
五、客户端配置
1. 命令行设置代理:
# 临时设置(只对当前终端有效)
export http_proxy="http://proxy-server-ip:8888"
export https_proxy="http://proxy-server-ip:8888"
export ftp_proxy="http://proxy-server-ip:8888"
export no_proxy="localhost,127.0.0.1"
# 测试代理是否生效
curl -I --proxy http://proxy-server-ip:8888 http://www.example.com
2. 系统级代理设置(Ubuntu GNOME):
# 通过gsettings设置
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http host 'proxy-server-ip'
gsettings set org.gnome.system.proxy.http port 8888
3. APT包管理器代理设置:
创建文件 /etc/apt/apt.conf.d/99proxy:
Acquire::http::Proxy "http://proxy-server-ip:8888";
Acquire::https::Proxy "http://proxy-server-ip:8888";
4. Git代理设置:
git config --global http.proxy http://proxy-server-ip:8888
git config --global https.proxy http://proxy-server-ip:8888
六、高级配置示例
1. 带认证的代理配置:
Port 8888
Listen 0.0.0.0
Allow 127.0.0.1
BasicAuth user1 password1
BasicAuth user2 password2
Timeout 600
MaxClients 50
LogLevel Info
2. 透明代理配置:
Port 8888
Listen 192.168.1.100
Allow 192.168.1.0/24
DisableViaHeader Yes
TransparentProxy On
3. 上游代理配置(代理链):
Port 8888
Listen 0.0.0.0
Allow 127.0.0.1
Upstream http proxy1.example.com:8080
Upstream http proxy2.example.com:8080
七、防火墙配置
# 开放8888端口(如果服务器有防火墙)
# UFW (Ubuntu)
sudo ufw allow 8888/tcp
# Firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=8888/tcp
sudo firewall-cmd --reload
# iptables
sudo iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
八、故障排除
1. 检查服务状态:
sudo systemctl status tinyproxy
2. 检查端口监听:
sudo netstat -tlnp | grep tinyproxy
sudo ss -tlnp | grep tinyproxy
3. 查看详细日志:
sudo journalctl -u tinyproxy -f
sudo tail -f /var/log/tinyproxy/tinyproxy.log
4. 测试代理连接:
# 从客户端测试
curl -x http://proxy-server-ip:8888 http://httpbin.org/ip
# 查看响应头
curl -I -x http://proxy-server-ip:8888 http://example.com
5. 常见错误及解决:
错误:无法绑定端口
- 检查端口是否被占用:
sudo lsof -i :8888
- 检查是否有其他代理服务运行
错误:权限拒绝
- 确保tinyproxy以正确用户运行
- 检查配置文件中
User和Group设置
错误:客户端无法连接
- 检查防火墙设置
- 确认
Listen地址是否正确
- 检查
Allow规则是否包含客户端IP
九、安全建议
限制访问IP:只允许必要的IP段访问
更改默认端口:不使用默认的8888端口
启用认证:为代理设置用户名/密码
定期更新:保持软件最新版本
日志监控:定期检查代理日志
使用HTTPS:如果需要传输敏感数据,配置SSL
限制连接数:避免资源耗尽攻击
十、性能调优
# 增加最大连接数(根据服务器性能调整)
MaxClients 500
# 调整超时时间
Timeout 300
# 增加文件描述符限制
# 编辑 /etc/security/limits.conf
# * soft nofile 4096
# * hard nofile 8192
# 启用连接复用
MaxRequestsPerChild 0 # 0表示不限制,子进程不重启
十一、脚本示例
自动配置脚本:
#!/bin/bash
# auto-setup-tinyproxy.sh
PROXY_PORT=8888
ALLOW_NETWORK="192.168.1.0/24"
# 备份原配置
sudo cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.backup
# 生成新配置
cat > /tmp/tinyproxy.conf << EOF
Port $PROXY_PORT
Listen 0.0.0.0
Allow 127.0.0.1
Allow $ALLOW_NETWORK
Timeout 600
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
LogLevel Info
PidFile "/var/run/tinyproxy/tinyproxy.pid"
LogFile "/var/log/tinyproxy/tinyproxy.log"
EOF
# 应用配置
sudo mv /tmp/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf
sudo systemctl restart tinyproxy
sudo systemctl enable tinyproxy
echo "Tinyproxy配置完成,运行在端口 $PROXY_PORT"
这个指南涵盖了Tinyproxy在Linux环境下的主要使用场景,根据实际需求调整配置即可。