#定义“em1”为int_if,一般是内网的网关;“em0”为ext_if,一般是对外的公网IP
int_if = "em1"
ext_if = "em0"
#开启ICMP功能,允许ping功能
icmp_types = "echoreq"
#针对一些相同性质的IP地址或子网,定义一些表,便于后期策略的书写
table {192.168.0.0/24,58.215.65.149}
#定义一个DDOS表,以便后期定义防御小量的DDOS攻击策略
table persist
#定义一些端口集合
mailport = "{80,25,110}"
#设定过滤规则中指定的block 动作的默认行为(包含两个参数选项:drop - 数据包悄然丢弃;return - TCP RST 数据包返回给遭阻塞的TCP 数据包,ICMP 不可到达数据包返
回给其他)
set block-policy return
#设定PF要统计进/出流量和放行/阻塞的数据包的数目的网卡为“em0”
set loginterface $ext_if
#网络地址转发(nat) 与 端口转发(rdr)
#定义网络地址转发(nat),从内网int_if出去到任何的消息都通过ext_if转发出去
nat on $ext_if from $int_if:network to any -> ($ext_if)
#定义端口转发(rdr),从公网ext_if进入到本机特定port的请求,都转发到内网某台机器的相应port上(说明下面的例子:当用户从公网请求服务器的65432这个端口的服务时,都转发到192.168.0.111的65432)
rdr on $ext_if proto tcp from any to any port 65432 -> 192.168.0.111 port 65432
#定义过滤规则
#先各定义进、出全拒规则
block in all
block out all
#定义从表中定义的IP来的任何请求,全部通过
pass in quick inet from
#定义lo0(本地环回接口)所有任一方向请求通过
pass quick on lo0 all
#定义esp,ah,ipencap三种协议任一方向请求通过(VPN所使用的隧道协议)
pass quick proto esp
pass quick proto ah
pass quick proto ipencap
#定义入站队列
pass in on $int_if from $int_if:network to any queue std_in
pass quick proto {tcp,udp} to $ext_if port 53
pass in quick inet proto tcp from any to 172.16.16.16 port 10010
#定义出站队列
pass out on $int_if from any to $int_if:network queue std_out
pass quick inet proto icmp all icmp-type $icmp_types
pass out all
阅读(1054) | 评论(0) | 转发(0) |