歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux配置 >> squid代理共享上網

squid代理共享上網

日期:2017/2/27 14:58:19   编辑:Linux配置
安裝squid包
yum install squid –y

由於默認的文件裡面有很多注釋,不利於查看和編輯,建議先復制為
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

然後清空該文件
cat /dev/null > /etc/squid/squid.conf

輸入下面的配置即可

1.常規代理:
[root@mailsvr11]# cat /etc/squid/squid.conf

http_port 172.24.40.40:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.134.1.4
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 172.24.40.40
cache_mgr [email protected]

acl all src 0.0.0.0/0.0.0.0
http_access allow all

初始化 /usr/sbin/squid -z
啟動服務 /etc/init.d/squid start

附:相關解釋
http_port 本機IP地址以及端口號,這裡的端口號隨便填寫,但是不要跟其他服務沖突,否則啟動失敗。
cache_mem 指定多少內存為高速緩存,如果只是共享上網,可以加大到物理內存的1/2,如果有其他服務,則不超過1/3
cache_dir ufs 硬盤緩存區的大小 ufs 表示存儲類型 4096代表緩存空間大小 16個一級目錄 256個二級目錄
dns_nameservers DNS服務器的地址
cache_access_log 訪問記錄日志文件
cache_log 記錄緩存相關信息
cache_store_log 設置網頁緩存日志文件
visible_hostname 運行squid的服務器的主機名,建議寫IP地址
cache_mgr 管理員的email
acl all src 0.0.0.0/0.0.0.0 接收所有的客戶機的訪問請求
http_access allow all 允許all訪問控制列表的http請求

IE裡面代理服務器的添加,這裡就不介紹了。這裡只是介紹簡單的搭建。

2.用戶認證代理
注意:透明代理不能跟用戶認證共存
[root@mailsvr11]# cat /etc/squid/squid.conf
http_port 172.24.40.40:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.134.1.4
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 172.24.40.40
cache_mgr [email protected]

acl all src 0.0.0.0/0.0.0.0

#用戶認證需要添加
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic credentialsttl 2 hours
auth_param basic realm Example.com's Squid proxy-caching
acl auth_user proxy_auth REQUIRED
http_access allow auth_user

注釋:
第一行:選擇的認證方式為basic,認證程序路徑和密碼文件路徑。

/etc/squid/passwd文件可以使用下面方法生成,在裝有apache的機器上運行

Linux/1727.html' target='_blank'>htpasswd -c /etc/squid/passwd auth_user

以上的auth_user替換為認證的用戶,比如haha

第二行:認證程序的進程數

第三行:認證有效時間

第四行:認證領域內容,上面定義的web浏覽需要輸入用戶密碼

第五,六行:設置允許認證的用戶訪問


3.透明代理

注意:透明代理不能跟用戶認證共存

[root@mailsvr11]# cat /etc/squid/squid.conf
http_port 172.24.40.40:8080 transparent ---這裡注意下,需要添加 transparent
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.134.1.4
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 172.24.40.40:8080
cache_mgr [email protected]
acl all src 0.0.0.0/0.0.0.0
http_access allow all

#下面是透明代理需要添加的
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_users_host_header on

注釋:
第一行:由於要訪問的外網主機有許多台,virtual,即為虛擬的主機,virtual指定了虛擬主機模式,采用這種模式時,squid就取取消了緩存及ICP功能.
第二行:被加速主機的端口

第三行:選項定義為on後,squid既是Web請求的加速器,又是緩存代理服務器

第四行:選項定義為on後,針對要訪問的主機使用主機頭,即通過主機頭來區分不同的主機;這也是配置透明代時必須要配置的

需要設置iptables

#打開ip轉發功能,讓數據包可以在網卡間流動

echo "1">/proc/sys/net/ipv4/ip_forward 注意這樣修改只是單次生效,重啟系統之後會失效,永久打開的方法有兩種,一種是將這段話加入到/etc/rc.local文件中,

另外一種是修改/etc/sysctl.conf文件,將net.ipv4.ip_forward = 0這裡的0修改為1 使用sysctl –p生效。

#使iptables成為NAT服務器

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 注意這裡的網卡,eth1

#把所有流向80端口的請求轉發到3128端口,讓squid處理

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to 3128

#把所有流向53端口的udp與tcp請求轉發到外網的DNS服務器地址,這裡的是西安電信的DNS地址:61.134.1.4

iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 61.134.1.4
iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to 61.134.1.4

完成之後,將客戶端網關指定到squid服務器,DNS指向外網或者內網可以正常使用的地址。透明代理完成之後,客戶端可以不用設置代理服務器,用戶不知不覺的使用的squid緩存。
Copyright © Linux教程網 All Rights Reserved