在 CentOS 上搭建代理服务器通常涉及安装和配置代理软件。以下是使用 Squid 代理服务器的步骤,这是一种常用的开源代理服务器。

安装 Squid

  1. 更新系统包
    sudo yum update -y
    
  2. 安装 Squid
    sudo yum install squid -y
    

配置 Squid

  1. 备份默认配置文件
    sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
    
  2. 编辑 Squid 配置文件
    sudo vim /etc/squid/squid.conf
    

    以下是自带的一些基本配置示例:

    • 允许本地网络访问:
      acl localnet src 192.168.1.0/24
      http_access allow localnet
      http_access deny all
      
    • 设置代理端口:
      http_port 3128
      

    你需要自定添加自定义配置:

       # 允许特定 IP 地址访问
       acl allowed_ips src 192.168.1.100
       http_access allow allowed_ips
    
       # 或者,允许所有 IP 地址访问(仅用于测试,生产环境中应小心使用)
       http_access allow all
    
  3. 保存并关闭配置文件

重新加载 Squid 配置

如果你修改了 squid.conf 文件,请重新加载 Squid 配置:

sudo systemctl reload squid

启动 Squid 服务

  1. 启动 Squid
    sudo systemctl start squid
    
  2. 设置开机自启动
    sudo systemctl enable squid
    
  3. 检查 Squid 状态
    sudo systemctl status squid
    

防火墙配置

如果你的 CentOS 系统启用了防火墙,你需要允许 Squid 使用的端口(默认是 3128)。

  1. 允许 Squid 端口通过防火墙
    sudo firewall-cmd --permanent --add-port=3128/tcp
    sudo firewall-cmd --reload
    
  2. 如果你需要允许特定的 IP 地址访问代理端口,可以使用富规则:

     sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3128" accept'
     sudo firewall-cmd --reload
    

测试代理服务器

在你的客户端设备上,设置浏览器或操作系统使用你搭建的代理服务器,指定代理 IP 和端口(默认是 3128)。例如,如果你的服务器 IP 是 192.168.1.10,那么在客户端的代理设置中输入:

  • 代理服务器:192.168.1.10
  • 端口:3128

使用 curl 测试代理服务器:

curl -x http://your_proxy_host:3128 http://www.example.com

设置用户名密码

  1. 编辑Squid配置文件

    sudo vim /etc/squid/squid.conf
    

    在配置文件中,找到或添加以下行来启用基本认证。注意,这些行应该放在http_access deny all之前,以确保认证被正确处理:

    auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
    acl auth_user proxy_auth REQUIRED
    http_access allow auth_user
    http_access deny all
    

    这里/usr/lib64/squid/basic_ncsa_auth是认证程序的路径(这可能会因Squid版本和Linux发行版而异,请根据你的系统实际情况调整),/etc/squid/passwd是存储用户名和密码的文件。

  2. 生成密码文件

    如果你的系统中没有htpasswd工具,你需要先安装它。htpasswd通常作为httpd-tools包的一部分提供:

    sudo yum install httpd-tools
    

    然后,使用htpasswd工具生成密码文件。如果文件不存在,-c选项会创建它:

    sudo htpasswd -c /etc/squid/passwd YOUR_USERNAME
    

    替换YOUR_USERNAME为你希望创建的用户名。命令执行后,系统会提示你输入密码。

    如果密码文件已经存在,并且你想要添加更多用户,请不要使用-c选项,否则之前的用户数据将被覆盖:

    sudo htpasswd /etc/squid/passwd ANOTHER_USERNAME
    
  3. 重启Squid服务

sudo systemctl restart squid

配置Git代理

在Git中设置代理连接,可以通过命令行来配置。以下是设置HTTP和HTTPS代理的方法:

设置HTTP代理和HTTPS代理:

git config --global http.proxy http://<proxy_user>:<proxy_password>@<proxy_host>:<proxy_port>
git config --global https.proxy https://<proxy_user>:<proxy_password>@<proxy_host>:<proxy_port>

如果你不需要认证,可以省略用户名和密码部分:

git config --global http.proxy http://<proxy_host>:<proxy_port>
git config --global https.proxy https://<proxy_host>:<proxy_port>

查看当前代理设置:

git config --global --get http.proxy
git config --global --get https.proxy

取消代理设置:

git config --global --unset http.proxy
git config --global --unset https.proxy

请根据你的实际代理设置替换, , , 和

其他配置(可选)

你可以根据需要进一步配置 Squid,例如:

  • 启用缓存:
    cache_dir ufs /var/spool/squid 100 16 256
    
  • 设置访问日志:
    access_log /var/log/squid/access.log squid
    

完成以上步骤后,你的 CentOS 服务器上应该已经成功搭建并运行了 Squid 代理服务器。