构建Squid代理服务器&Linux基本网络配置

2011年7月27日 | 分类: 代理工具 | 标签: , ,

构建Squid代理服务器

缓存代理概述

Squid 作为应用层的代理服务软件,主要提供缓存加速,应用层过滤控制功能。

Squid 代理可以分为三种:

  • 传统代理
  • 透明代理
  • 反向代理

Squid 的服务端口通常为TCP 3128。

传统代理

  • HTTP/FTP代理,需指定代理服务器的地址和端口
  • 提供缓存加速功能
  • 提供应用代理过滤控制功能

透明代理

  • 提供和传统代理相同的功能
  • 客户端透明,不需要设置
  • 需要使用防火墙策略重定向Web流量

反向代理

  • 提供缓存加速功能
  • 减轻服务器负担

Squid基本配置

主配置文件

Squid默认配置文件: /etc/squid/squid.conf

cd /etc/squid/
cp squid.conf squid.conf.bak
grep -v ^# squid.conf.bak | grep -v ^$ > squid.conf
http_port
3128
cache_mem
64 MB
maximum_object_size
4096 KB
reply_body_max_size
10240000 allow all
cache_dir ufs
/var/spool/squid 100 16 256
access_log
/var/log/squid/access.log
visible_hostname
proxy.benet.com
dns_testnames
www.google.com www.sina.com.cn www.163.com

配置Squid实现基本代理

  • 配置Squid代理服务器
    vim /etc/squid/squid.conf

    修改以下内容:

    http_port 3128
    visible_hostname proxy.benet.com
    reply_body_max_size 10240000
    http_access allow all
  • 初始化并启动代理服务
    service squid start

    或者

    squid -z
    squid -D
    squid -k reconfigure
  • 修改客户端浏览器设置
  • 查看访问记录
    tail -f /var/log/squid/access.log

ACL访问控制

  • 定义acl列表
    语法:

    acl 列表名称 列表类型 列表

    示例:

    acl all src 0.0.0.0/0.0.0.0
    acl localhost src 127.0.0.1/255.255.255.255
    acl LAN1 src 192.168.1.0/24
    acl LAN2 src 192.168.2.0/24
    acl PC1 src 192.168.1.66/32
    acl LAN_DOMAIN srcdomain .benet.com .accp.com
    acl to_localhost dst 127.0.0.0/8
    acl BLOCK_IP dst 61.141.79.86/32 217.23.45.77/32
    acl BLOCK_HOST dst www.xxxx.com www.adult.com
    acl BLOCK_DOMAIN dstdomain .qq.com .msn.com .gamezone.net
    acl MAX10_CONN maxconn 10
    acl MAX20_CONN maxconn 20
    acl BLOCK_URL url_regex -i ^rtsp:// ^mms:// ^emule://
    acl ILLEGAL_WORDS urlpath_regex -i sex adult fuck
    acl MEDIA_FILE urlpath_regex -i  \.mp3$ \.mp4$ \.rmvb$ \.rm$ \.avi$ \.mpg$ \.mkv$
    acl LUNCH_TIME time MTWHF 12:00-13:00
    acl WORK_TIME time MTWHF 08:30-17:30
  • 设置acl访问权限
    http_access {allow  | deny}  ${DEFINED_ACL}
    http_access deny LAN1 BLOCK_IP
    http_access deny LAN1 BLOCK_HOST
    http_access deny LAN1 BLOCK_DOMAIN
    http_access deny LAN2 BLOCK_URL
    http_access deny LAN2 ILLEGAL_WORDS
    http_access deny LAN2 MEDIA_FILE
    http_access deny PC1 MAX10_CONN
    http_access deny LAN1 MAX20_CONN
    http_access allow LAN_DOMAIN WORK_TIME
    http_access allow LAN1 LUNCH_TIME
    http_access allow LAN2 WORK_TIME
    http_access deny all

配置透明代理

vim /etc/squid/squid.conf

修改以下内容:

http_port 192.168.1.1:3128 transparent
service squid reload
iptables -t nat -I PREOUTING -i eth1 -s 192.168.1.0/24 -p tcp --dprot 80 -j REDIRECT --to-ports 3128
tail -f /var/log/squid/access.log

配置反向代理

vim /etc/squid/squid.conf

修改以下内容:

http_port 218.29.30.31:80 vhost
cache_peer 192.168.1.21 parent 80 0 originserver weight=5 max-conn=50
cache_peer 192.168.1.22 parent 80 0 originserver weight=5 max-conn=50
service squid restart
tail -f /var/log/squid/access.log

 

Linux基本网络配置

查看及测试网络配置

查看和测试网络配置是管理Linux网络服务的第一步。

测试命令可以普通用户也可以使用,但需要添加 /sbin 路径信息。

查看及测试网络接口信息

