基於局域網主機經過Linux網關訪問Internet的環境html
一臺Linux主機做爲Internet上的web服務器(CentOS7 192.168.94.22 NAT),啓動httpd服務linux
一臺Linux主機做爲局域網網關服務器(CentOS7 192.168.111.11 VMnet3),並構建Squid服務(192.168.94.11 NAT)提供代理服務web
一臺windows主機(192.168.111.22 VMnet3)做爲局域網的客戶機,只需正確設置IP地址、默認網關正則表達式
[root@squid ~]# rz # 上傳源碼包 [root@squid ~]# tar xf squid-4.2-20180806-r6d8f397.tar.gz [root@squid ~]# mv squid-4.2-20180806-r6d8f397 /opt/squid [root@squid ~]# cd /opt/squid [root@squid squid]# ./configure --prefix=/usr/local/squid \ --sysconfdir=/etc \ --enable-arp-acl \ --enable-linux-netfilter \ --enable-linux-tproxy \ --enable-async-io=100 \ --enable-err-language="Simplify_Chinese" \ --enable-underscore \ --enable-poll \ --enable-gnuregex && make -j 4 && make -j 4 install
--enable-arp-acl # 能夠在規則鏈中設置爲直接經過客戶端MAC管理,防止客戶端使用IP欺騙 --enable-linux-netfilter # 使用內核過濾 --enable-linux-tproxy # 使用透明模式 --enable-async-io=100 # 異步I/O,提高存儲性能 --enable-err-language="Simplify_Chinese" # 錯誤信息顯示語言 --enable-underscore # 容許URL中有下劃線 --enable-poll # 使用poll模式,提高性能 --enable-gnuregex # 使用GNU正則表達式
編譯有點慢 , 先配置web服務器
[root@web ~]# yum -y install httpd [root@web ~]# echo "<h1>Squid-Web1</h1>" > /var/www/html/index.html [root@web ~]# systemctl start httpd
再配置Windows網絡 IP和內網一個網段 , 網關指定內網網卡IP vim
編譯的很慢 , 先把後續的準備工做作了 , 在squid上再開一個終端 windows
開啓路由轉發瀏覽器
[root@squid squid]# vim /etc/sysctl.conf # 添加 net.ipv4.ip_forward = 1 [root@squid squid]# sysctl -p # 或者臨時開啓 [root@squid squid]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@squit squid]# iptables -F [root@squit squid]# iptables -F -t nat [root@squit squid]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.111.0/24 -p tcp --dport 80 -j REDIRECT --to 3129 # 後期配置squid配置文件裏的監聽端口爲3129 [root@squit squid]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.111.0/24 -p tcp --dport 443 -j REDIRECT --to 3129 [root@squit squid]# iptables -I INPUT -p tcp --dport 3219 -j ACCEPT
配置squid配置文件緩存
以前用3.6版本的squid作透明代理 監聽的端口就是IP:3128 這個4.2新版本可能默認監聽端口就是3128因此可能端口衝突 , 可是也沒有提示 , 官方手冊也沒找到具體緣由 , 弄了兩天 , 不是服務起不來就是跑起來了沒效果 , 果斷換端口服務器
[root@squid squid]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/ [root@squid squid]# useradd -M -s /sbin/nologin squid [root@squid squid]# chown -R squid.squid /usr/local/squid/var/ [root@squid squid]# vim /etc/squid.conf # 在 http_port 3128 這行的下面添加 http_port 192.168.111.11:3129 transparent cache_mem 64 MB # 指定緩存功能所使用的內存空間大小,便於保持訪問較頻繁的WEB對象,容量最好爲4的倍數,單位爲MB,建議設爲物理內存的1/4 maximum_object_size 4096 KB # 容許保存到緩存空間的最大對象大小,以KB爲單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶 # 在 coredump_dir /usr/local/squid/var/cache/squid 這一行上方添加 cache_effective_user squid # 指定程序用戶 cache_effective_group squid # 指定帳號基本組 # 在 http_access deny all 這行上面添加 http_access allow all # 把 cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 這行的註釋去掉
開啓squid服務網絡
[root@squit squid]# squid -z [root@squit squid]# squid [root@squit squid]# netstat -antup|grep squid tcp 0 0 192.168.111.11:3129 0.0.0.0:* LISTEN 49263/(squid-1) tcp6 0 0 :::3128 :::* LISTEN 49263/(squid-1) udp 0 0 0.0.0.0:55297 0.0.0.0:* 49263/(squid-1) udp6 0 0 :::37642 :::* 49263/(squid-1)
測試
查看squid代理服務器日誌
查看Web服務器日誌
顯示的是squid服務器的IP , 並不能看到用戶IP
測試成功