LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 764|回复: 0

关于squid+iptables实现透明代理的总结

[复制链接]
发表于 2004-12-2 09:00:46 | 显示全部楼层 |阅读模式
这些天来,很多兄弟一直在问有关squid的相关问题,刚好最近我做了不少台这样的上网主机,就整理了一下。以下的内容,有部分内容是linuxsir其他成员写的,我只是整理了一下,希望对兄弟们有所帮助。

以下在Trustix2.1安装,在redhat安装也没有任何问题。

1)安装ppp和rp-pppoe两个软件包:
安装ppp之前需要安装关联包,根据提示找到安装包即可:
#rpm -ivh ppp-2.4.1-12tr.i586.rpm
#rpm -ivh rp-pppoe-3.5-11tr.i586.rpm

2)设置adsl拨号用户,在设置之前,请注意,外网的网卡不要设置ip,也不要设置为开机启动,如果已经启动,ifdown关闭掉:
#adsl-setup
然后根据提示输入相关信息,到此,拨号设置完毕。
接上网线,用adsl-start尝试拨号,如果能够正常拨号上去,会出现Connection,用adsl-status查看连接状态。如果要断掉,用adsl-stop命

令。
如果能够ping 外网,表明连接成功。

3)安装squid软件,可以是系统自带,也可以手动编译,我先安装系统自带的,然后将/etc/init.d下的squid文件拷贝下来,再将自带的squid

文件包清除掉,这样,我只要修改以下squid这个自启动文件内的相关路径,就可以应用于手动编译的啦,这样方便多了(启动squid只需servi

ce squid start,关闭只需service squid stop,重启只需service squid restart),而且也不用另外单独再创建squid这个用户和组了,因

为这个时候系统已经自动创建好了。
#./configure --prefix=/usr/local/squid  --disable-internal-dns
#make all
#make install
修改配置文件squid.conf,内容如下:
http_port 192.168.1.1:3128
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_uses_host_header on
cache_mem 92 MB
cache_dir ufs /var/spool/squid 1200 16 256
dns_nameservers 202.101.103.55 202.101.103.54
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log none
unlinkd_program /usr/lib/squid/unlinkd
cache_effective_user squid
cache_effective_group squid
visible_hostname ftp
dns_children 20 (默认自带的rpm包不支持,需手动编译,并加--disable-internal-dns参数才行)
redirect_children 20  (默认自带的rpm包不支持,需手动编译,并加--disable-internal-dns参数才行)
pid_filename /var/run/squid.pid
创建cache:
#squid -z
启动squid:
#squid
关闭squid:
#squid -k shutdown
以测试的形式启动squid:
#squid -NCd1
以不检测DNS形式启动squid,因为如果没有连接网络,直接启动squid会出现DNS Test错误:
#squid -D
查看进程列表:
#pu ax

4)安装iptables,并设置透明代理:
#rpm -ivh iptables-1.2.9-3tr.i586.rpm
创建文件firewall:
#touch firewall
更改文件属性为可执行:
#chmod u+x firewall
向文件写入内容:
#vi firewall
#!/bin/sh

echo "Enabling IP Forwarding..."
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Starting iptables rules..."
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X

echo "Redirect http require to squid's 3128 port"
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

echo "Intranet to internet"
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
(如果是专线上网,应为:iptables -t nat -A POSTROUTING -s 172.16.0.0/23 -o eth0 -j SNAT --to 211.141.67.10 这种方式)


5)在/etc/rc.local(redhat的路径是:/etc/rc.d/rc.local)添加启动脚本:
adsl-start
sleep 5
su squid -c "/usr/local/squid/sbin/squid"
sleep 5
/root/firewall
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表