服务器 频道

OpenBSD高性能防火墙系统配置攻略

二、nat简单配置简介

    网络地址转换是映射整个网络(或者多个网络)到单个ip地址的方法。当你的isp分配给你的ip地址数目少于你要连上互联网的计算机数目时,nat是必需的。nat在rfc1631中描述。

    nat允许使用rfc1918中定义的保留地址族。典型情况下,你的内部网络可以下面的地址族:
10.0.0.0/8 (10.0.0.0 - 10.255.255.255) 172.16.0.0/12 (172.16.0.0 - 172.31.255.255) 192.168.0.0/16 (192.168.0.0 - 192.168.255.255)
    担任nat任务的openbsd系统必须至少要2块网卡,一块连接到因特网,另一块连接内部网络。nat会转换内部网络的所有请求,使它们看起来象是来自进行nat工作的openbsd主机系统。

    安装好openbsd系统以后使用pf是个很简单的事情, 只需要在/etc/rc.conf.local里面加入“pf=yes” 一行即可。重启系统让配置生效。

    你也可以通过pfctl程序启动和停止pf
# pfctl -e # pfctl -d
    注意这仅仅是启动和关闭pf,实际它不会载入规则集,规则集要么在系统启动时载入,要么在pf启动后通过命令单独载入。如果要记录日志,需要再加入下面两行:
    pflog_enable="yes" # 启动 pflogd(8)
    pflog_logfile="/var/log/pflog" # pflogd 用于记录日志的文件名
    openbsd系统安装以后使用pf成为nat的网络环境如图2:


    图 2 简单 网络环境

    基于openbsd 4.2 的防火墙配置双网卡:fxp0 和fxp1 。fxp0网卡是公网的地址, 接外网出口, fxpl是rfc1918规定的私有地址, 接内网。

    配置文件如下:
/etc/hostname. fxp0: inet 10.0.0.254 255.255.255.0 none /etc/hostname. fxp1: inet 192.168.0.254 255.255.255.0 none

 建立规则文件:
sudo pfctl -ef /etc/pf.conf 文件内容: #################### # 宏定义 ext_if = " fxp0" int_if = " fxp1" localnet = $int_if:network nat on $ext_if from $int_if:network to any -> $ext_if pass in quick all keep state pass out quick all keep state #####################

    因为要在两个网卡之间路由数据包, 所以需要在/etc/sysctl.conf里加入如下代码:
net.inet.ip.forwarding=1 net.inet6.ip6.forwarding=1
    说明:openbsd 有一个在系统引导时执行的配置文件。这使您可以更改运行中的内核,并将这些更改添加到配置文件,以便于在系统重新引导之后,这些更改仍然生效。 该实用程序称为 sysctl ,在 sysctl(8) 的联机帮助页中,对这个实用程序进行了完整的文档说明。 sysctl 的配置文件是 /etc/sysctl.conf 。这些行是本来就存在的,但默认安装中被#前缀注释掉了。删除#,保存文件,IP转发在机器重启后就会发生作用。

 检查 NAT 状态
    要检查活动的NAT转换可以使用pfctl(8)带-s state 选项。这个选项列出所有当前的NAT会话。
    # pfctl -s state
0
相关文章