论坛风格切换切换到宽版
  • 1133阅读
  • 4回复

[问题求助]用ipfilter实现透明代理!!! [复制链接]

上一主题 下一主题
 
发帖
1977
C币
-152657
威望
342
贡献值
1
银元
0
铜钱
4441
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
用ipfilter实现透.明代理.


Apri.l 20, 2002              电子
charleysense@btamial.n.et..cn<性病>
发布人:Charle.y Sense<性病>


(本文可以自由转载,请注明作者和出处.)学习

------------------.-------------------------------------------------.-------------.服务器


本人(作者)属新手上路, 才学习了没几天, 刚刚配好了一台代理服务器, 对于高手来讲实在是小菜一碟, 本没有什么可以值得炫耀的. 应 href="http://www.linuxforum.net">;中国Linux论坛 FreeBSD世界版主 href="mailto:yjs@oldhand.org">;r00t 的要求, 对配置过程做了一个记录, 不免贻笑大方. 学习
文中如有什么.错误, 请与作者 .
联..系. 本文着重介绍配置透明代理, 基本不涉及网络服务器, 含dns, web, email的配置, 这些服务器对于防火墙的要求, 请参照其它介绍.            杀毒



采用本文.内容, 如果造成任何损失, 作者概不负责..



Reference:


IP Filter Based Firewalls HOWTO [ href="http://www.obfuscation.org/ipf/ipf-howto.pdf" target=_blank>DF  http://upload.bbs.csuboy.com/Mon_1004/126_6942_4f4b5a14d6d2379.gif[/img].
| target=_blank>;HT.ML ] (本文中简称 HOWTO.)(        游戏          )

target=_blank>;Quick CableNet .Connections with Free.BSD - By, Leon    健康



系统构成


Gateway:


系统安装FreeBSD 4.5. PENTIUM-S 100, 8.0M内存, 4G硬盘. .安装双网卡.--------------彩票





Dlink DFE5000TX一块古老的网卡, 老得Windows 98都需要厂家的.驱动., Windows 2000厂家都不提供驱动了, 不过BSD/Li.nux还都支持这块网卡, FreeBSD中为dc0. 该网卡连接内部网络. .

Dlink. DFE530TX, FreeBSD中为vr0. 该网卡连.接 ADSL Modem.(广告)


网内客户机


本文中有时称为Clie.nt, 安装Win.dows XP--- 印刷



网络结构


Gateway dc0分配.地址192.168.0.1/24, 通过.HUB连接内网Windows XP客户机            建材
192.168..0.4/24, vr0连接ADSL Modem, 通过pppoe拨号上网.采用动态地址..              乙肝



本文假定Gate.way 的 pppoe和DNS已.经正常工作, 有关这方面的介绍, 请参照其它文章..



Gateway设置


编译内核




cd. /usr/src/sys/i386/conf.

cp GENERIC KER.NEL1外贸

vi KERNEL1






修改该内核配.置文件, 增加如下配置学习









options   IPFILTER .--- 印刷
# ipfilter s.upport .


options   IPFILTER_L.OG 虚拟主机
# ipmon( log support http://upload.bbs.csuboy.com/Mon_1004/126_6942_31ffde71d54d97a.gif[/img]             电子


opti.ons .  IPFILTER_DEFAULT_BLOCK           婚庆
# .bloc.k all packets by default 学习


options   RANDOM_IP_ID .投资
#. RANDOM_IP_ID causes the ID field. in IP packets to be .
randomized


  
# instead .of incremented by 1 with each packet gen.erated. 教育


options   BR.IDGE     外汇
  


options  . ICMP_BANDLIM     健康
# Rate limit bad repli.es            鲜花


  
  


#opt.ions  TC.P_DROP_SYNFIN  --------------彩票
# drop TCP. packets with SYN.+FIN              汽车


  
# 该参数可以提高系统的安全.性,但在作web ser.ver时不建议使用,详见LINT 域名





取消内核中所有与IPFIREWALL有关的配置.    外汇









# options   IP.FIREWALL 学习
# firewall


# options   IPFIREWALL_VE.RB.OSE 服务器
# enable logging to syslogd( http://upload.bbs.csuboy.com/Mon_1004/126_6942_31ffde71d54d97a.gif[/img]虚拟主机


