Linux搭建代理服务器
1代理服务器
代理服务器代替内网的PC去访问外网web,并将访问的数据缓存起来,当pc再次访问相同数据时,直接将缓存中的数据直接返回PC客户端,提高了访问速度,节省了带宽。
客户端请求—>查看缓存----如果有数据直接返回
                |
                ---->如果没有想要的数据代替客户端到外网去访问,将访问的结果放在缓存里,再返回给客户端
2实现代理服务功能的软件
  查看squid nginx varnish(运行在代理服务器上)
3 安装
  yum -y install squid
  *确保关闭   防火墙   selinux

下面是普通代理(需要手动指定代理服务器的地址和端口号)
pc---->squid----->httpd
 内网      外网
4 配置
  vim /etc/squid/squid.conf
  A: http_port   3218    //默认监听端口号,可以修改
  B: chache_mem   8MB //默认缓存大小
  C: cache_dir ufs(存储格式) /var/spool/squid  100(目录空间大小) 16(一级目录数) 256(二级子目录数)//默认缓存目录
  D:maximum_object_size 4096KB //能够缓存的最大查询对象
  E:reply_body_max_size 10240000 allow all //允许访问的最大对象
  F:http_access allow all    //访问控制,允许所有主机访问
5 启动代理服务
  service squid start
   进程名  squid
   端口 3128
   进程所有这 squid
   传输协议 tcp
6 配置客户端(在浏览器里指定代理服务器的IP和端口号)
 就firefox浏览器来设置:首选项—>高级->网络->手动配置代理
                 HTTP代理:写代理服务器连接内网物理卡的地址  端口:squid 的端口号
7测试
 http://公网IP(/test.html)


这个是透明代理
(客户段指定代理服务器为自己的网关 ,在代理服务器上配置防火墙规则,把代理服务器接受到的访问目标端口是80的请求转给代理服务器squid 服务的3128)
客户端不用在浏览器里指定代理服务器的IP地址和端口号,就可以直接访问公司上的网址服务器,给用户的感觉就是自己是直接和公网通信的

pc---->squid----->httpd
 内网       外网  

1 启用防火墙
  service iptables  start  ,若没反应则在命令行#setup
iptables   -L  //查看默认规则
iptables  -F   //删除默认的防火墙规则
service iptables save  //保存默认防火墙规则

iptables 共有个表,不同表有不同作用
filter 对数据包做过滤
mangle 对数据包打标签
raw  对数据包的状态做跟踪
nat  对端口或地址做转换


每个表里都有不同的链(链就是数据包传输的方向(参照物是防火墙本机))
input链    进入防火墙本机的数据包  
output链   从防火强本机出去的数据包
forward    处理经过防火墙的数据包
POSTROUTING 路由后处理   
PREROUTING 路由前处理
2设置防火墙
iptables -t 表名  管理动作  链名 匹配条件 -j 处理动作
iptables -t filter -L //查看表中所有链规则
iptables -t nat -A REROUTING -i  eth1 -s 192.168.0.0/24  -p tcp  --dport 80 -j REDIRECT --to-ports 3128
-eth1 代理服务器接内网的的网卡
—A 添加链
-p 指定数据中的传输协议
-s 指定数据中的来源地址
-i 指定数据进入的接口
--dport 指定数据包中的目标端口
REDIRECT –to-ports 端口号   把与条件匹配的数据包里的目标端口转换
 

iptables -t nat -L PREROUTING  //查看已配置的防火墙配置
iptables -t nat -F REROUTING  // 清楚指定表里指定链的指定规则
service iptables save  //保存规则
3修改配置文件
vim   /etc/squid/squid.conf
htt_port 3128 transparent
service squid restart
4客户端测试
http://公网地址/a.html


**普通代理 和透明代理 都是代替局域网用户访问公网**

 

 


反向代理(代替公网客户端访问内网的网站服务器)
即外网用户可以访问内网用户服务器
pc---->squid----->httpd
公网        内网

1配置内网的网站服务器 (启动服务 、 编写网页文件)
2 配置squid 反向代理服务器
service httpd stop
chkconfig –level 35 httpd off
避免其占用80 端口,影响squid 80的实际功能
service iptables stop
chkconfig –leve 35 iptables off
3修改主配置文件
vim   /etc/squid/squid.conf  
http_port 80 vhost
cache_peer    192.168.1.100           parent 80 0  originserver
             真是网站的IP            
此处还可以继续添加cache_peer 条目  //默认只访问第一个
service squid restart
4 客户端访问
  http://代理服务器的公网IP端口