论坛风格切换切换到宽版
  • 1343阅读
  • 8回复

[问题求助][img]http://linux.chinaunix.ne [复制链接]

上一主题 下一主题
离线帅帅.
 
发帖
1994
C币
-235618
威望
373
贡献值
1
银元
-4
铜钱
4429
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
www.linu.xeden.c.om上看到的.....





透明防火墙架设的完全攻略(br.idge+ipt.ables+squid)           女人

架设透明代理和防火墙是linux平台上很热的话.题,在水木上也有相关文章,但完全的攻略在公网上也很少,最近架了一台,前后花去一个多星期(我这人手脚慢,别笑,中间笑话也颇多)觉得还是把过程写下来的好,.可以让.人依葫芦画瓢。教育

先把网络环境说.一下,一个200人左右的局域网,一个C class,一台路由器做NAT(一个公网ip)。网.络环境还是很简单的,目的就是在路由器和局域网间加一台透明防火墙进去,同时完成cache server的功能。我不想让防火墙做nat,一是因为已经有了一台路由器,要物尽其.用。二是nat其.实也是很耗资源的事(尤其当下面的clients特别多时,对ro.uter cpu的要求还是很高的,我就碰到过一台cisco 75XX 路由器拖1000个用户5分钟死一次机的事,后来不得已架了一台PIX做NAT)还是分分开的好。三是万一cache server 趴下了,.只要把链路重新旁接一下,网络.照样用(顶多性能不好),不会影响用户。(广告)

防火墙的平台为一P4 2.4G. server, 512M内存,2×80GHD,两块NIC。安装的是RH8.0 kernel 2.4.20(原来想装gentoo.的,但要命的1.4到现在才刚到RC3,等不及了,偷了一把懒~._~)服务器

先下载bridge做桥接,bridge的作用就是让两块网卡变成一个桥设备,让两端的网络端口完全透明地转发packets,而让iptables起到blocking的作用。下载地址为http://bridge.sourceforge.net(什么?sourceforge?不知道上不去啊!没办法,因为众所周知的原因,大伙找https proxy绕上去吧!)需下载bridge-utils-0.9.6.tar.gz和bridge-nf-0.0.7-against-2.4.19.diff。(这个很重要,否则iptables无法拦截转发过来的packets)            杀毒

再到http://netfilter.samba.org下载iptables,并到www.linuxhq.xom下载最新的kernel及patch。            杀毒

在/usr/src下释放kernel,进入/usr/src/linux,并把bridg.e的patch打上,patch –p1 <. bridge-nf-0..0.7-against-2.4.19.diff..

最后还有个问题,此时用ifconf.ig看到的流量,在过了4G之后就会被置0,然后从头开始,很不爽。这是因为 'RX bytes' and 'TX bytes'等变量的数据类型为 .uns.igned long,即2^32,到了4G就重置,其实把它.们改成unsigned long long(2^64)就可以了。更改外贸
/usr/src/linux/include/linux/netdev.ice.h 和../linux/net/core/dev.c,以下是打pat.ch时的记录,找到文件改掉相应代码.即可。<性病>

diff -urN linux-orig/include/linu..x/netdevice.h linux/include/linux/netdevic.e.h           婚庆
--- linux-orig/inc.lu.de/linux/netdevice.h .
+++ linux/inc.lude/lin.ux/netdevice.h [成人用品]
@@ -96,10 .+96,10 @@     美容


