Squid5.2/5.6 https proxy Ubuntu20 中间人 代理折腾大全

系统是ubuntu-20.04.4-live-server-amd64,Openssl版本是OpenSSL 1.1.1f 31 Mar 2020。VM虚拟机记得到配置文件写入 disk.EnableUUID = "TRUE"

1,把如下代码保存成sh可执行文件,并执行。自行生成证书文件

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout squid-ca-key.pem -out squid-ca-cert.pem

cat squid-ca-cert.pem squid-ca-key.pem >> squid-ca-cert-key.pem
#!/bin/bash

# all packages are installed as root
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

# add diladele apt key
wget -qO - https://packages.diladele.com/diladele_pub.asc | sudo apt-key add -

# add new repo
echo "deb https://squid52.diladele.com/ubuntu/ focal main" \
    > /etc/apt/sources.list.d/squid52.diladele.com.list

# and install
apt-get update && apt-get install -y \
    squid-common \
    squid-openssl \
    squidclient \
    libecap3 libecap3-dev
systemctl daemon-reload

2,查看是否包含–enable-ssl-crtd。执行 squid -v

3,配置 squid.conf

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access allow localhost manager
http_access deny manager

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports


http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
htcp_port 4827
http_port 3218 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB cert=/squid/certs/squid-ca-cert-key.pem
sslproxy_cert_error allow all
ssl_bump stare all
ssl_bump bump all
ssl_bump splice all

# Uncomment the line below to enable disk caching - path format is /cygdrive/<full path to cache folder>, i.e.
#cache_dir aufs /cygdrive/d/squid/cache 3000 16 256
cache_dir aufs /squid/cache 3000 16 256

# Leave coredumps in the first cache dir
coredump_dir /squid/dump

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

dns_nameservers 8.8.8.8 8.8.4.4

4,启动前先初始化一个项目,否则无法启动

sudo /usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB

5,这里就可以完全启动了。自行测试下用如下命令

curl --proxy http://127.0.0.1:3218 --cacert squid-ca-cert.pem https://www.baidu.com

这时候,你可以vi打开squid-ca-cert.pem,复制里面的内容到 查错网 转换下证书格式为 cer,下载到Windows。双击打开安装到“可信任的证书颁发机构”,设置 Internet选项-连接-局域网代理 设置代理地址为这个Ubuntu机器的IP地址,端口设置为 3128 。至此打开百度,你可以在/var/log/syslog看到你访问的日志记录了。

6,尴尬了,这个5.2的容易崩溃。看下面编译5.6的

#准备环境
sudo apt -y install libssl-dev devscripts build-essential fakeroot debhelper dh-autoreconf dh-apparmor cdbs libcppunit-dev libsasl2-dev libxml2-dev libkrb5-dev libdb-dev libnetfilter-conntrack-dev libexpat1-dev libcap-dev libldap2-dev libpam0g-dev libgnutls28-dev libssl-dev libdbi-perl libecap3 libecap3-dev libsystemd-dev libtdb-dev
#克隆项目
git clone https://github.com/squid-cache/squid.git squid
cd squid
git branch -r
git checkout v5
#开始编译
./bootstrap.sh
./configure --with-openssl --enable-ssl-crtd  --with-default-user=squid '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-silent-rules' '--libdir=${prefix}/lib/x86_64-linux-gnu' '--runstatedir=/run' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--libexecdir=/usr/lib/squid' '--mandir=/usr/share/man' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--with-swapdir=/var/spool/squid' '--with-logdir=/var/log/squid' '--with-pidfile=/run/squid.pid' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' '--with-gnutls'

make
sudo make install
#设置Squid 服务
sudo vi /lib/systemd/system/squid.service
#粘贴如下
[Unit]
Description=Squid Web Proxy Server
Documentation=man:squid(8)
After=network.target network-online.target nss-lookup.target

[Service]
Type=notify
PIDFile=/var/run/squid.pid
ExecStartPre=/usr/sbin/squid --foreground -z
ExecStart=/usr/sbin/squid --foreground -sYC
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
NotifyAccess=all

