Solaris 9 透明代理: +++IPFilter+++

发表于:2007-05-26来源:作者:点击数: 标签:
摸索好久才把IPFilter的配置搞定,和大家分享,不妥之处还得请教。 Solaris9发行光盘里好像没有IPfilter的这样的工具,先是安装IPfilter工具包。从[url]http://coombs.anu.edu.au/~avalon/[/url]官方网站,下得ip_fil4.1.8.tar.gz+pfil-2.1.6.tar.gz,很感动

摸索好久才把IPFilter 的配置搞定,和大家分享,不妥之处还得请教。

Solaris 9发行光盘里好像没有IPfilter 的这样的工具,先是安装IPfilter工具包。从[url]http://coombs.anu.edu.au/~avalon/[/url]官方网站,下得ip_fil4.1.8.tar.gz+ pfil-2.1.6.tar.gz,很感动,是免费的。好了,我们开始工作吧。

bash-2.05#cd /opt
bash-2.05#mkdir tmp
bash-2.05#cd tmp
bash-2.05#pwd
/opt/tmp
bash-2.05# wget
bash: wget: command not found
bash-2.05# find / -name wget -print
/usr/sfw/bin/wget
^C
bash-2.05# /usr/sfw/bin/wget http://coombs.anu.edu.au/~avalon/ip_fil4.1.8.tar.gz
--15:42:45--  http://coombs.anu.edu.au/%7Eavalon/ip_fil4.1.8.tar.gz
           => `ip_fil4.1.8.tar.gz'
Connecting to coombs.anu.edu.au:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 1,000,270 [application/x-tar]
.............
.............
.............

15:43:08 (44.01 KB/s) - `ip_fil4.1.8.tar.gz' saved [1000270/1000270]

bash-2.05# /usr/sfw/bin/wget ftp://coombs.anu.edu.au/pub/net/ip-filter/pfil-2.1.6.tar.gz
--15:47:09--  ftp://coombs.anu.edu.au/pub/net/ip-filter/pfil-2.1.6.tar.gz
           => `pfil-2.1.6.tar.gz'
Connecting to coombs.anu.edu.au:21... connected!
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /pub/net/ip-filter ... done.
==> PORT ... done.    ==> RETR pfil-2.1.6.tar.gz ... 

...........
...........
...........

还好,网速可以,很快就可以下下这两个工具,Let's Go...

bash-2.05# ls
ip_fil4.1.8.tar.gz  pfil-2.1.6.tar.gz
bash-2.05# gzip -d ip_fil4.1.8.tar.gz
bash-2.05# gzip -d pfil-2.1.6.tar.gz
bash-2.05# ls
ip_fil4.1.8.tar  pfil-2.1.6.tar
bash-2.05# tar -xvf ip_fil4.1.8.tar 
bash-2.05# tar -xvf pfil-2.1.6.tar  
bash-2.05# ls
ip_fil4.1.8      ip_fil4.1.8.tar  pfil             pfil-2.1.6.tar

Ok,终于搞定了这两个工具包,记得先要安装 pfil ,再安装 ip_fil4.1.8, 不然装了IPfilter 系统重启时会提示模块没有识别等等错误,小心哦。Let's Go.

bash-2.05# cd pfil
bash-2.05# make
bash-2.05# make install

(哦, :roll: ,搞忘了告诉你 这里的make 是基于 GNU的编辑器,注意设置系统PATH相关的路径,不然会提示出错的。设置如下:
#vi ~/.profile
PATH=$PATH:/usr/sbin:/usr/bin:usr/clearcase/" target="_blank" >ccs/bin:/opt/SUNWspro/bin
export PATH
bash-2.05# make
make: Fatal error: No arguments to build

当看到如此的提示时,表示系统找到了Make的设置路径了。OK,终于可以继续了, :mrgreen: 
)

bash-2.05# cd ip_fil4.1.8
bash-2.05# make solaris
bash-2.05# cd SunOS5
bash-2.05# make install

(ok, :em06: ,碰到错误没有,没有的话,一切还好。如果碰到错误,无非是 ''cc not find ", :em18: ,记不起来怎么样的语句,记得 cc的编辑器是使用 Solaris的cc 编译器,否则有很多错误哦, 记得系统原本没有带这个编辑器,从Solaris的发行工具包中 Bonus Softwar 中, Forte Developer 7找到这个编辑器。其实,上面的配置已经设置了,如opt/SUNWspro/bin,好期待没有错误吧,警告少不了的 :em11: )

好了,可以继续了...

bash-2.05# init 6

如果系统启动正常,表示ipfilter 安装成功。很好!! :em02: 

现在开始说说网络的使用了。我是采用两张网卡:hme0(内网,ip:a.b.c.d)和eri0(外网,ip:w,x,y,z).Ipfilter 一方面启到包过滤的作用,另一方面启到NAT的作用,很好,这正是我所要的。当然要使IPFilter 在Solaris下正常工作,少不了设置ip_ forwarding的参数,OK,Let's Go:

bash-2.05# vi /etc/rc2.d/S69ipforward 
#!/bin/sh
     case "$1" in
      start)
        echo "Activating IP Forwarding ..."
        /usr/sbin/ndd -set /dev/tcp ip_forwarding 1
        /usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 25000
        /usr/sbin/ndd -set /dev/ip  ip_respond_to_echo_broadcast 0
        ;;
      stop)
        echo "De-activating IP Forwarding ... "
        /usr/sbin/ndd -set /dev/tcp ip_forwarding 0
        /usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 32768
        /usr/sbin/ndd -set /dev/ip  ip_respond_to_echo_broadcast 1
       ;;
     *)
        echo "Usage: $0 (start|stop)" >&2
        exit 1
        ;;
    esac
    exit 0

( :em13: ,哦,哦,我也设置了其他两个参数,具体可以查考其他说明, :em24: )

bash-2.05# chmod 744 /etc/rc2.d/S69ipforward
bash-2.05# cd /etc/opt/ipf
bash-2.05# ls
ipf.conf

OK,ipf.conf是设置包过滤方面的,ipnat.conf是设置NAT方面的,可以查看/etc/rc2.d/S65ipfboot的启动文件,发现主要是靠这两个配置文件来使IPFilter工作的。对了刚开始没有ipnat.conf文件,自己建一个吧。Let's GO:

bash-2.05# vi /etc/opt/ipf/ipnat.conf

map eri0 a.b.c.0/24 -> w.x.y.z/32 portmap tcp/udp 10000:39999
map eri0 a.b.c.0/24 -> w.x.y.z/32
#上面两句是NAT地址转换,全靠你们啊。

rdr eri0 w.x.y.z/32 port 40000-60000 -> a.b.c.d port 40000 tcp
map eri0 a.b.c.0/24 -> w.x.y.z/32 proxy port ftp ftp/tcp
#上面两句是Ftp 处于Passive模式端口的对应模式, :em03: ,我是要使用Ftp的。

rdr eri0 w.x.y.z/32 port 80 -> a.b.c.d port 80
rdr eri0 w.x.y.z/32 port 21 -> a.b.c.d port 21
rdr eri0 w.x.y.z/32 port 25 -> a.b.c.d port 25
rdr eri0 w.x.y.z/32 port 110 -> a.b.c.d  port 110
rdr eri0 w.x.y.z/32 port 139 -> a.b.c.d  port 139
rdr hme0 w.x.y.z/32 port 80 -> a.b.c.d  port  80
rdr hme0 w.x.y.z/32 port 21 -> a.b.c.d  port 21
rdr hme0 w.x.y.z/32 port 25 -> a.b.c.d  port 25
rdr hme0 w.x.y.z/32 port 110 -> a.b.c.d  port 110
rdr hme0 w.x.y.z/32 port 139 -> a.b.c.d  port 139
#上面的几句是让外网能够访问内网的www、ftp、mail、网络共享服务
( :| ,记得把w.x.y.z, a.b.c.d 换成你对应的IP啊).

好了,NAT设置好了,我们继续设置ipf.conf吧,很重要的哦。

bash-2.05# vi /etc/opt/ipf/ipf.conf

block in log quick all with short
block in log quick all with ipopts
block in log quick all with frag
block in log quick all with opt lsrr
block in log quick all with opt ssrr

pass out on hme0 all
pass in on hme0 all
pass out quick on lo0 all
pass in quick on lo0 all

block out on eri0 all

block out log on eri0 from any to 192.168.0.0/16
block out log quick on eri0 from any to 0.0.0.0/8
block out log quick on eri0 from any to 169.254.0.0/8
block out log quick on eri0 from any to 10.0.0.0/8
block out log quick on eri0 from any to 127.16.0.0/12
block out log quick on eri0 from any to 127.0.0.0/8
block out log quick on eri0 from any to 192.0.2.0/24
block out log quick on eri0 from any to 204.152.64.0/23
block out log quick on eri0 from any to 224.0.0.0/3

pass out log on eri0 proto tcp/udp from any to any keep state
pass out log on eri0 proto icmp all keep state

Save, 保存好我们的设置吧,简单的防火墙,我们已经架起来了。

bash-2.05# init 6

OK, 重启后我们的Solaris工作站开始正常运作了,

bash-2.05# ping www.sina.com.cn
www.sina.com.cn is alive

客户端设置如下
          IP:a.b.c.x(  :P , x != d)
               NetMask:255.255.255.0
              Gateway:a.b.c.d

              DNS: ~ ~ ~ ~ ( :| ,自己查了)
  winxp: Com模式
:Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\>ping www.sina.com.cn

Pinging jupiter.sina.com.cn [202.205.3.143] with 32 bytes of data:

Reply from 202.205.3.143: bytes=32 time=16ms TTL=53
Reply from 202.205.3.143: bytes=32 time=16ms TTL=53
Reply from 202.205.3.143: bytes=32 time=17ms TTL=53
Reply from 202.205.3.143: bytes=32 time=15ms TTL=53

Ping statistics for 202.205.3.143:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 15ms, Maximum = 17ms, Average = 16ms

ok,我们的可爱的客户也能上网啊, :mrgreen: ,  想跳楼, :wink: .

(忘了说说,IPFilter的使用了。
bash-2.05#ipmon -o N
(实时显示当前NAT的状态)
bash-2.05#ipf -F i (入)
bash-2.05#ipf -F o(出)
(清除 入和出 的防火墙规则)
bash-2.05#ipf -f /etc/opt/ipf/ipf.conf
(加载 新设定的防火墙规则)
bash-2.05#ipnat -CF
(清除 NAT 规则)
bash-2.05#ipnat -f /etc/opt/ipf/ipnat.conf
(加载 NAT 规则)

OVER,  :em12: .)

 ninedot 回复于:2005-04-24 20:48:16
新手,不了解,所以看不太懂,学习!

 cqvrboy 回复于:2005-04-25 09:27:37
不错的帖子。
我原来也在E3500上配置ipfilter+squid,但配好后客户端的网速不如用防火墙快。不知兄弟这个做好以后客户端网速如何?

 paradisegame 回复于:2005-04-25 10:42:05
鼓励~

 alex_linux 回复于:2005-04-25 11:47:32
8错

 weileng 回复于:2005-05-18 11:28:28
试验良久,的确如仁兄所说,ipfilter + squid后的网络,不如直接用ipfilter.

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