由 nbxmedia 在 11-29-2003 14:30 发表:
简单方法建立squid+iptable的透明代理
版权声明:本文随便大家转载,但是要说明出处为linuxsir就行
帮某网吧配置的,参考文章:
http://www.chinaunix.net/jh/38/62061.html
http://www.chinaunix.net/jh/38/107156.html
http://www.chinaunix.net/jh/38/63081.html
本文在没有说明的前提下,一般命令都是需要在终端下使用。
硬件环境:赛扬2.4G,256M DDR,865PE主板,两个Intel的pro100网卡,eth0为对外网卡,eth1为对内网卡。
系统:slackware9.1(因为安装快,而且设置也快)
系统安装:
分区:
/ 4G
/home 5G
/var 4G
/var/cache 25G
swap 512M
分区格式为reiserfs
为了方便,安装了KDE环境,配置完后卸载(下次偶用zhcon+w3c算了)。
安装没什么可说明的,Slackware的安装虽是文本界面,但是也算简洁,只要记得将ipfoward装上,然后启动时让它自动加载就是了。
配置:
1、网卡:
首先运行命令netconfig,配置对外网卡eth0,内网ip地址为192.168.1.12
然后修改/etc/rc.d/rc.inet1.conf,配置对内网卡eth1:
内容如下:
Config information for eth1:
IPADDR[1]="192.168.11.254" #IP地址
NETMASK[1]="255.255.255.0" #掩码
USE_DHCP[1]=""
DHCP_HOSTNAME[1]=""
2、安装squid:
首先到这里下载:
http://www3.linuxpackages.net/packa...4-i486-2rob.tgz
我就是用这个,应该是没问题的。
增加squid用户及组:用adduser命令吧,向导式的,最好把squid的home目录设定在/var/cache里
手动命令也可以:
groupadd squid
useradd -g squid -d /var/cache squid
slackware下还要设置一个地方才能用squid:修改/etc/services建立端口3128的tcp侦听,加上一行:
squid 3128/tcp #squid proxy
这个要重启机器才能生效。
安装:终端下进入squid安装文件所在的目录,比如你下载在root目录下,运行installpkg /root/squid*.tgz
KDE下可以用kpackages安装,更简单
3、设定squid:
squid的配置文件在/etc/squid/squid.conf(老实说很讨厌squid的原配置文件,注释太多了,宁可它另开一文做配置说明)
配置如下:
#打开3128端口
http_port 3128
#cache的内存容量
cache_mem 64 MB
#cache的目录及容量,我是设定为12G
cache_dir ufs /var/squid/cache 12000 16 256
#允许网吧内所有机器访问
http_access allow all
#squid的运行用户及组
cache_effective_user squid
cache_effective_group squid
#http加速端口设置,透明代理能用上
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
保存,然后用squid -Z来定位缓存目录,如果出现失败,就chmod 777 /var/cache
现在先测试一下squid是否能用,运行squid:
squid
测试一下是否有进程
ps -aux | grep squid
如果有,我们随便找一台网吧上的机器试试,在IE的连接处设置代理:
地址:192.168.1.12,端口:3128,如果能上网,那恭喜你,已经差不多能完成了,如果不行,看看是哪里的设置出了毛病。
设置iptables:
当然我们不能要求网吧的客人们都设置IE或QQ的代理(-__-),这就是透明代理的好处,
因为网吧不仅仅是用来浏览网页或者聊Q,网络游戏连接需要各种端口,所以不能用iptables -F去丢包了
在/etc/rc.local下加入如下几行:
#加载iptables的相关模块:
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#把80端口的包全部转向3128端口
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
#ip转向,192.168.11.0/24为内网网段
iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -o eth0 -j SNAT --to 192.168.1.12
运行/etc/rc.d/rc.local,到此设置全部完毕,看看能不能上网,找一台内网的机器,设定IP地址为
192.168.11.2,网关为192.168.11.254,现在试试不用代理能否直接上网,用IE或者QQ试试看,如果成功了,就拿去给人家用吧。
难点在于配置iptables,偶也是弄半天才行,一般都是内网客户机用代理上网就可以,但是改IP就不行,呵呵。
如果大家在安装slackware上遇到什么问题,可以到本站linux版块上咨询,windrose和struggle两位斑竹恭候您的大驾。
最后说一点,那个网吧管理员说现在浏览网页比原来快了好几倍。呵呵 ,最近想考虑一系列用linux替代在网吧中使用windows做服务器的方案(还有路由),下一个研究目标是samba3.0
个人网站转向Smarty,一个人要做两份活,还要分开干,哎…………
Athlon1200/512M DDR333/10G HD/KM400/19寸彩显
由 ccnping 在 11-29-2003 17:02 发表:
感谢,有参考价值!!支持
CCIE IDream!!!!
Linux study work hard ing......
由 nbxmedia 在 11-29-2003 18:50 发表:
嗯…………samba3.0的相关资料这里有没有?
据说samba3比windows2003的网上邻居快2.5倍
个人网站转向Smarty,一个人要做两份活,还要分开干,哎…………
Athlon1200/512M DDR333/10G HD/KM400/19寸彩显
由 北南南北 在 11-30-2003 22:27 发表:
精华
多谢nbxmedia兄,辛苦了。
北南 呈上
===========================
请弟兄们发帖时要写个好标题,多谢!
===========================
每天以1000KM/H的速度在跑,感觉还是时间不够:(
“西学东渐,洋为中用” + 创造 = ?
linux ppc
由 buswalker 在 12-01-2003 10:34 发表:
请教:echo "1" >/proc/……与echo 1 >/proc/……有何区别吗?
还有为何斑竹的网关设置为:254而非12呢?
朝闻道,夕死可以。
由 buswalker 在 12-01-2003 11:26 发表:
呵呵,请教大侠,我这样做错在哪里呢?
配置为:eth0为外部IP,eth1为内部IP,192.168.0.2。通过教育网与internet连接。squid工作正常,只差transparent proxy一直没有设置成功了。
我的脚本如下:
#!/bin/sh
echo "1" >/proc/sys/net/ipv4/ip_forward(此处应该是打开FORWARD吧,但我不知我安没有安装ipforward,该怎样查看呢?)
/sbin/iptables -F -t nat(清除以前的NAT规则吧)
iptables -t nat -I PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 -d 192.168.0.2 --dport 80 -j ACCEPT(因为我的这台代理装了,web服务,从网上看到的说是要添加这一句,不知对否?)
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 --dport 80 -j DNAT --to 192.168.0.2:3128(这句应该是转发所有局域网内的数据包到内网卡吧,呵呵一知半解啊)
iptables -t nat -A POSTROUTING -o eth0 -p tcp -s 192.168.0.0/24 -j SNAT --to 192.168.0.2
之后运行iptables -t nat -L 屏幕显示如下:
chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.0.0/24 192.168.0.2 tcp dpt:http
2 DNAT tcp -- 192.168.0.0/24 anywhere tcp dpt:http to:192.168.0.2:3128
chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 SNAT tcp -- 192.168.0.0/24 anywhere to:192.168.0.2
局域网里客户机的网关设置为:192.168.0.2,DNS为代理服务器上的DNS。但是还是不能实现透明代理上网呢,呵呵,还望高手赐教!
朝闻道,夕死可以。
由 buswalker 在 12-01-2003 17:34 发表:
朝闻道,夕死可以。
由 buswalker 在 12-01-2003 17:34 发表:
朝闻道,夕死可以。
由 buswalker 在 12-01-2003 17:47 发表:
hehe,我这样做错在哪里呢?请各位大虾指正!
朝闻道,夕死可以。
由 大熊宝宝 在 12-01-2003 17:49 发表:
ptables -t nat -I PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 -d 192.168.0.2 --dport 80 -j ACCEPT(因为我的这台代理装了,web服务,从网上看到的说是要添加这一句,不知对否?)
用prerouting链怎么行呢 iptables -A INPUT --dport 80 -j ACCEPT
透明代理应该iptables -t nat -A PREROUTING -i eht1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
建议先看看iptables的基础吧
请兄弟们正确发贴,把问题发到相关版块 发贴标题请简明扼要 谢谢大家配合.
新会员发贴前请学会搜索论坛 有可能你的问题已经有答案了
由 buswalker 在 12-01-2003 18:17 发表:
hehe,我这样做错在哪里呢?请各位大虾指正!
由 nbxmedia 在 12-02-2003 03:42 发表:
还要改动一个地方,squid的设置还必须要一行
#有效主机名
visible_hostname localhost
squid才能正常工作。
个人网站转向Smarty,一个人要做两份活,还要分开干,哎…………
Athlon1200/512M DDR333/10G HD/KM400/19寸彩显
由 buswalker 在 12-02-2003 08:05 发表:
> quote:
>
> * * *
>
> 最初由 nbxmedia 发表
>
> **还要改动一个地方,squid的设置还必须要一行
>
> #有效主机名
>
> visible_hostname localhost
>
>
>
> squid才能正常工作。 **
>
> * * *
改了,还是不行ni?呵呵,究竟我是错在何方呢?郁闷……
<