|
测试环境:
# 此处假设环境为:
# A机双网卡,安装系统FreeBSD4.9,通过局域网上网,网关192.168.0.3
rl0接外网,地址:192.168.0.211 #此处”外网”也即能上网的局域网
rl1接内网,地址:192.168.1.211
# B机单网卡,安装系统winXP
地址:192.168.1.217
一、编译内核:
cd /usr/src/sys/i386/conf
cp GENERIC mykernel
ee mykernel
添加:
options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK #这一句默认全部BLOCK,可以不要
ident mykernel #标识内核
#这里有个奇怪的地方,有次我输入错误了,变成indent mykernel结果mykernel文件中的有效定义部份全都跑到中间去了,当然编译时也报错了。不知道这个是什么命令。
编译:
1、cd /usr/src
make buildkernel KERNCONF=mykernel
make installkernel KERNCONF=mykernel
两句也可合二为一:make kernel KERNCONF=mykernel
不知道为什么,我用的是同一张4.9mini盘,可是开始几次可以这样编译,但是有时候又不行,只有如下这样编译了。
2、/usr/sbin/config mykernel
cd ../../compile/mykernel
make depend
make
make install
二、安装squid:(用ports,前提是能上网)
我曾经试着从网上下载了squid安装包用在linux中的方法一样进行解压安装,但是发现编译选项在linux中与BSD中是不一样的,我按照Ports中的Makefile来进行编译也不成功,后来就只有用ports来进行安装了,好在安装非常简单。
cd /usr/ports/www/squid
make install
make clean
# squid.conf位于:/usr/local/etc/squid/squid.conf
# squid命令位于:/usr/local/sbin/squid
配置squid.conf文件:(主要是以下一些选项)
http_port 3128
acl all src 0.0.0.0/0.0.0.0 #这里设为全部通过,具体用户控制方法可以查阅squid说明
cache_effective_user nobody
cache_effective_group nobody
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
emulate_httpd_log on #这一句是为了让access.log日志文件有时间显示
保存后退出:
/usr/local/sbin/squid –z #建立缓存目录,然后chmod更改缓存目录权限
/usr/local/sbin/squid #启动squid,
此时如果有时不能启动,多半是因为/usr/local/squid/logs这里的权限不对,将之设为777就好了。
三、编辑/etc/rc.conf:(注意不能有ipfirewall)
gateway_enable=”YES”
named_enable=”YES”
ipfilter_enable=”YES”
ipfilter_program=”/sbin/ipf”
ipfilter_rules=”/etc/ipf.rules” #此文件自定义,为包过滤规则文件
ipfilter_flags=””
ipnat_enable=”YES”
ipnat_program=”/sbin/ipnat”
ipnat_rules=”/etc/ipnat.rules” #此文件自定义,为nat规则文件
ipnat_flags=”-Ds”
ipmon_enable=”YES”
ipmon_program=”/sbin/ipmon”
ipmon_flags=”YES”
四、编辑/etc/ipf.rules文件:(若此文件规则不得法,则有可能启动报错)
block in quick all with short
block in quick all with ipopts
pass in quick on lo0
pass out quick on lo0 all
pass in quick all
pass out quick all #允许所以通过,当然不安全,规则自己设定,这是我只是测试用
五、编辑/etc/ipnat.rules文件:
rdr rl10.0.0.0/0 port 80 -> 192.168.1.211 port 3128 tcp/udp
map rl0 192.168.1.0/24 -> 192.168.0.211/32 portmap tcp/udp 10000:65000
六、启动:
ipf –f /etc/ipf.rules
ipnat –f /etc/ipnat.rules
ipnat –l #查看nat规则
/usr/local/squid/logs/access.log 日志记录文件
有时重启系统以后会出现一些有关DNS之类的错误提示,多半是由于/etc/ipf.rules规则设置有误,还有一点,我这样配置好以后,开始并不能正常工作,要等一阵,有时要挺长时间,透明代理才能正常工作,不知道为什么,我装了几次都是这样。由于我也是菜鸟级别的,大家有什么建议及意见,欢迎一起交流。 |
|