[Install]
WantedBy=multi-user.target
#保存好后
sudo systemctl start squid.service
sudo systemctl enable squid.service
#增加tls代理
acl intermediate_fetching transaction_initiator certificate-fetching
http_access allow intermediate_fetching
#为 Diffie-Hellman 算法生成设置文件
openssl dhparam -outform PEM -out /etc/squid/bump_dhparam.pem 2048
#放到http_port 3128 后面
cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS options=NO_TLSv1,NO_SSLv3,SINGLE_DH_USE,SINGLE_ECDH_USE tls-dh=prime256v1:/etc/squid/bump_dhparam.pem
#排除不支持中间人证书的网站。子域名每行一个,格式如下  .dingtalk.com
acl nobumpSites ssl::server_name  "/etc/squid/donotbump.list"
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
# 检测‘SNI’信息是否可以碰撞
ssl_bump peek step1 all  
# 可以碰撞,检测证书信息            
ssl_bump peek step2 nobumpSites
# 可以碰撞,拼接证书    
ssl_bump splice step3 nobumpSites 
# 不可以碰撞,放弃
ssl_bump stare step2
ssl_bump bump step3 

没有看明白的,点开上一篇文档,按图示操作

我的龙之谷私服,哈哈哈!欢迎来玩

PC客户端下载地址
链接:https://pan.baidu.com/s/1G9cSTKlHtVv5Cy_FRKopMw
提取码:8igz

注册账户页面 http://www.tuhine.com:18880

第一步,注册账号。打开www.tuchine.com:18880

第二步,设置游戏。首先打开“A快速更改ip.exe”,把ip设置为www.tuchine.com的解析结果。每天第一次登陆都要修改。

第三步,设置分辨率。这个打开”A龙之谷更改分辨率.exe”,显示的分辨率要和设置的一致

第四步,启动游戏。打开“A龙之谷登陆器.bat”,启动后到登录界面输入注册的账号,默认有99999999的金钱

第五步,设置回环网卡。添加地址10.6.11.11,192.168.123.201,并执行以下命令
netsh interface portproxy add v4tov4 listenport=14400 listenaddress=0.0.0.0 connectaddress=外网地址 connectport=14400

netsh interface portproxy add v4tov4 listenport=14300 listenaddress=0.0.0.0 connectaddress=外网地址 connectport=14300

后续还有 手游端


怀旧之日

最近翻了不少老电视剧。感觉那个年代电视剧怎么看都接近生活。而且配乐优秀,台词有深度。好一点的很有古风之意。

Padavan老毛子固件折腾,去后台,防死机

昨天煮个饭把自己吃到吐“食物中毒”。今天稍微好点,就请了个假。顺便折腾下路由器。

我这个路由器是红米的AC2100,固件真不多。用来用去就老毛子的固件稍微好使一点。但是有个坑爹的问题,就是开了科学上网会时不时奔溃掉。具体就是什么网站也打不开,非得重新拨号一次。

看了看里面文件,发现这货设置了定时任务。每七天更新一次规则文件,而且断网重连也会检查一次,重启也会检查一次。然后所有的规则文件都是网上下载。网址都是opt.cn2qq.com。可能是脚本问题,每次一检查必定会断网。然后我就想我也不是天天要更新这个规则,就屏蔽了这个域名。

但是发现还是会死,而且我自定义的文件会被重写。然后没办法顺腾摸瓜找到了脚本文件 目录下 /etc/storage/script/init.sh、sh_ss_tproxy.sh、Sh18_v2ray.sh。

init.sh文件被我删除了。里面定义了很多物联网设置。貌似是个创建者做的后台。

sh_ss_tproxy.sh 这是代理规则程序文件,所有代理规则都在里面能找到,包括他改写了我的dnsmasq.conf。我把他的引用init.sh注释掉了,更新文件的函数注释了。添加了一些强制wanip转发

Sh18_v2ray.sh 是科学上网的主程序文件,也是规则文件。不过基本不用动。注释掉对 init.sh引用即可。

如此修改后,基本没发现断网了。我采用的gfwlist模式,chnroute模式太占内存了。加上新版的xray也很占内存。目前基本保持在空闲内存在33m左右。

关于屏蔽opt.cn2qq.com域名 你只要到/etc/storage/dnsmasq/dnsmasq.d下新建一个配置文件 添加上 address=/cn2qq.com/=10.20.1.1 即可。这里的文件不会被更新。

最后关于启动,web启动好像不太好使。你可以直接ssh到路由器,先启动 Sh18_v2ray.sh 再执行 /opt/bin/ss_tproxy start即可。

后台更新的文件名有 /etc/storage/script/sh_upscript.sh \init.sh