|
发表于 2005-11-15 12:17:30
|
显示全部楼层
我记得是你pf那个规则设置不对,就算全都pass在默认情况下也发不出去,可能是为了防止垃圾邮件。
以下引自CU-BSD版,剑心通明斑竹规则:
#macros
ext_if="xl0"
#定义外网网卡
int_if="xl1"
#定义内网网卡
tcp_services="{21,80,8021,49151><65535}"
#开放的端口,暂时未用
icmp_types = "echoreq"
#icmp的类型
priv_nets="{ 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 127.0.0.0/8, 0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 204.152.64.0/23, 224.0.0.0/3, 20.20.20.0/24 }"
#定义不该在外网网卡上出现的数据包
ssh_nets="{a.b.c.115/32}"
#定义可ssh的主机范围
int_net="{ a.b.c.0/21, e.f.g.0/22 }"
#定义nat带的内网的地址范围
www_server="a.b.c.79"
#rdr转换的内部server地址
deny_port="{135,137,138,139,445,593,4444,6881><6889,6969}"
#关闭如下端口
#options
set block-policy drop
#block的默认规则是drop,不再返回任何回应数据包,节省资源
set loginterface $ext_if
#pf统计ext_if网卡的进/出流量和pass/block的数据包数目
set optimization aggressive
#自状态表中主动终止空闲连接
#scrub
scrub in all
#流量整形,避免最终的数据包出现非法目的,同时也会重组数据包碎片,保护操作系统免受攻击,丢失某些带有非法联合标记的TCP数据包。
#############################
##ALTQ部分,控制垃圾邮件
##################################
altq on $int_if cbq bandwidth 30Mb queue { std_in mail }
queue std_in bandwidth 25Mb cbq(default)
queue mail bandwidth 1Mb
altq on $ext_if cbq bandwidth 20Mb queue { std_out }
queue std_out bandwidth 18Mb cbq(default)
##################################################
##nat rules nat的规则必须写到filter规则的前面
##################################################
nat on $ext_if from $int_net to any -> ($ext_if)
#nat转换所有的内部地址,()是让PF自动更新ext_if的地址
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
#让内网可以使用ftp client软件连接外部的ftp服务器
rdr on $ext_if proto tcp from any to any port 80 -> $www_server
#rdr内部的www_server
#####################
##filter rules
#####################
block all
#block所有的包,然后依实际情况开放
block in quick proto tcp all flags SF/SFRA
block in quick proto tcp all flags SFUP/SFRAU
block in quick proto tcp all flags FPU/SFRAUP
block in quick proto tcp all flags /SFRA
block in quick proto tcp all flags F/SFRA
block in quick proto tcp all flags U/SFRAU
#防止一些网络扫描软件
pass quick on lo0 all
#允许localhost数据包通行
###############
#int_if内网网卡
###############
pass in quick on $int_if proto tcp from $ssh_nets to any port 22 flags S/SA keep state
#允许ssh_nets的计算机ssh登录
pass in quick on $int_if inet proto icmp all icmp-type $icmp_types keep state
#允许ping内网网卡
block in on $int_if proto tcp from any to any port 22 flags S/SA
#禁止其它机器ssh登录,因为有block all,似乎可以不要了,但是加上更放心!
block in quick on $int_if proto tcp from $int_net to any port $deny_port flags S/SA
pass in log quick on $int_if proto tcp from $int_net to any port 80 flags S/SA keep state queue std_in
pass in quick on $int_if proto tcp from $int_net to any keep state queue std_in
pass out on $int_if from any to $int_net
#允许内网网卡和内网之间通讯
###############
#ext_if外网网卡
###############
block drop in quick on $ext_if from $priv_nets to any
#拒绝所有私有地址进入ext_if网卡
block drop out quick on $ext_if from any to $priv_nets
#拒绝所有私有地址出去ext_if网卡
pass in on $ext_if proto tcp from any to ($ext_if) port $tcp_services flags S/SA keep state
#允许开放端口的数据包进入ext_if网卡
pass in on $ext_if proto tcp from any to $www_server port 80 flags S/SA synproxy state
#www_server的连接由PF来进行TCP代理,防止TCP SYN FLOODs欺骗
pass out on $ext_if proto tcp all modulate state flags S/SA queue std_out
#ext_if网卡上允许tcp数据包出去,并为匹配规则的数据包产生强壮的初始化序列号
pass out on $ext_if proto {udp,icmp} all keep state queue std_out
#ext_if网卡上允许udp、icmp数据包出去
根据自己情况再改改就行了,不过对带宽还有网络性能优化方面做得还不太够,但已经可以足够工作了。 具体优化项可以参考pf-FAQ。 |
|