FreeBSD内核级透明代理(IPFILTER)

发表于:2007-05-25来源:作者:点击数: 标签:
操作系统:FreeBSD4.7(带源码安装) 两块网卡: 1:3COM 2:DLINK 安装步骤: [code:1:23e4f4bda2] 一、编译内核 cd/usr/src/sys/i386/conf cpGENERICproxy viproxy 将一下四行加入 optionsIPFILTER optionsIPFILTER_LOG optionsRANDOM_IP_ID optionsBRIDGE

操作系统:FreeBSD 4.7 (带源码安装)
     两块网卡:
            1:3COM
                     2:DLINK


     安装步骤:
[code:1:23e4f4bda2]
一、编译内核
   cd  /usr/src/sys/i386/conf 
     cp  GENERIC proxy
     vi   proxy

     将一下四行加入
   options IPFILTER 
     options IPFILTER_LOG 
     options RANDOM_IP_ID 
     options BRIDGE 

     config proxy
     cd ../../compile/proxy
     make depend
     make
     make install

二、配置
     vi /etc/rc.conf
     
     内容如下:
   gateway_enable="YES" 
     hostname="soocol.com" # 设为你的hostname 
     kern_securelevel_enable="NO" 
     nfs_reserved_port_only="NO" 
     sendmail_enable="NONE" # 用作nat/firewall, 不需要 sendmail 
     sshd_enable="YES" # 
     usbd_enable="NO" 
     cron_enable="NO" 
     .network_interfaces="rl0 rl1 lo0" 
     ifconfig_rl0="202.102.121.67  netmask 255.255.255.0" 
     ifconfig_rl1="inet 192.168.0.1 netmask 255.255.255.0" 
     ifconfig_lo0="inet 127.0.0.1" 

# 设置IPFILTER 
     ipfilter_enable="YES" 
     ipfilter_flags="" 
     ipmon_enable="YES" 
     ipmon_flags="-Dsvn
     ipnat_enable="YES" 

     vi   /etc/resolv.conf
     
     内容为:
   nameserver 211.167.97.67
     nameserver 202.99.96.68

三、设置IPNAT
     
     vi  /usr/local/etc/rc.d/ipnat.sh
     
     内容为:
   #!/bin/sh
     [ -x /sbin/ipnat ] && /sbin/ipnat -CF -f /etc/ipnat.rules && ipf=-y && echo -n 'ipnat' 

     vi /etc/ipnat.rules
     
     内容为:
   map rl0 192.168.0.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
     map rl0 192.168.0.0/24 -> 0.0.0.0/32 portmap tcp/udp 10000:60000
     map rl0 192.168.0.0/24 -> 0.0.0.0/32
[/code:1:23e4f4bda2]

重新启动系统后局域网中的其他机器将网关设为192.168.0.1就可以上网了

 段誉 回复于:2003-07-11 09:18:26
这个是大家需要的一个精华。

BTW:startdd,如果有时间,你来做斑竹吧!

 startdd 回复于:2003-07-11 11:59:11
我可以试一试!终归为大家服务是好事!

 段誉 回复于:2003-07-11 14:48:00
好啊,举双手、双脚赞成。
我这就去推荐,希望我们的板子更加兴旺。

 清茶淡淡 回复于:2003-07-11 22:31:14
可以加入端口重定向配合squid吗?

 startdd 回复于:2003-07-11 23:19:45
map规则是用于转换外出数据包的源地址,使得被转换后的地址好象是从外部地址中发起的。而另一个规则rdr 用于转换数据包中的目的地址,这样就能使得一个数据包被转发到某个特定计算机上进行处理,这可用于构建端口映射关系。 

  rdr rl0 212.102.245.60 port 80 -> 192.168.0.1 port 80

  上面的规则将指定ipfilter在 rl0 网络接口上将发送给212.102.245.60,端口为80的数据包,转换为发送给内部地址192.168.0.1 。

  rdr的另一个重要用途是可以用以构建透明的代理服务器,普通代理服务器都需要在客户机上进行设置,如果不进行设置,客户机将直接访问Internet上的计算机而不通过代理服务器,然而防火墙可以将这些应用请求转发给代理服务器,完成代理工作。此时对外界发送请求是在内部网络接口rl0上发起的,因此也要在这里进行地址转换,而使用0.0.0.0/0 代表对所有目的地址,并且是80端口的浏览请求都转发到127.0.0.1上去,而127.0.0.1 必须运行代理服务器软件(例如:squid),以提供代理服务。

  rdr rl0 0 0.0.0.0/0 port 80 -> 127.0.0.1 port 80

 startdd 回复于:2003-07-11 23:43:57
ipnat -C
ipnat -f /etc/ipnat.conf
ipnat -l 
 

  当前使用-C参数用于清除现有的转换规则,-f用于从配置文件中读取转换规则。设置了转换规则之后,就可以使用-l参数查看当前设置的转换规则和已经激活的转换关系。

 段誉 回复于:2003-07-11 23:48:14
startdd,那个邮件系统是你做的??
ps:什么时候能够来作斑竹??

 startdd 回复于:2003-07-12 00:01:41
http://www.soocol.com
做了有一段时间了,现在有1万多用户了!
随时可以!

 段誉 回复于:2003-07-12 22:45:55
不错的站点,:)

 startdd 回复于:2003-07-13 00:20:55
谢谢“段玉”兄的好意,我看我还是不当这个版主吧!有人还因为我不公开 http://www.soocol.com 代码的事情而耿耿于怀!没有其他事的时候我会多发些技术帖子,使大家共同学习共同进步吧!

原文转自:http://www.ltesting.net