代理服务器搭建和加密传输区别_如何自己搭建ip代理服务器

代理服务器搭建和加密传输区别_如何自己搭建ip代理服务器一,简介和安装1.关于squidSquidCache(简称为Squid)是HTTP代理服务器软件。Squid用途广泛的,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。Squid程序在Unix一类系统运行。由于它是开源软件,有网站修改Squid的源代码,编译为原生Windows版;用户也可在Windows里安装

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一,简介和安装

1. 关于squid

Squid Cache(简称为Squid)是HTTP代理服务器软件。Squid用途广泛的,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。Squid程序在Unix一类系统运行。由于它是开源软件,有网站修改Squid的源代码,编译为原生Windows版;用户也可在Windows里安装Cygwin,然后在Cygwin里编译Squid。
Squid的发展历史相当悠久,功能也相当完善。除了HTTP外,对于FTP与HTTPS的支持也相当好,在3.0测试版中也支持了IPv6。但是Squid的上级代理不能使用SOCKS协议。
引用自:维基百科

2. 关于stunnel

Stunnel是一个自由的跨平台软件,用于提供全局的TLS/SSL服务。
针对本身无法进行TLS或SSL通信的客户端及服务器,Stunnel可提供安全的加密连接。该软件可在许多操作系统下运行,包括类Unix系统,以及Windows。Stunnel依赖于某个独立的库,如OpenSSL或者SSLeay,以实现下面的TLS或SSL协议。
Stunnel使用基于X.509数字证书的公开密钥加密算法来保证SSL的安全连接。客户端也可以选用自签名的数字证书来得到授权。
如果编译时与libwrap库链接,Stunnel亦可配置为proxy-firewall服务。
Stunnel由Michal Trojnara 和 Brian Hatch负责维护,遵照GNU通用公共许可证进行发布。
引用自:维基百科

3. 使用简介

使用squid运行在服务端做代理和缓存的功能,使用stunnel运行在客户端做与squid加密传输的功能

4. 软件获取

说明:本文使用的是3.5版本的配置

(1)获取squid

① 源码获取

squid官网源码获取链接

② 二进制包获取

squid官网的二进制包获取方式

(2)安装squid

① 源码安装流程:

下载——tar解压——configure配置——make——make install

wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.27.tar.gz
tar -vxzf squid-3.5.27.tar.gz
cd squid-3.5.27/

查看如何配置:

[msn@xx squid-3.5.27]# ./configure --help

推荐配置

./configure --prefix=/usr/local/squid  --with-openssl --enable-dlmalloc --enable-debug-cbdata --enable-async-io=100 --with-pthreads --enable-storeio="aufs,diskd,ufs" --enable-removal-policies="heap,lru" --enable-icmp --enable-delay-pools --enable-useragent-log --enable-referer-log --disable-wccp --disable-wccpv2 --enable-kill-parent-hack --enable-arp-acl --enable-snmp --enable-default-err-language=Simplify_Chinese --enable-err-languages="Simplify_Chinese English" --disable-poll --enable-epoll --disable-ident-lookups --disable-internal-dns --enable-truncate --enable-underscores --enable-basic-auth-helpers="NCSA" --enable-stacktrace --with-winbind-auth-challenge --enable-large-cache-files --with-large-files --with-maxfd=65535 --enable-ssl --enable-x-accelerator-vary
sudo make
sudo make install

如果很懒,使用二进制包安装
centos 7

sudo yum install squid

(3)获取stunnel
stunnel的windows版以及Linux版下载

(4)安装stunnel

已省略


二,配置代理

1. 为squid签一套自己的证书

(1)签证程序openssl的使用

转到安装目录的配置文件目录下:

cd /usr/local/squid/etc/

yum 安装的默认配置路径在

cd /etc/squid

要用到openssl程序命令,没有先自行安装

可参阅:

安装openssl和openssl-devel

① 生成证书申请文件(my.csr)

openssl req -new > my.csr

然后按提示填写,凡涉及密码,自行记录

② 生成私钥(myPrivate.key)