使用 ifconfig 查看配置,使用 ping 测试配置。

  • 使用ifconfig命令查看网络接口信息
    • 查看活动网络接口设备
      ifconfig

      典型Linux网络设置中,通常有两个网络接口。

      eth0
      第一个 ethernet 网络接口
      lo
      回环网络接口
      wlan0
      第一个无线网络接口
      eth0      Link encap:以太网  硬件地址 00:16:d3:38:c1:6e
                UP BROADCAST MULTICAST  MTU:1500  跃点数:1
                接收数据包:0 错误:0 丢弃:0 过载:0 帧数:0
                发送数据包:0 错误:0 丢弃:0 过载:0 载波:0
                碰撞:0 发送队列长度:1000
                接收字节:0 (0.0 B)  发送字节:0 (0.0 B)
                中断:16 
      
      lo        Link encap:本地环回
                inet 地址:127.0.0.1  掩码:255.0.0.0
                inet6 地址: ::1/128 Scope:Host
                UP LOOPBACK RUNNING  MTU:16436  跃点数:1
                接收数据包:7606 错误:0 丢弃:0 过载:0 帧数:0
                发送数据包:7606 错误:0 丢弃:0 过载:0 载波:0
                碰撞:0 发送队列长度:0
                接收字节:2135052 (2.1 MB)  发送字节:2135052 (2.1 MB)
      
      wlan0     Link encap:以太网  硬件地址 00:19:d2:75:2a:80
                inet 地址:192.168.1.101  广播:192.168.1.255  掩码:255.255.255.0
                inet6 地址: fe80::219:d2ff:fe75:2a80/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
                接收数据包:33505 错误:0 丢弃:0 过载:0 帧数:0
                发送数据包:35772 错误:0 丢弃:0 过载:0 载波:0
                碰撞:0 发送队列长度:1000
                接收字节:27097541 (27.0 MB)  发送字节:4803505 (4.8 MB)
    • 查看eth0网卡的基本配置信息
      ifconfig eth0

      显示eth0网络的基本配置信息

      Hwaddr
      硬件地址
      inet addr
      IP地址
      Bcast
      广播
      Mask
      掩码
      RX
      接收字节
      TX
      发送字节
      wlan0     Link encap:以太网  硬件地址 00:19:d2:75:2a:80
                inet 地址:192.168.1.101  广播:192.168.1.255  掩码:255.255.255.0
                inet6 地址: fe80::219:d2ff:fe75:2a80/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
                接收数据包:34858 错误:0 丢弃:0 过载:0 帧数:0
                发送数据包:37220 错误:0 丢弃:0 过载:0 载波:0
                碰撞:0 发送队列长度:1000
                接收字节:28550868 (28.5 MB)  发送字节:4959073 (4.9 MB)
    • 查看所有网络接口的信息
      ifconfig -a

      查看所有网络接口的信息,包括活动和非活动网络接口。

  • 使用ping命令测试网络连接
    • 使用ping命令测试网络连通性
      ping 192.168.1.103
    • 发送指定个数,指定大小的数据包进行网络测试
      ping -c 2 -s 1024 192.168.1.103
    • 测试网络连接性技巧
      先近后远为原则,注意防火墙对网络连接性测试的影响。

查看及测试路由记录

使用 route 查看主机路由记录,使用 traceroute 跟踪数据包路由途径

  • 查看主机路由表信息
    route
    内核 IP 路由表
    目标            网关            子网掩码        标志  跃点   引用  使用 接口
    192.168.1.0     *               255.255.255.0   U     2      0        0 wlan0
    link-local      *               255.255.0.0     U     1000   0        0 wlan0
    default         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
    route -n
    内核 IP 路由表
    目标            网关            子网掩码        标志  跃点   引用  使用 接口
    192.168.1.0     0.0.0.0         255.255.255.0   U     2      0        0 wlan0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0
    0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
  • 跟踪数据包路由途径
    tracepath 61.128.128.68
     1:  laptop                                                0.180ms pmtu 1500
     1:  192.168.1.1                                           6.260ms
     1:  192.168.1.1                                           3.908ms
     2:  192.168.1.1                                           4.282ms pmtu 1492
     2:  118.114.236.9                                        38.656ms asymm  3
     3:  182.151.192.1                                        38.818ms asymm  4
     4:  222.213.14.161                                       39.255ms
     5:  222.176.2.181                                        49.926ms
     6:  222.176.6.230                                        45.260ms
     7:  222.176.20.66                                        56.836ms
     8:  68.128.128.61.cq.cq.cta.net.cn                       50.304ms !H
         Resume: pmtu 1492

查看及测试主机名称

使用 hostname 查看主机名称,使用 nslookup 测试域名解析。

  • 查看主机名称
    hostname
    laptop
  • 使用nslookup命令测试域名解析
    nslookup www.google.com
    Server:      192.168.1.1
    Address: 192.168.1.1#53
    
    Non-authoritative answer:
    www.google.com   canonical name = www-g-com-chn.l.google.com.
    Name:    www-g-com-chn.l.google.com
    Address: 66.249.89.104

查看网络连接状态