# options   IPF.IREWALL_FORWARD. [成人用品]
# enable .transparent. proxy support            女人


# option.s   IPFIREWALL_VERBO.SE_LIMIT=100 .
# limit verbosit.y --- 印刷


#. options   IP.FIREWALL_DEFAULT_TO_ACCEPT 域名
# allow everythi.n.g by default --------------彩票


  
  


# opti.ons   DUMMYNET            女人
  





调整网络参数





options    .NMBCLUSTERS=327.68教育



系统安装时该参数很小, 会影响网络的性能. 这个数值只是我简单的配置, 做服务器可能要更大. 具体说明详见 href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html" target=_blank>;FreeBSD HandBook "http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-kernel-limits.html" target=_blank>;6.10.2 Network Limits--------------彩票





标示该内核





ident    KERNE.L1电影





编译内核





cd /usr/src

make buildkernel KERNCON.F.=KERNEL1(广告)

make installker.nel KERNCONF=KE.RNEL1             汽车

(.这两个命令可以合并为 make kernel KER.NCONF=KERNEL1)            杀毒





修改配置文件


/etc/rc.conf


删除该.文件中有关ipfw的配置, 或者将    美容





firewa.ll_enable="NO"服务器





增加如下配置









gat.eway_enable="YES" --- 印刷
# enable .gateway --------------彩票


named_enabl.e=YES" .
# enable naming .service


ipfilter_enable.="YES" 服务器
# S.tateful firewall .


ipfil.ter_program="/.sbin/ipf" .



ip.filter_rules="/etc/ipf..conf" .
# 新增加的规则文件, 有人习惯文.件名 .r.ule 域名



ipfilter_flag="". --------------彩票



ipnat_e.nable="YES"     健康
# Net.work Address Tran.slation            鲜花



ipnat_.program="/sbin/ipnat." 服务器



ip.nat_rules="/etc/ipnat.conf."              电子
#. 新增加的规则.文件, 有人习惯文件名 .rule              电子



ipmon_enable="N.O"     健康
# F.ir.ewall logging, 我没有开放, 如果是重要的服务器, 应该开放.              电子



ip.mon_prog.ram="/sbin/ipmon"              电子



ipmon_f.lag="-Ds" .







/etc/ipf.conf


该.文件为防火墙配置文件, 本文主要介绍实现透明代理, 从网络的角度讲是.代理Client, 因此关闭了Internet方向的Server 投资
In的所有端口. 这个配置, 允许内网dc0的所有操作, 允许对外Inter.net的所有请求, 但.外网Internet只允许对内网请求.的回应, 其他包一律丢弃.            女人





# 默认规则, .关闭阻止所有的包, 关闭所有的通路, 再一步一步.打开允许的通道. 服务器

# 如果内核设置.了 IPFILTER_DEFAUL.T_BLOCK, 可以省略.              汽车

block in all
block out all



# 允许内网的信息.自由通过. 电脑

pass in quick on dc0 from 192..168.0.0/24 to .any 投资

pass out quick on dc0 from any. to 192.168.0.0/24.服务器



# 允许本.机的信息自由通过. [成人用品]

pass in q.uick on lo0 all 电脑

pas.s out quick on lo0 all学习



# 禁止外网的无效地址通过

block in quick.. on tun0 from 192.168.0.0/16 to any            建材

blo.ck in quick on tun0 from 10.0.0..0/8 to any .

block in. quick on tun0 from 172.16.0.0/12 .to any <性病>

block in quick on tun0. from 127.0.0.0/8 to .any --- 印刷

block in. .quick on tun0 from 0.0.0.0/8 to any 域名

block in quick on tun0 from 1.92.0.2.0/14 to .any 服务器

block in quick on tun0 fr.om 204.152.64.0/23 .to any [成人用品]

block in quick on tun0 from 2.24.0..0.0/3 to any外贸



# 对外网信息的处理, 允许内网包发送到外网, 并且.允许外网对这些.包的回应信息通过 投资

pass out quick on tun0 proto tcp from an.y to any f.lags S/SAFR keep state kee.p frags 教育

pass out quick on tun0 proto udp from any. to any .keep state keep frags .

pass out quick on tun0 proto icmp .from any t.o any keep state keep frags             电子





/etc/ipnat..conf             电子