struct net_device_stats .电影
{
- unsigned long rx_packets; /.* total packe.ts received */ 健康
- unsigned long .tx_packets.; /* total packets transmitted */              汽车
- unsigned long .rx_bytes; /* total bytes. received */ 外贸
- unsigned long tx._bytes; /* total b.ytes transmitted */ .
+ unsigned long long rx_packets; /* total packets rece.ived .*/            女人
+ unsigned l.ong long tx_packets; /* total packets transmitted */ ..
+ unsigne.d long long rx_by.tes; /* total bytes received */ 学习
+ un.sig.ned long long tx_bytes; /* total bytes transmitted */ 教育
unsigned long rx_errors..; /* bad packets received */              汽车
unsig.ned. long tx_errors; /* packet transmit problems */ .
un.signed long rx_dropped; /*. no space in linux buffers */ 学习

diff -urN linux-orig/net/core/dev.c linux./net/.core/dev.c 外贸
--- linux-.orig/net/core/.dev.c           婚庆
+++ linux/n.et/core/dev.c 投资
@@. -1689,7 +1689,7 @@ .
int size;


if (stats)
- siz.e = sprintf(buffer, "%6s:%8lu %7lu %4lu %4lu %4lu %5lu %10lu %9lu %8lu %7lu %4lu %4lu %4lu %5lu %7.lu %10lu.\n", [成人用品]
+ size = spri.ntf(buffer, "%6s:%8llu %7llu %4lu %4lu ..%4lu %5lu %10lu %9lu %8llu %7llu %4lu %4lu %4lu %5lu %7lu %10lu\n", (        游戏          )
dev->;name,
st.ats->;rx_bytes, 投资
st.ats->;rx_packets, stats->;rx_errors., .

这样编译后,ifconfi.g的4G重置问.题就被消除了。[成人用品]

下面就是重.新编译kernel了,ma.ke menuconfig......
注意,除了要把该编译进去的驱动编进去(象NIC什么的,我第一次编时就漏了一块网卡,汗ing)还要把最重要的iptables给enable起来,进入Network Options,选中Network Packet filtering (rep.laces ipchains.),这样就.会打.开IP: Netfilter Configuration -->; 子菜单,进入,选中里面所有的选项,然后回到Netw.ork Options菜单,选中“802.1d Ethernet Bridging” 和 “netfilter (f.irewalling.) support”两个选项(一看就知道很重要。)学习
退出,开编。
make dep
make modules
make m.odules_install           建材
make bzImage
完成后cp /usr/src/li.nux/arch/i386/bzImage /boot/b.zImage.bridge    美容
然后.把System.map拷至/boot下再在lilo或grub中更改相应配置即可(这就不细说了.,重编kernel的文章到处都有。)域名

重起,如果正常,.开始下一步,tar –xz.vf bridge-utils-0.9.6.tar.gz. 外贸
cd ./bridge-ut.ils-0.9.3投资
make
make install.(编译bri.dge并安装,具体的安装目录可在make文件生成时指定。)           女人
完毕后可以先.试试bridge的基本命令。如brctl addbr my.bridge (创建bridge mybridg.e,然后用ifconfig查看会发现多了一个mybridge端口)    健康
brctl addif mybridge eth0.. --- 印刷
brctl .addif mybridge eth1 (把et.h0和eth1包含到mybridge中)电脑
然后需要对各端口做以下动作
i.fconfig eth0 0..0.0.0 promisc            建材
ifconfig eth1 0.0.0..0. promisc(打开混杂模式)[成人用品]
这时桥接即已成功,从router和局域网转发过来的消息开始通过机.器,这时你会发觉满屏的tcp/ip转发消息让你无法下手,硬盘也狂转,这是syslogd和klogd做的.怪,log的priviledge.设得太低,改掉它。te.lnet 进入机器(这时你只能tel.net,console上已经泛滥成灾。)kill 掉syslogd和klogd,在/etc/syslog.conf中屏蔽掉*.info至/var/log/messages的rules(一开始我不知道这个,结果第一天下午连到网.络上去,第二天上.午一看,/var/log下的messages居然有2.7G,My God),并修改/etc/init.d/syslog,在da.emon klogd 一项后加上-2 -c 4(提高klogd的消息转发级别),重起syslogd,哈哈,整个世界清净了!!!健康

其实我们也可以写个启动脚本放在/etc./ini.t.d中,如下:.
#!/bin/bash

. /etc/ini.t.d/functions.


ret.urn=$rc_done              乙肝


start() {
echo "St.arting service br.idge tranfw".
b.rctl addbr tranfw || return=$rc_f.ailed域名
b.rct.l addif tranfw eth0 || return=$rc_failed服务器
brctl a.dd.if tranfw eth1 || return=$rc_failed.
ifconfig eth0 0.0..0.0 promisc || retu.rn=$rc_failed.
ifconfig eth1 0..0.0.0 promis.c || return=$rc_failed--- 印刷
b.rctl sethello tranfw 1 || return=$rc._failed.
brctl setmaxag.e tr.anfw 4 || return=$rc_failed.
brctl setfd tranfw 4 || r.et.urn=$rc_failed--- 印刷
ifconfig. tranfw 1.92.168.9.1.1 broadcast 192.168.9.255 promisc up || return=$rc_failed.
/sbin/route add .default gw 192.168.9.1 netmask 0.0.0.0 metr.ic 1              汽车
echo -e "$return."<性病>
}

stop() {
echo "Sh.uttin.g down service bridge tranfw"           鲜花
brctl delif. tranfw eth0 || return=.$rc_failed              乙肝
brctl delif tranfw et.h1 ||. return=$rc_failed            杀毒
brctl. del.br tranfw || return=$rc_failed    健康
e.cho -e "$return"            杀毒
}

status(){
ifco.nfig tranfw--- 印刷
brctl s.how tranfw(广告)
}

restart(){
$0 sto.p && $0 start |.| return=$rc_failed          婚庆
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status tranfw
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|.status|restar.t}"    外汇
RETVAL=1

esac

exit $RETVAL

这样启动时就自己起来了。

下一步,.我们可以开始配iptables了           鲜花
tar –xjvf iptable.s-1.2.7.tar.bz2..
c.d ./iptables-1.2.7电影
make
make install
安装很简单。关键是如何用,我懒,抄了个脚本就开用了.,如下:.             汽车
#!/bin/bash
#Flush a.ll rules from the ch.ains    外汇
iptables -F
#Delete all user. created. chains (mainly KEEP_STATE chain)服务器
iptables -X

#################.####################################.########[成人用品]
##Create special c.hain KEEP_S.TATE           女人
iptables -N KEEP_STAT.E.
iptables -F K.EEP_STATE.
##Dr.op bad states           建材
iptables -A KEEP_STA.TE -m state -.-state INVALID -j DROP--- 印刷
iptables -A. KEEP_STATE -m state --state RELATED,ESTABLIS.HED -j ACCEPT          婚庆
#.############################.################################.

#Drop RST/ACKs to limit ..OS detection through pinging.
i.ptables -A FORWARD -p tcp --tcp-flags RST RST,ACK -m limit --limit 5/mi.nute -j LOG --log-le..vel notice --log-prefix "RST/ACK: "    健康
iptables.. -A FORWARD -p tcp --tcp-flags RST RST,ACK -j DROP服务器

#Deny pings from outsid.e虚拟主机
iptables -A FO.RWARD -p icmp --icmp-type 0./0 -d 192.168.9.0/24 -j ACCEPT.
iptables -A FORWARD -p icmp --icmp.-type 0/0 -m .limit --li.mit 5/minute -j LOG --log-level not.ice --log-prefix "Drop Echo Reply: ".
iptables -A FO.RWARD -p icmp --icmp-type 0/0 -j D.ROP学习

#Drop .potential SQL Worm[成人用品]
iptables -A FORWARD -p tcp -s 192.168.9.0/.24 .--dport 1433 -j ACCEPT电影
iptables -A FORWARD -p tcp --dport 1433 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "ossible SQL Worm: "http://upload.bbs.csuboy.com/Mon_1004/126_6633_4f4b5a14d6d2379.gif[/img]健康
iptables -A. FORWARD -p .tcp --dport 1433 -j DROP

#Pass al.l. boxes to the keep_state chain              乙肝
iptables -.A. FORWARD -j KEEP_STATE.

#############.#####################################.####################.
##Set up UDP
#O.utgoing Traceroute              乙肝
iptabl.es -A FORWARD -p udp -s 192.168.9.0/24 --sp.ort 32769.:65535 --dport 33434:33523 -j ACCEPT             电子

#Incomi.ng Traceroute[成人用品]
iptables -A FORWARD -p. udp -s 192.168.9.0/2.4 --dport 3.2769:65535 --sport 33434:33523 -j ACCEPT电脑

#Time exceeded
iptabl.es -A FORWARD -p udp -s 192.168..9.0/24 --dport 11 -j ACCEPT.

#Port not fou.nd              乙肝
ipt.ables -A FORWARD -p udp -s 192..168.9.0/24 --dport 3 -j ACCEPT健康

#DNS
iptables -A FORWARD -p .udp -s 192..168.9.0/24 --dport 53 -j ACCEPT    美容

#SNMP
ipt.ables -A FORWARD -p udp -s 192.168.9.0/24 --dport 16.1 -j ACCEPT          婚庆

#DHCP
iptables -A FORWARD -.p udp -s 1.92.168.9.0/24 --sport 68 --dp.ort 67 -j ACCEPT[成人用品]

#Time Server
iptab.les -A FORWARD -p udp -s 192.168...9.0/24 --sport 1024:65535 --dport 123 -j ACCEPT.

############################.################.##########################    健康
##Allow outward browsing.    外汇
iptables -A FORWA.RD -p tcp -s 192.168.9.0/24 --dport 80 -j A.CCEPT.

##Allow. outward ssh            杀毒
iptables -A .FORWARD -p tcp -s 192.168.9.0/24 --dport 22 -j. ACCEPT外贸

#.#Allow outward ftp[成人用品]
i.pta.bles -A FORWARD -p tcp -s 192.168.9.0/24 --dport 21 -j ACCEPT服务器

##Allow outward .telnet--------------彩票
iptables -A FORWARD -p tc.p -s 192.168..9.0/24 --dport 23 -j ACCEPT            杀毒

##Allow outward smt.p             汽车
iptables -A FORWARD -p tcp -s 192.168.9.0/24 --dport 25 -j A.C.CEPT--------------彩票

##Allow out.ward pop电影
iptables -A FORWARD -p t.cp -s 192.168.9.0/24 --dport 110 -j ACC.EPT.

###Block HTTP Requ.est from outside t.hat are not authorized           建材
iptables .-A FORWARD -p. tcp --dport 80 -j DROP投资
iptables -A FORWARD -p tcp --dport 80 -m limit --limit 5/minute -j LOG --log-level notice --log-prefix "Dropped HTTP: ".

#Allow Telnet. out(        游戏          )
iptables -.A FORWARD -p tcp -s 192.168.9.0/24 --dport 2.3 -j ACCEPT.

#Deny ports
##telnet
iptables -A FORWARD -p tcp --dport 23 -m limit --.limit 5/minute -.j LOG --log-level no.tice --log-prefix "Denied Telnet: "(广告)

#Deny ports
##telnet
iptabl.es -A FORWARD -p .tcp --dport 23 -m limit --limit 5/minut.e -j LOG --log-level notice --log-prefix "Denied Telnet: "             电子
iptables -A FORWARD -p tcp --dpor.t. 23 -j DROP投资

##Deny BO
iptables -A FORWARD -p udp --dport 31337 -m limit --limit 5/minute -j LOG .--log-.level notice --log-prefix "Denied B.O: "<性病>
i.ptables -A FORWARD -p udp --dpo.rt 31337 -j DROP           女人

#Deny and. log ftp on all oth.ers.
#iptables -A FO.RWARD -p tcp -s 192.168.9.0/24 --dport 21 -j DROP..
#ipt.ables -A. FORWARD -p tcp --dport 21 -m l.imit --limit 5/minute -j LOG --log-level notice --log-prefix "Denied FTP: "电影

#Deny suspicious. traffic .
iptables -A FORWARD -p tcp --destination-port 1.080 -.j DROP.
iptables. -A FORWAR.D -p tcp --destination-port 8080 -j DROP.
iptables -A FORWARD -p tcp --d..estination-port 8000 -j DROP    健康
iptables -A. FORWARD -p tc.p --destination-port 8081 -j DROP           鲜花

##Allo.w all outgoing traffi.c             电子
iptables -t nat -A PREROUTING -p tcp --.dport 80 -j REDIRECT --to-ports 3.128 (转.发至squid)    外汇
iptables -A FORWARD -s 192.168.9..0/2.4 -j ACCEPT教育

#Set. to drop al.l packets not accepted by rules above<性病>
iptabl.es -A FORWARD -.j DROP          婚庆

也把它放到/etc/init.d中,这样就可以随着xinet.d一.起启动了。iptables的语.法这里就不详细说了,网上很多。--- 印刷

最后就是s.quid的配置,这需要仔细说一下,随RH发布的squid的配置有问题,性能.受限。建议先卸除,到www.squid-ca.che.org下载最新的2.5stable1。然后重新编译,编译前需做以下准备工作:           建材
1。编辑./usr./include/bits/types.h中__FD_SETSIZE值至32768<性病>
2.。ulimit -HSn 32768健康
然后到squid src包目.录编译s.quid ,./configure, make all, make install.....             汽车
squid会安装在缺省的/usr/local/.squid下,squid的.可执行文件在安装目录的bin子目录下,配置文件在etc子目录下.

Squid配置文件为:/usr/local/..squid/etc/squid.conf,以下为我的配置:           女人
http_port 8080
cache_mem 32. MB学习
ca.che_swap_low 90外贸
cache_swap_.high 95--------------彩票
max.imum_object_s.ize 4096 KB          婚庆
cache_di.r ufs /usr/local/squid/cache 10000 16 2.56[成人用品]
cac.he_acces.s_log /usr/local/squid/logs/access.log虚拟主机
cache_log /usr/local/.squi.d/logs/cache.log电影
d.ns_names.ervers 202.96.209.5.
unl.inkd_program /usr/lo.cal/squid/bin/unlinkd.
acl acll.ist src 192.168.9.0/255.255.255..0.
acl regular_da.ys time MTW.HF 8:00-19:00.
acl movie urlpath_regex "./etc/squid/banned.list"(把过滤关键字写到文件中去.)[成人用品]
acl banned url._regex iij4u.or.jp.(做些控制)域名
acl cache_prevent.1 u.rl_regex cgi-bin /?           鲜花
acl cache._prevent2 url_regex Serv.let教育
acl all sr.c 0.0.0.0/0..0.0.0域名
acl ma.nager proto cache._object.
ac.l localhost src 127.0.0.1/255.255.255.255.    健康
acl SSL_port.s port 443 .563投资
acl Safe_ports port 80.. # http.
acl Safe_ports port .21 .# ftp域名
acl Safe_ports por.t 443 563 # https, sne.ws域名
acl Safe_ports po.rt 70 #. gopher.
acl Safe_ports port 2..10 # wais              乙肝
acl Safe_ports port 1025-65535 # u.nregiste.red ports服务器
acl Safe._ports p.ort 280 # http-mgmt学习
acl Safe_ports p.ort. 488 # gss-http    外汇
acl Safe_ports po.rt 591 # fil.emaker            杀毒
ac.l Safe_port.s port 777 # multiling http(        游戏          )
h.ttp._access deny movie regular_days电脑
no_cache de..ny cache_prevent1    健康
no_cache de.ny cache_p.revent2.
http_acces.s deny banned--- 印刷
http_access allo.w all           建材
http_access d.eny .!Safe_ports            杀毒
http_access deny. CO.NNECT !SSL_ports.
icp_access .allow all           鲜花
http_acces.s allow. manager localhost
http_access de.ny manager.
h.ttp_access .allow localhost投资
http_access d.eny all             汽车
client_.lifetime 2 hours.
ha.lf_closed_clients off          婚庆
cache_e.ffective._user squid.
cache_effective._group squid(请注意squid对cac.he及log目录有读写权).
httpd_accel_hos.t virtual    健康
h.ttpd_accel_port 80<性病>
httpd_accel_with_proxy. on虚拟主机
httpd_accel_uses_host_he.ad.er on .

同时在/etc/init.d中的启动脚本.里.加上这句ulimit -HSn 32768服务器
这样squid启动时在cache.log中就可以.看到如.此语句:外贸
2003/03/05 09:30:53| Starting Squid Cache version 2.5..STABL.E1-20030303 fo.r i686-pc-linux-gnu...           建材
2003/03/05 0.9:30:53| Proce.ss ID 12939教育
2003/03/05 09:30:53| With 32768 file d.escriptors ava.ilable    美容

此时的squid拥有32768个file descriptors(缺省为1024),如果用户很多,缺省值会成为瓶颈,极度影响squid的速度(它会报错说running out of file descriptors),我曾经在板上发问,结果没人理我(,还是自力更生,丰衣足食。http://upload.bbs.csuboy.com/Mon_1004/126_6633_893987e7a18c182.gif[/img]服务器

启动squ.i.d:/usr/local/squid/bin/squid -D           女人

大功告成!整个出intern.et的http流量就全朝squid走了,用.户不知道,同时又可完成封锁的功能。           建材

好辛苦啊!

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线妖童.
发帖
2015
C币
-235496
威望
383
贡献值
1
银元
-2
铜钱
4444
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
[quote]原帖由 "platinum"]呱唧呱唧!!!!!![/quote 发表:


前一阵很多人问这个,反而现在贴出来没人看了,哈哈...

发帖
1925
C币
-152776
威望
343
贡献值
1
银元
-2
铜钱
4341
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13


QUOTE:原帖由 "双眼皮的猪" 发表:


前一阵很多人问这个,反而现在贴出来没人看了,哈哈...
大师!
斑猪们是不是该“设”精啊    呵呵

离线abccabcc.
发帖
2123
C币
-60246
威望
399
贡献值
1
银元
0
铜钱
4869
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
哈哈,那倒不用,倒是没人看...
想有人讨论。这样气氛热烈,好爽的说 ...
老这样沉闷, 没意思...

离线hongjing123.
发帖
2138
C币
-235030
威望
440
贡献值
1
银元
0
铜钱
4983
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
o?
真加精了??
惭愧,不是自己写的也加了...
为自己加油 ...

离线magicworm.
发帖
1957
C币
-199353
威望
335
贡献值
1
银元
-1
铜钱
4296
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
觉得这份文档比较有价值,我就把这个加成精华了

我想对大家是有帮助的

发帖
1968
C币
-235592
威望
358
贡献值
1
银元
0
铜钱
4434
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
这个有人照着做过么?我照着这个做了,但是怎么感觉转向3128端口的只是copy过去的一样,子网内一样可以接受到之前重定向的数据包.

离线织羽.
发帖
2011
C币
-235941
威望
370
贡献值
1
银元
-2
铜钱
4577
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13
想问一下:透明防火墙有什么好处?
另外,还想请问一下,下图内的防火墙可以做成透明的吗?(web、db、file、mail每台服务器都配上外网独立IP(电信、网通各一个))
拓扑图.JPG (22.11 KB)
下载次数:25
2006-07-12 10:59




离线slmtly.
发帖
1928
C币
-61058
威望
352
贡献值
1
银元
-4
铜钱
4297
人人网人气币
0
只看该作者 8楼 发表于: 2010-04-13
帖子有点过时,印象中目前bridge已经收录到官方内核里了吧,不需要一堆patch了,不过帖子整体思路还是非常棒的。
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个