简单方法建立squid+iptable的透明代理

由 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寸彩显

http://nbx.3322.org


由 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寸彩显

http://nbx.3322.org


由 北南南北 在 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寸彩显

http://nbx.3322.org


由 buswalker 在 12-02-2003 08:05 发表:


> quote: > > * * * > > 最初由 nbxmedia 发表
>
> **还要改动一个地方,squid的设置还必须要一行
>
> #有效主机名
>
> visible_hostname localhost
>
>
>
> squid才能正常工作。 ** > > * * *

改了,还是不行ni?呵呵,究竟我是错在何方呢?郁闷……

<

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus