0%

squid服务端HTTP代理

服务器有多个外网IP,客户端通过 IP1 连接 HTTP 代理,则服务器用 IP1 代理客户访问网络

编译安装

1
2
3
4
5
6
wget http://www.squid-cache.org/Versions/v4/squid-4.17.tar.gz
tar xzf squid-4.17.tar.gz
cd squid-4.17
./configure CXXFLAGS="-DMAXTCPLISTENPORTS=3000" --prefix=/usr --localstatedir=/var--libexecdir=${prefix}/lib/squid --datadir=${prefix}/share/squid --sysconfdir=/etc/squid --with-default-user=proxy --with-logdir=/var/log/squid --with-pidfile=/var/run/squid.pid
make
make install

apt安装的squid二进制文件只能监听128个端口,如果有超过128个IP,则用编译安装,其中 CXXFLAGS=”-DMAXTCPLISTENPORTS=3000” 表示 squid 最大可监听 3000 个端口。

若监听IP小于128个,则可以通过apt安装

1
apt install squid

配置文件位置

1
2
/etc/squid/squid.conf
/var/log/squid/access.log

配置

/etc/squid/squid.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
http_port 154.23.0.1:3001
http_port 154.23.0.2:3002
http_port 154.23.0.3:3003


acl outbound_ip_1 myip 154.23.0.1
tcp_outgoing_address 154.23.0.1 outbound_ip_1

acl outbound_ip_2 myip 154.23.0.2
tcp_outgoing_address 154.23.0.2 outbound_ip_2

acl outbound_ip_3 myip 154.23.0.3
tcp_outgoing_address 154.23.0.3 outbound_ip_3

http_access allow all
cache deny all

重启 squid

1
2
3
sudo squid -k shutdown
sudo squid
sudo squid -k reconfigure

执行 netstat -tlnp | grep squid 可以看到配置的3个端口已经监听。

在其他服务器通过curl测试是否生效

1
curl -x http://154.23.0.2:3002 http://ip.sb/

ip.sb 会检测到访问IP为 154.23.0.2

Tips: 若配置的端口较多,执行 netstat -tlnp | grep squid | wc -l 后发现配置的端口没有全部被监听,则要修改Linux限制提升每个进程可以打开的最大文件描述符。

配置代理HTTP账号密码认证

1
2
3
apt install apache2-utils

htpasswd -cd /etc/squid/passwd user

提示输入两次密码,都输入123456

/etc/squid/squid.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
http_access allow all
cache deny all

改为

auth_param basic program /usr/libexec/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 500
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl auth_users proxy_auth REQUIRED
acl all src all
http_access allow all auth_users
http_access deny all

重启 squid

1
2
3
sudo squid -k shutdown
sudo squid
sudo squid -k reconfigure

在其他服务器通过curl测试是否生效:

1
curl --proxy http://user:[email protected]:3002 http://ip.sb/

ip.sb 会检测到访问IP为 154.23.0.2

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
启动
sudo squid
若 /var/log/squid/cache.log: Permission denied 没写入权限则要给权限 sudo chmod -R 777 /var/log/squid

apt安装启动命令 systemctl start squid


重启
sudo squid -k reconfigure
apt安装重启命令 systemctl restart squid

停止
sudo squid -k shutdown

squid监听的端口
netstat -tlnp | grep squid

squid监听的端口数
netstat -tlnp | grep squid | wc -l

欢迎关注我的其它发布渠道