openssl rsa -in privkey.pem -out myPrivate.key

③ 自签证书(my.crt)

openssl x509 -in my.csr -out my.crt -req -signkey myPrivate.key -days 3650

要输入密码请输入第一个密码(填写申请文件时的密码)

更多openssl 的用法请参考博客
openssl简介

2. 为squid准备一个认证程序和密码文件

① 需要程序:basic_ncsa_auth(为后面的配置文件做准备)

如是源码安装,这在安装目录的libxx目录下,如:

/usr/local/squid/libexec/

若找不着,请扫描磁盘

su
find / -name *auth

找到后复制到 /usr/local/squid/etc/统一操作,如承上操作

cp /usr/local/squid/libexec/basic_ncsa_auth /usr/local/squid/etc/

② 使用htpasswd 生成密码文件

如无htpasswd 命令,请安装Apache或httpd

htpasswd -c /usr/local/squid/etc/passwd oneNeedAuthUser

接着输入允许这个用户oneNeedAuthUser连接服务器的密码

3. 配置squid

官网的配置解释和各个版本的区别

修改配置前可以先把程序中的配置模板备份一份

cp /usr/local/squid/etc/squid.conf /usr/local/squid/etc/squid.conf.bak 

(1)推荐配置:

##############访问控制的ip列表定义#############
#
# Recommended minimum configuration:
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
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 remote_server src 66.xxx.xxx.xxx  #服务器自身外网地址
###############访问控制的端口列表定义#########
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 deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow remote_server ########用户认证#######################
#上文准备的basic_ncsa_auth连接认证程序和密码文件
auth_param basic program /usr/local/squid/etc/basic_ncsa_auth /usr/local/squid/etc/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
###用户认证的细节配置 auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off #http_access deny all ########3##监听配置#####################
#可以接受http明文传输
#http_port 3128 
#https密文传输,用要用到自准备的证书(公钥)和私钥
https_port 443 cert=/usr/local/squid/etc/my.crt key=/usr/local/squid/etc/myPrivate.key
##########域名服务器配置################### dns_nameservers 8.8.8.8 ##########存储设置###################
#内存大小
cache_mem 40 MB 
#磁盘大小 ufs 格式 500M一块 分16个一级目录216个二级目录
cache_dir ufs /tmp/squid 500 16 216 
#进程死掉后的存续信息
coredump_dir /var/spool/squid  
##########刷新过滤设置################### 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 #refresh_pattern \.(jpe?g|png|gif|js|css|mp3|mp4|flv) 1440 20% 2880 #########高匿设置############################# request_header_access Via deny all request_header_access X-Forwarded-For deny all #########日志存储###############################
cache_log /home/temp/cache.log
access_log /home/temp/access.log
cache_store_log /home/temp/storage.log
#########域名展示和联系管理员######################## visible_hostname msn.com cache_mgr msnqqmail@qq.com 

(2)检查配置中的存储目录是否存在和是否有相应的权限

也许要用到

mkdir xxx
sudo chmod -R  777 xxx/

(3)检查网络防火墙

查看状态

 service iptables status 
 
 firewall-cmd --state

开放端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

其他详见
详解centos6和centos7防火墙的关闭

(4)使用squid

检查配置是否正确

/usr/local/squid/sbin/squid -k parse

初始化缓存目录

/usr/local/squid/sbin/squid -z

前台启动(便于调试)

/usr/local/squid/sbin/squid -N -d1

守护启动(服务的方式启动)

/usr/local/squid/sbin/squid -s

查看启动进程状态

ps -aux | grep squid

查看占用的端口状态

netstat -apn | grep squid

重载配置

/usr/local/squid/sbin/squid -k reconfigure

重起

/usr/local/squid/sbin/squid -k restart

停止代理服务器

/usr/local/squid/sbin/squid -k shutdown #柔和
/usr/local/squid/sbin/squid -k kill #暴力

如果还没停,超级暴力停止

pkill -kill /usr/local/squid/sbin/squid
或
kill -kill pid