该文件为NAT配置文件.
本文中pppoe通过DHCP方式获得地址, 因此.无法在规则中给.出外网的地址, 先用0代替.    外汇





# ftp proxy, 为 active 方式的FTP使用., 稍后再作介绍. 请注意, proxy的设置一定要在portmap之.前.            女人

#map tun.0 192.168.0.0/24 ->; .0/32 proxy port ftp ftp/tcp    外汇



# IKE proxy, 为.E.SP (Encapsulating Security Protocol) 使用 .

# map tun.0 192.168.0.0/24 ->; 0/32 proxy port 500 i.psec/udp投资



# RealAudio pr.oxy, 只可用于PNM模式, RealPlayer G2已.经使用RTSP. [成人用品]

#map tun0 192.168.0.0/24 ->; .0/32 proxy port 7070 rau.dio/tcp.



# 允许内部的UDP/TCP包..通过,并且允许外网回应包通过 外贸

# 到外网采用指定范围.的端口            女人

# ma.p tun0 192.168.0.0/24 ->; 0/32 po.rtmap tcp/udp 40000:60000 .

# 到外网由系统.自动分配端口 --------------彩票

map tun0 192.168.0.0/24 ->; 0./32 p.ortmap tcp/udp auto.



# 允许内部ICMP通过,并且允许回应.包通过 (        游戏          )

map tun0 19.2.168.0..0/24 ->; 0/32服务器



# 允许.net2phone, 将呼入.的呼叫转到指定机器     美容

# rdr tun0 0/0 port 6801 ->; 192..168.0.4 p.ort 6801 udp           鲜花



# 允许squid

# rdr dc0 0/0 port 80. ->; 127.0.0.1 port 3128 tcp. 外贸






/etc./sysctl.conf虚拟主机




net.inet.ip.for.warding=1电脑
net.inet.ip..sourceroute=0             汽车
net.ip.accept_sourcero.u.te=0.



# To definding against sequence. number at.tacks     外汇

# based on rfc 1948. by randomize in.itial sequence number              汽车

net.inet.tcp.strict_rf..c1948=1           建材



# To veri.sy that an incoming pack.et arrives on an interface 虚拟主机

# that has an address matching the packets. desti.nation address .

net.ine.t..ip.check_interface=1              乙肝



# To Drop SYN packets destine to non-listening .tcp/upd port.. .

# This will create a blackhole and protect. against. stealth port scans .

net.inet..tcp.blackhole=2 .

net.inet.udp.bla.ckhole=1--- 印刷



# Incr.ease TCP Windows size for increas.e in network performance .

# Ref: http://www.psc.edu/networking/perf_tune.html 投资

net.inet.tcp.re.cvspace=655.35 域名

net.in.et..tcp.sendspace=65535<性病>





DNS


修改文件 /etc/reso.lv.conf, 增加.一条.



names.erver DNS_SERVER_IP.



如果内网有DNS Server, 应指向该服务器. 如果gateway本身为DNS Server, 为127.0.0.1, 必须配置named.conf. 一般.最简单的配置就是指向.ISP的DNS. Server..



客户机设置


将客户机的Gateway 和 DNS Server都.设置为Gateway机器的地址 192.1.68.0.1.



系统测试


Gateway修改完配置后需要启动. 命令. shutdow.n -r now            杀毒

客户机Windo.ws .XP不需重启, Windows 98要重启..



启动步骤




连.接internet, 命令ppp -dedic.ated <XXXXX >; .

同步防火墙. 我们在设置规则的时候并不知道网络地址, 只.有连接成功后才知道确切.的地址, 命令ipf 电脑
-y可以使ipfilter更新.地址, 之后ipfilter就会使用tun0的具体地址. 每次重新连接pp.poe后, 都需要进行同步.[成人用品]


Gatewat测试




测试内网, p.ing 192..168.0.4看是否正常. .

测试internet. 运行i.fconfig -a.     健康
察看tun0.的地址及其对应的gateway/router的地址, 假如为a.b.c.d.  .ping a.b.c.d看是否正常.             杀毒

测试DNS是否正.常, .运行nslookup yahoo.com.cn, 看是否正常. .

测试网络, 运行traceroute yahoo.com.cn, 看是否正.常. 我的机器没装X.window,  因此无法使用浏览器进行测试. .

