Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8361
  • 博文数量: 7
  • 博客积分: 18
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-24 14:05
文章分类
文章存档

2017年(1)

2016年(1)

2015年(5)

我的朋友
最近访客

分类: 网络与安全

2015-12-06 00:08:33

在网上未找到关于NPF的中文文档,还好有英文的。完成此文主要参考了下面两篇文档:
- NPF documentation 网址:
- man npf.conf


1,需求
   除了允许openvpn用户端发起的vpn会话,其它所有的会话都被禁止。注:我的openvpn server只有一个物理网卡,我只需要VPN用户端与server端通信即可,很简单的架构。

2,编辑npf.conf
    创建/etc/npf.conf文档,可以参照/usr/share/examples/npf目录下的文档内容来创建,或者man npf.conf。

   下面贴出我的配置文件:

# 这是一种定义方法,这里定义的是物理网卡
$pub_if = "wm0"
$pub_v4 = { inet4(wm0) }

# 这是另一种定义方法,这里定义的是openvpn的TUN设备
$openvpn_if = { inet4(tun0) }


group (name "test", interface $pub_if) {
        block all
        # allow openvpn incoming from anywhere with stateful
        pass stateful in final family inet4 proto udp to $pub_v4 port 1194
        # allow ssh incoming from A.B.C.D with stateful - 这里指定一台公网上的特定电脑可以通过SSH访问openvpn server,以便应急使用
        pass stateful in final family inet4 proto tcp flags S/SA from A.B.C.D to $pub_v4 port ssh
}

# 这里允许openvpn隧道内的会话
group (name "openvpn", interface $openvpn_if) {
        # allow all session within openvpn tunnel
        pass all
}

group (default) {
        pass final on lo0 all
        block all
}

3,启动NPF
     这里照抄文档:
     srv# echo 'npf=YES' >> /etc/rc.conf
     srv# /etc/rc.d/npf reload
     Reloading NPF ruleset.
     srv# /etc/rc.d/npf start
     Enabling NPF.

     如修改了npf.conf文件,要想生效,只需:/etc/rc.d/npf reload 然后 npfctl start 即可。
    查看npf的简单状态,npfctl show 和 npfctl stats 命令。
阅读(407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~