三,使用stunnel连接代理

1. 配置stunnel与squid之间的连接

[https]
client = yes
accept = 127.0.0.1:8089
connect = xxx.xxx.xxx:443

[https]
client = yes
accept = 127.0.0.1:8090
connect =xxx.xxx.xxx:443

2. 配置浏览器(客户端)与stunnel之间的连接

① 浏览器连接
windows代理设置

在开始处输入internet
然后代理intern选项
选择连接
局域网配置
配置局域网

② python连接

使用requests库

import requests
from requests.auth import HTTPProxyAuth
proxies = {
        "http": "127.0.0.1:8089",
    }
auth = HTTPProxyAuth('sa', 'xxxxx')
resposne = requests.get('http://www.google.com.hk/search?q=led&oq=led',proxies = proxies,auth=auth)
print(resposne.status_code)

如打印200表示成功

博客文章参考

公司内部SQUID代理HTTPS访问资料网站
[经验分享] squid+stunnel+用户密码认证的三种玩法
squid工作原理及源码包编译安装配置
CSDN stunnel使用详解
通过Stunnel 实现SSL连接(测试ing)
详解centos6和centos7防火墙的关闭

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195832.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ntp网络时间协议_ntp网络时间协议特性

    ntp网络时间协议_ntp网络时间协议特性NTP是网络时间协议(NetworkTimeProtocol),它是用来同步网络中各个计算机的时间的协议。  原理:NTP要提供准确的时间,就必须有准确的时间来源,那可以用格林尼治时间吗?答案是否定的。因为格林尼治时间是以地球自转为基础的时间计量系统,但是地球每天的自转是有些不规则的,而且正在缓慢加速,因此,格林尼治时间已经不再被作为标准时间使用。新的标准时间,是由原子钟报时的

    2022年10月12日
  • Linux之Ubuntu18.04安装Java JDK8的三种方式

    JavaJDK在linux系统有两个版本,一个开源版本Openjdk,还有一个oracle官方版本jdk,oracleJDK既可以通过添加ppa源命令行安装,也可以去官网下载jdk压缩包安装。下面分别记录一下这三种安装方式的步骤。安装openjdk1、更新软件包列表:sudoapt-getupdate2、安装openjdk-8-jdk:sudoapt-getin…

  • Java与Python哪个更好?「建议收藏」

    Java与Python哪个更好?「建议收藏」一些开发人员声称Python比Java更有生产力。但更应先说明的是:Python和Java有什么区别?PythonvsJava            Java是一个典型化的编程语言,这意味着变量名必须显示声明。相比之下,我们有动态类型的Python,它不需要声明变量。对于编程语言的动态和静态类型有很多争论。不过请注意这样一个特征:Python是一个有着简单句法的多样性的语…

  • 总结:相关滤波器(Correlation Filters)

    总结:相关滤波器(Correlation Filters)本文是对相关滤波器(CorrelationFilters)相关paper的理解和总结,不过对于我来说,KCF实在不好理解,感觉好多地方理解的不彻底,错误之处还请指出,共同进步。

  • pycharm安装jieba库失败_安装jieba函数库

    pycharm安装jieba库失败_安装jieba函数库Pycharm自带有下载选项,直接安装步骤下载使用即可。1.打开Pycharm,点击左上角>>File>>Settings2、在settings界面中点击Project:pyCharm(项目名称)>>Projectinterpreter。或者在左上角搜索框里输入“projectinterpreter”搜索定位。3、点击右侧箭头指向的“+”号,添加Package。4、在可用包界面中,输入”jieba”搜索,找到jieba,点击下方“Insta

  • 溢出OF和进位CF标志位的判定

    溢出OF和进位CF标志位的判定一、学习CF与OF,要始终牢记一点。CF是无符号数溢出标志,OF是有符号数溢出标志。通俗一点说就是,即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1,则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=1/0,都不会影响。同理也可以得出OF对无符号数也无影响。举个例子:[9-6]补=[9]补-[6]补=[9]补+[-6]补[9]…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号