其它有用的测试命令,
ipfstat -hio 显示规则被.“击中”的情.况.外贸
ipfstat -t 显.示防火墙的连接状态. <性病>

ipnat -l 显示NAT的状态.. 服务器
n.etstat -r 显示路由表.电脑
netstat -i
显示网.络的情.况, 如果有错误或有大量的冲突包, 应该设法解决..
vmstat. 显示系统内存的状态, 如果资源不足, 应增加.资源或减少一些服务.             汽车


客户机测试




ping .192.168.0.1看是否正常. .

tracert a.b.c.d.看是否正常. BSD/Linux用traceroute命令, 若不正常, .是防火墙或NAT的问题. 服务器

nslookup yahoo.com.cn.看.是否正常. 若不正常, 是DNS设置的问题. --------------彩票

ping .yahoo.com.cn看是否正常. .

浏.览器上网, 看是否正常.(注意,浏览器不应设置prox.y)电影


经过测试, 证明Wind.ows XP使用.如下工具工作正常.            杀毒





浏览器:. IE6, Net.scape 4.72, Netscape 6 --------------彩票

Email: Outlook Express, 含 hotmail 和 .pop3 邮件的收发..

MSN, 含数据和语音通话.


安全测试


请参照



target=_blank>;http://www.cert.org/security-improvement/practices/p060.html(广告)

href="http://web.ranum.com/pubs/fwtest/">;http://web.ranum.com/pubs/fwtest/域名



相关话题


RealPlayer的问题


系统完成后, 发现RealPlayer在防火墙后无法听音.乐, 总是不停地bufferi.ng, 直到timeout. .
这.是因.为默认方式下, RealPlayer8 使用了UDP Port 6970-7170接收数据, 该数据被我们的防火墙无情的挡住了, 电脑
由于N.AT的存在, 简单地允许这样的数据包.也无法保证Client工作正常.           建材



ipfilter 提供了一个proxy给.我们, .规则为上面已经列出来了, 但是有关资料显示该proxy只支持古老的 PNM RealAud.io方式, RealPlayer G2已经使用 RTSP 方式. 该proxy并不支持. .
好在RealPlayer.提供与防火墙兼容的模式, 可以设置为只使用TCP Port. --------------彩票
70.70, 7071, 554 三个端口连接Server, 与我们的防火墙正好吻合. 在防火墙工作正常后, Re.alPlayer 8 的设置方法是:健康





启动RealPlayer

选择菜单 .View ->; Perferences ->; Tr.ansport --------------彩票

选择Au.to-Configure,  Re.alPlayer可以自动为你设置为TCP             杀毒
Only的方式. 也可以手工设置,. 去除UDP的方式, 只用TCP的方.式.服务器


其他版本的设置方法, 请参照 target=_blank>;http://service.real.com/firewall/adminfw.html    美容



QQ的问题


网上有关QQ问题谈得很多, 我使用的是MSN.,     美容
因才对QQ不是很了解, 只能做一下简单的分析. 理论上讲, 通过服务器转发或向.外发送一般是没有什么问题的, 问题一.般出现在无法正常收到对方以UDP方式发送的消息,. 投资
该.消息无法通过我们的防火墙. 电影
不过这种说法对防火墙来讲不公平, 增加一条规则允许该UDP的包通过非常简单. 问题实际是在NAT上, 我们使用了192.168.0.0/16这样的内部地址. 当Q.Q向服务器.注册时, 实际使.用的是Gateway的地址, 但是如果内部有多个人使用QQ, 健康
服务器也会把这些QQ号码连接到这个IP上, 其他.用户根据服务器提供的地址从外部发送UDP包到了.Gateway, [成人用品]
Gateway就不知道应该把消息转发给谁. 因此这并不是一个简单的允许数据包通过的问题. 与此相同的问题还有netmeeting. 解决的方法, 一是允许用户全部通过服.务器转发, 防火墙能.够很好地处理这样.的问题. 我相信MSN就是这么做的. 但这.需要QQ 外贸
service provider的合作, 而且对他们的服务器会.有更高的要.求. 另一.种方法是类似ftp client的解决方式, 在Gateway上增加proxy. 我没有QQ的资料, 不能妄下结论.             电子



FTP的问题


FTP协议



