Linux下透明代理的配置

  我们都知道,Squid是一种在Linux系统下使用的优秀的代理服务器软件。主要功能包括:正向代理,反向代理,透明代理。当然,在现在的实际应用中,squid主要承担的是正向代理和透明代理,而反向代理很多企业选择了Nginx,Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在这里不再详细的介绍。相面我主要以rhel5 作为平台,分享一下自己关于学习squid透明代理的一些配置,有不合适的地方,希望大家批评指正。安装配置我就不再介绍了。

实验环境:

代理服务器:

 内网:eth1:10.1.1.1  255.255.255.0

 外网:eth0:192.168.1.201   255.255.255.0  192.168.1.1

       DNS:192.168.1.1

1.配置/etc/squid/squid.conf 文件。

 将http_port 10.1.1.1:3128改为http_port 10.1.1.1:3128  transparent

注意事项:由于一般情况下,代理服务器是双网卡,因此尽量在3128前面加上IP地址作为限制。

2.打开数据包的转发功能

 echo "1">/proc/sys/net/ipv4/ip_forward

或者打开/etc/sysctl.conf 将net.ipv4.ip_forward = 0改为1

3.使用NAT打开地址伪装。

 iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 53 -j MASQUERADE

注意:这里没有指名源地址,表明任意地址。想指名源地址,使用-s 选项。

4.使用端口重定向将客户端的80端口重定向到3128端口。

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

5.配置客户端的IP选项。

 将网关指向代理的内网网卡的IP地址:10.1.1.1

 将DNS设置为自己所在网络的DNS服务器:192.168.1.1

注意事项:此时DNS和网关必须配置,因为透明代理设计不同的网段,并且访问internet需要DNS解析,因此网关和DNS必须配置。

6.打开浏览器测试。