使用 netstat 命令可以查看当前系统的网络连接状态,路由表,接口统计信息等,是了解网络状态及排除网络服务故障的有效工具。

-a
显示当前主机所有活动的网络连接信息(包括监听,非监听状态的服务端口)
-n
以数字的形式显示相关主机地址和端口
-r
显示路由表信息
-l
显示处于监听状态的网络连接及端口信息
-t
查看TCP协议的相关信息
-u
查看UDP协议的相关信息
-p
显示与网络连接相关的进程号,进程名称信息(需要root权限)
netstat -anpt | grep :22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      859/sshd
tcp        0      0 192.168.1.100:41661     192.168.1.103:22        ESTABLISHED 2623/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      859/sshd
netstat -nr
内核 IP 路由表
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

查看ARP地址解析记录

使用 arp 命令查看当前的ARP缓存信息。

arp -n
地址                     类型    硬件地址            标志  Mask            接口
192.168.1.1              ether   00:19:e0:f0:14:11   C                     wlan0
192.168.1.103            ether   00:0c:29:a8:02:19   C                     wlan0
192.168.1.13             ether   00:1f:c6:24:de:16   C                     wlan0

使用命令调整网络参数

在Linux主机中,手动修改网络配置有两种方法

网络配置命令
简单,快速,高效。临时使用,重启失效。
网络配置文件
修改后需重启服务或系统生效。

调整网络接口参数

  • 设置网卡ip地址
    ifconfig eth0 192.168.1.203 netmask 255.255.255.0
    ifconfig eth0 192.168.1.103/24
  • 禁用或启用网络接口
    ifconfig eth0 up
    ifconfig eth0 down
  • 设置虚拟网络接口
    ifconfig eth0:0 10.0.0.100/8
  • 修改MAC地址
    ifconfig eth0 down
    ifconfig eth0 hw ether 00:0c:00:11:22:33
    ifconfig eth0 up

设置路由信息

  • 添加指定网段的路由记录
    route add -net 192.168.13.0/24 gw 192.168.1.13
    route del -net 192.168.13.0/24
  • 删除或添加默认网关的路由记录
    route del default gw 192.168.1.1
    route -n
    route add default gw 192.168.1.254
    route -n

设置主机名称

hostname
hostname leiyue
bash

设置静态ARP记录

arp -a
arp -s 192.168.1.1 00:0c:00:11:22:33
arp -n

通过配置文件修改网络参数

若要将服务器的网络配置参数固定下来,直接修改网络配置文件更加有效。

网络接口配置文件

  • 网络接口配置文件内容
    ls /etc/sysconfig/network-scripts/ifcfg-*
    /etc/sysconfig/network-scripts/ifcfg-eth0
    /etc/sysconfig/network-scripts/ifcfg-lo
    cat /etc/sysconfig/network-scripts/ifcfg-eth0
    # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=eth0
    BOOTPROTO=none
    HWADDR=00:0c:29:a8:02:19
    ONBOOT=yes
    NETMASK=255.255.255.0
    IPADDR=192.168.1.103
    GATEWAY=192.168.1.1
    TYPE=Ethernet
    DEVICE
    设置网络接口名称
    ONBOOT
    是否在系统启动时激活
    BOOTPROTO
    设置网络接口配置方式

    static
    使用静态IP地址
    dhcp
    使用动态IP地址
    IPADDR
    设置IP地址
    NETMASK
    设置子网掩码
    GATEWAY
    设置默认网关
  • 停止或启用指定的网络接口
    修改了网络接口配置文件之后,需要执行 ifdownifup命令使配置生效。

    ifdown eth0
    ifup eth0

    ifdown eth0; ifup eth0

    注意 如果使用 ifconfig 重新启用eth0网络接口不会读取网络接口配置文件。

    重启network服务或重启系统可以加载网络接口配置文件。

    service network restart
    /etc/init.d/network restart

主机名称配置文件

修改 /etc/sysconfig/network 文件,重新启动系统后生效。

vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=redhat

本地主机名称解析文件

添加经常访问的主机名与IP地址。

cat /etc/hosts
127.0.0.1 laptop  localhost.localdomain   localhost
127.0.1.1 laptop
216.194.70.6  shell.cjb.net
72.14.203.141     blogleiyue.appspot.com
72.14.203.141 tapleiyue.appsopt.com
192.168.1.99  dc.benet.com

hosts文件与DNS服务器解析的区别:

  • hosts文件解析优先
  • hosts文件只对本机有效
  • hosts文件无法取代DNS服务器解析

域名服务器配置文件

cat /etc/resolv.conf
; generated by /sbin/dhclient-script
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.1.1

/etc/resolv.conf 文件的修改立即生效,只有前三个nameserver设置会被使用。

grep MAXNS `locate resolv.h`

原文http://leiyue.wordpress.com/2011/07/25/构建Squid代理服务器/http://leiyue.wordpress.com/2011/07/25/Linux基本网络配置/

  1. dsvgsd
    2011年10月28日17:53

    发现squid死活不能用HTTPS,HTTP是正常的