一、基本配置
Squid代理伺服器配置兩個網卡
WAN:eth0:10.10.10.200 需要配置網關、DNS,允許上網
LAN:eth1:172.168.1.254 不用配置網關、DNS
Clinet:172.16.1.2/24 需要配置網關、DNS
squid(代理) 端口:3128
<a href="http://blog.51cto.com/attachment/201301/171340421.png" target="_blank"></a>
<b>系 統</b>
<b>主機名</b>
<b>伺服器IP</b>
<b>用戶端IP</b>
proxy
Eth0:10.10.10.200
172.16.1.0
Eth1:172.16.1.254
需求:
1. 禁止單IP上網
2. 禁止網段10-50上網
3. 禁止所有網段通路IP:172.16.1.200(MySQL)
4. 禁止通路:www.youku.com網站
5. 禁止通路包含關鍵字163網址
6. 禁止下載下傳*.mp3$ *.exe$ *.zip$ *.rar$ 類型的檔案
7. 禁止網段10-50用戶端在周一到周五的09:00-18:00上班時間上網
8. 禁止端口号上網
9. 限制使用者并發連接配接數為:5
1、配置IP
WAN配置:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
IPADDR=10.10.10.200
NETWASK=255.255.255.0
GATEWAY=10.10.10.1
:wq 儲存
LAN配置:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
IPADDR=172.16.1.254
[root@localhost ~]# service network restart
2、配置DNS檔案
[root@localhost ~]# vim /etc/resolv.conf
nameserver 202.96.134.133
nameserver 202.96.128.166
3、配置主機名:proxy
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=proxy
[root@localhost ~]# hostname proxy
斷開終端,再次連接配接,這樣就需要重新啟動系統:ctrl+d
[root@proxy ~]# hostname
4、SELinux關閉
SELinux關閉
永久方法 – 需要重新開機伺服器
修改/etc/selinux/config檔案中設定SELINUX=disabled ,然後重新開機伺服器。
臨時方法 – 設定系統參數
使用指令setenforce 0
5、檢視路由表、測試是否能上網
[root@proxy ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
[root@proxy ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.111.148) 56(84) bytes of data.
64 bytes from 220.181.111.148: icmp_seq=1 ttl=53 time=42.0 ms
64 bytes from 220.181.111.148: icmp_seq=2 ttl=53 time=39.6 ms
二、安裝squid
[root@proxy ~]# yum install squid -y
[root@proxy ~]# rpm -ql squid |less #檢視安裝路徑
/etc/rc.d/init.d/squid
[root@proxy ~]# grep -v "^#" /etc/squid/squid.conf |grep -v "^$" #檢視squid配置檔案需要修改重要部分
[root@proxy ~]# ll /var/spool/squid/
total 0
[root@proxy ~]# cp /etc/squid/squid.conf /etc/squid/squid.confbak #備份
1、編輯squid配置檔案
[root@proxy ~]# vim /etc/squid/squid.conf
在http_access deny all上面一行插入http_access allow all
637 http_access allow all #設定允許所有用戶端通路
638 http_access deny all
2995 # TAG: visible_hostname
修改為
2995 visible_hostname 172.16.1.254 #設定squid可見主機名
:wq
[root@proxy ~]# service squid start #啟動
init_cache_dir /var/spool/squid... Starting squid: . [ OK ]
[root@proxy ~]# chkconfig squid on #設定開機啟動
[root@proxy ~]# netstat -anp |grep :3128 #檢視squid端口号
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 5967/(squid)
2、用戶端配置網關和DNS
<a href="http://blog.51cto.com/attachment/201301/171430370.png" target="_blank"></a>
3、開啟路由轉發功能
[root@proxy ~]# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 0 #0為關閉
7 net.ipv4.ip_forward = 1 #1為開啟路由
[root@localhost ~]# sysctl -p #指令檢視
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
4、配置Iptables防火牆
[root@proxy ~]# setup #進入圖形界面,打開防火牆為:Enabled
[root@proxy ~]# service iptables start #開啟
[root@proxy ~]# chkconfig iptables on #開機啟動
[root@proxy ~]# iptables -L #列出規則
[root@proxy ~]# iptables -F #清空規則
[root@proxy ~]# iptables -t nat -L #用詳細方式列出 nat 表所有鍊的所有規則
[root@proxy ~]# iptables -t filter -L #用詳細方式列出 filter 表所有鍊的所有規則
編輯iptables配置檔案,開啟防火牆3128端口(後面配置squid的端口号3128)
[root@proxy ~]# vim /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT
[root@proxy ~]# service iptables restart #重新開機
開啟外網eth0,DNS的NAT網絡位址轉換功能
[root@proxy ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE
[root@proxy ~]# iptables -t nat –Lvn #用詳細方式列出 nat 表所有鍊的所有規則,隻顯示IP位址和端口号
設定端口轉發功能,把内網eth1的80端口轉發到外網eth0的3128端口
[root@proxy ~]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
[root@proxy ~]# iptables -t nat -Lvn
Chain PREROUTING (policy ACCEPT 104 packets, 12110 bytes)
pkts bytes target prot opt in out source destination
2 96 REDIRECT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 3128
Chain POSTROUTING (policy ACCEPT 10 packets, 752 bytes)
pkts bytes target prot opt in out source destination
5 307 MASQUERADE udp -- * eth0 172.16.1.0/24 0.0.0.0/0 udp dpt:53
Chain OUTPUT (policy ACCEPT 1 packets, 284 bytes)
pkts bytes target prot opt in out source destination
[root@proxy ~]# service iptables save #儲存規則
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
<a href="http://blog.51cto.com/attachment/201301/171522662.png" target="_blank"></a>
6、編輯squid配置檔案
924 http_port 3128
924 http_port 3128 transparent #監聽3128端口接收到的http請求
1576 # cache_mem 8 MB
1576 cache_mem 256 MB #高速緩存
1783 # cache_dir ufs /var/spool/squid 100 16 256
1783 cache_dir ufs /var/spool/squid 10240 16 256 #設定硬碟緩存大小為10G,目錄為/var/spool/squid,一級子目錄16個,二級子目錄256個
1945 access_log /var/log/squid/access.log squid #設定通路日志
1961 cache_log /var/log/squid/cache.log #設定緩存日志
1971 cache_store_log /var/log/squid/store.log #設定網頁緩存日志
2941 # cache_mgr root
2941 cache_mgr [email protected] #設定管理者郵箱位址
[root@proxy ~]# service squid restart
Stopping squid: [ OK ]
Starting squid: . [ OK ]
7、測試正常上網:
<a href="http://blog.51cto.com/attachment/201301/171539864.png" target="_blank"></a>
8、檢視日志:
[root@proxy ~]# tail -f /var/log/squid/access.log
9、手動添加通路控制政策(注意:政策要合理的配置應用,避免沖突)
配置政策在590行開始
在下面添加以下政策内容:
#####################禁止單IP上網###############################
acl badip src 172.16.1.2/32
http_access deny badip
#####################禁止網段10-50上網##########################
acl badip src 172.16.1.10-172.16.1.50/32
#####################禁止所有網段通路IP:172.16.1.200(MySQL)#######
acl MySQL dst 172.16.2.100
http_access deny MySQL
#####################禁止通路:www.youku.com網站################
acl web dstdomain -i www.baidu.com
http_access deny web
#####################禁止通路包含關鍵字163網址##################
acl web163 url_regex -i 163
http_access deny web163
###########禁止下載下傳*.mp3$ *.exe$ *.zip$ *.rar$ *.doc$類型的檔案########
acl webxiazai urlpath_regex -i \.mp3$ \.exe$ \.zip$ \.rar$ \.doc$
http_access deny webxiazai
#####禁止網段10-50用戶端在周一到周五的09:00-18:00上班時間上網######
acl worktime time MTWHF 09:00-18:00
http_access deny badip worktime
########################限制443端口上網 ############################
acl http port 443
http_access deny http
########################限制使用者并發連接配接數為:5 ######################
acl client15 src 172.16.1.15
acl conn5 maxconn 5
http_access deny client15 conn5
:wq
[root@proxy ~]# service squid restart #重新開機
Stopping squid: [ OK ]
Starting squid: . [ OK ]
配置完成!現在内部網段172.16.1.0/24内客戶機可以通過代理伺服器172.16.1.254通路外網。
本文轉自 yhw85 51CTO部落格,原文連結:http://blog.51cto.com/yanghuawu/1112751,如需轉載請自行聯系原作者