构建Squid代理服务器&Linux基本网络配置
构建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
- 测试网络连接性技巧
先近后远为原则,注意防火墙对网络连接性测试的影响。
- 使用ping命令测试网络连通性
查看及测试路由记录
使用 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
- 设置默认网关
- 停止或启用指定的网络接口
修改了网络接口配置文件之后,需要执行 ifdown , ifup命令使配置生效。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基本网络配置/
发现squid死活不能用HTTPS,HTTP是正常的