天天看點

RedHat 5.4 Squid配置透明代理伺服器

一、基本配置

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,如需轉載請自行聯系原作者

繼續閱讀