这..是一个由于FTP协议所造成的问题, 让我们先看一下FTP协议. 电脑
FTP一般需要使用.两个端口, 端口21只是一个命令端口, 真正传送数据的时候, 还需要另外一个数据端口. 问题就出.现在第二个数据端口上. .
打开这.个数据端口的时候有两种方式, 一种是passive(PASV command)方式, 由FTP Server端提供一个连接的..IP/Port, FTP              汽车
Client连接到这个IP/Port上进行数据传输. 另一种是active(PORT com.mand)方式, 由F.TP Client提供.IP/Port,             杀毒
再由FTP Serv.er回叫至Client提供的地址. 具体采用哪一种方式, 是由F.TP
Client决定的, Cl.ient通过PASV或PORT命令.通知Server采用什么方式. 正是这样的握手方式, 给Server端和Client端都造成了.麻烦. 这个问题的具体描述详见 教育
target=_blank>;http://www.daemonnews.org/200109/ftpnat.html域名



FTP Server



Server端一般不希望使用passive方式, 这种方式要求防火墙动态地打开PASV的.端.口.            鲜花
而activ.e方式.对于Server的防火墙没有什么特殊的要求. 但是FTP            女人
Ser.ver是不能选择的, 除非.声明不支持passive方式. 一般的解决方法是, 在防火墙上固定地打开一些端口, 如 .15001-19999, 每次通信, FTP           婚庆
Serve.r软件可以从这.些端口中选择一个作为PASV的端口通知FTP Client. 如果你的FTP .
Server不支持指定passive端口范围, 你应该考虑更换.FTP Serv.er了. 这种方式防火墙需要增加规则电影



pass in quick on .tun0 proto tcp fro.m any to 0/32 port 15000>;< 20000 .
fl.ags S keep state kee.p frags             电子



FTP Client



根据上面的协议规则, 如果F.TP Client采用passive方式, 对于防火墙来讲没.有什么特殊的要求, 我们可以把问题留给FTP Server.             汽车



好消息是,一般的FTP Cli.ent软件都支持passive方式, 我使用的网络蚂蚁(n.etant), 网际快车(FlashGet)默认方式都.是passive,              汽车
WS_FTP是可以设置的, 这样防火墙就不需要特殊处理了.. Unix下.需要设置    健康



FTP_PASSIVE_MODE=yes; exp.ort FTP._PASSIVE_MODE.



坏消.息是, 浏览器的FTP使用的是active方式, 而且好像还不能更改. 不过现在直接使用浏览器FTP的.人已经是很少了 .
----.-- 我从来就不用浏览器下载. .
还有, 有一些FTP站点, 不支持passive方式. 我曾经访问过一些私.人的FTP站点, 就无法使用passive下载, 也许是他们在设计防火墙的时.候没有考虑.吧..



支持active模式可以通过在NAT上增加proxy解决的. Linux通过增加ip_conntrack_ftp解决, ipnat已.经完.成了这一功能, 我们只需要增加一条规则.就可以了.            女人
那就是我前面ipnat.conf中的第一条规则. 该proxy可以还提供反向FTP代理, 用于FTP Server. 可惜的是, 这样有可能造成安全隐患,详见 target=_blank>;http://www.false.net/ipfilter/2001_11/0273.html.     美容
我曾经与其他一些ipfilter的使用者讨论过这个问题, 一般认为, 如.果gateway兼做对外的FTP Server, 需要对外提供FTP.服务的话, 最好还是不要开放这一p.roxy, 内部用户只允许使用passive方式. (        游戏          )
如果仅仅是做一个对外.的代理服务器,. 即FTP只对内部机器开放, 开放这一proxy应该是安全的.           鲜花

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

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线wcl2222.
发帖
2014
C币
-235377
威望
382
贡献值
1
银元
-2
铜钱
4547
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
没几个人看啊!!!

离线yzc247.
发帖
2178
C币
-235386
威望
399
贡献值
1
银元
-1
铜钱
4913
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
这里是Linux版,大家对此不感兴趣.

发帖
2100
C币
0
威望
392
贡献值
1
银元
-1
铜钱
4594
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
I forgot it

离线ac2004.
发帖
2062
C币
-60745
威望
376
贡献值
1
银元
-1
铜钱
4591
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
well done. I like BSD (OpenBsd and FreeBsd)
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个