IPFW和IPF

一、IPFW
IPFW意思可以理解为ip防火墙,主要作用是拦截设定规则外的ip包。你可以把这个理解为linux下的iptables,但是,ipfw要比iptables简单易用。
freebsd系统默认是不安装ipfw或者ipf的,你需要在内核配置文件中启用并重新编译内核。所以,你需要先运行sysinstall-->Distribution->src->选择base,sys,然后安装系统内核源码。
然后进行下列步骤
#cd /usr/src/sys/amd64/conf #cp GENERIC IPFW #vi IPFW
在最下面加入以下内容
options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=10 options IPFIREWALL_DEFAULT_TO_ACCEPT
粗体字十分重要,如果你不加上的话,IPFW将默认关闭所有连结,相当于物理隔离了,你将无法远程登录维护。
然后编译内核。注,你必须安装源码中的base,否则你将无法编译任何东西
#cd /usr/src #make buildkernel KERNCONF=IPFW #make installkernel KERNCONF=IPFW
然后进入/etc
#vi rc.conf 加入以下内容
firewall_enable="YES" firewall_type="open" #open或规则文件绝对路径
之后等待编译并安装完成。IPFW就启用了,然后重启就可以开始配置IPFW的规则了。你过去的kernel将放在/boot/kernel.old,如果你编译后有任何启动方面的问题,可以在刚开始启动的选择菜单选择Load Prompt选项,然后打boot kernel.old启动你原来没有问题的内核。
相比于iptables那种-m -d的选项方式的命令行,IPFW的配置更接近于人类的语言。其实目前有很多防火墙或者流控系统都是是基于FreeBSD的IPFW或IPF的,只是做了一个网页的界面,便于不太熟悉命令行操作的人使用,比如panabit或者m0n0wall。不过我觉得,其实命令行更灵活和方便简单。
ipfw分内规则和外规则两种,设定规则时,你需要给定规则编号,10000以内为内规则,以上是外规则。当然你也可以给10000以内的,只要你自己看得懂就行,一条规则ID可以分配多个规则使用。关于规则ID,如果你学习过路由交换和cisco的acl,应该是比较容易理解的。实际上Cisco的IOS就是基于BSD系统做嵌入式开发的。如果实在没有概念,你可以把规则ID理解为key,规则内容就是key对应的value。
ipfw基本语法如下
ipfw 操作(添加|删除) 规则编号 动作(允许|拒绝) 地址(All) from 地址(IP|ANY) to 地址(IP|ANY) 端口号
示例如下
#ipfw add 10001 deny all from any to 192.168.1.10 22
注意,请不要将这行代码放入你的服务器里,否则你将无法访问。
按照人类语言的描述就是,ipfw 添加 10001 拒绝 所有 从 任意地址 到 192.168.1.10的22端口。如果你需要去掉这条规则,就把add换成delete,ipfw的使用方法写出来有好几页,可以去查看FreeBSD的中文手册,BSD这点非常好,手册非常详细。
你也可以用ipfw做nat转发,示例如下
#ipfw nat 1 config redirect_addr 10.0.0.1 10.0.0.66 #ipfw nat 2 config redirect_port tcp 192.168.0.1:80 500 #ipfw nat 3 config redirect_proto udp 192.168.1.43 192.168.1.1
这样来说,ipfw可以完成的事情非常多,并不比iptables差,并且由于tcp/ip协议是在bsd上先实现的,所以,效率更高。而且语法更简单明了。也同样可以对二层地址(MAC)进行访问控制。
使用ipfw list查看当前规则
二、IPF
IPFW和IPF是两个完全不同的东西,但是功能和性能很接近,没有谁好谁坏,看使用习惯了,但是同样都需要重新编译内核才可以生效。前面几步跟IPFW一样。
#cp GENERIC IPF #vi IPF
插入以下内容
options                                 IPFILTER options                                 IPFILTER_LOG
编辑/etc/rc.conf
#vi /etc/rc.conf
加入
ipfilter_enable="YES" #打开ipfilter ipfilter_rules="/etc/ipf.rules" #ipfilter规则文件绝对路径 gateway_enable="YES" #作为网关使用 ipnat_enable="YES" #nat转发打开 ipnat_rules="/etc/ipnat.rules" #nat 规则文件绝对路径
然后重新编译,安装内核,重启。
典型命令如下
#ipf -l pass in quick on lo0 all #ipf -l block in quick on em0 from any to 192.168.0.0/16
解释一下:
ipf 允许 进入 在 lo0(环回地址) 全部
ipf 锁定 进入 在em0 从 任意 到 192.168.0.0/16(B类)
非常简单
ipnat是ipf下可以做nat转发的工具,我一般会把nat规则写入到一个文件里,这样启动的时候会自动加载很多规则,不用一个一个去执行。
典型文件内容如下
map bce1 192.168.10.0/25 -> 211.103.xxx.xx1/32
#将bce1地址192.168.10.0/25(VLSM)转发到211.103.xxx.xx1/32(固定地址)
map bce1 192.168.20.111/32 -> 211.103.xxx.xx2/32
#将bce1地址192.168.20.111/32(固定地址)转发到211.103.xxx.xx2/32(固定地址)
rdr bce1 192.168.10.2/32 port 80 ->    211.103.xxx.xx2/32 port 8100 tcp
#端口转发(rdr) bce1 地址192.168.10.2/32(固定地址)的80端口 转发到 211.103.xxx.xx2/32的8100端口。

ipfw和ipf大致就是这样,还有一个过滤工具叫pf,全称为packet filter,那个不是很熟,就不写了。有任何疑问可以参看BSD的手册,解说非常详细。
增加fsck_y提供的内核选项
options             ACCEPT_FILTER_DATA options             ACCEPT_FILTER_HTTP options             ACCEPT_FILTER_DNS

转载于:https://www.cnblogs.com/wenus/p/5517349.html

FreeBSD从零开始---安装后配置(三)相关推荐

  1. elementary os安装后配置

    elementary os安装后配置 参考链接 https://www.jianshu.com/p/f0298125ad84/ 2020年10月25日 更新博客 注意:本人使用最新的 elementa ...

  2. centos mysql 设置_CentOS下MySQL安装后配置和设置-阿里云开发者社区

    CentOS下MySQL安装后配置和设置: 1:安装完成路径: 1.数据库目录 /var/lib/mysql/ 2.配置文件 /usr/share/mysql(mysql.server命令及配置文件) ...

  3. CentOS下MySQL安装后配置和设置

    CentOS下MySQL安装后配置和设置: 1:安装完成路径: 1.数据库目录/var/lib/mysql/2.配置文件/usr/share/mysql(mysql.server命令及配置文件)3.启 ...

  4. elementary OS 5 Juno (Pantheon) 安装后配置总结(干货很多)

    欢迎加入 Ubuntu 阵营!elementary OS 是 Ubuntu 阵营中兼具实用和美观的发行版,的确值得安装尝试.这是一篇长文,我精简了一些内容,但是干货越多说得越详细,篇幅就会越大.已经克 ...

  5. Manjaro KDE 21.2.5安装后配置、yay常用命令、常用软件安装及主题美化(2022.04.18)

    Manjaro KDE 21.2.5安装后配置.yay常用命令.常用软件安装及主题美化(2022.01.23) 结果展示 基本配置 关于 manjaro 的安装这里不再赘述了,安装的时候选择闭源驱动无 ...

  6. IBM HACMP 系列 -- 安装和配置三

    HACMP 提供了下列类型的资源组: (1).      级联资源组 (2).      循环资源组 (3).      并发访问资源组 (4).      自定义访问组 一. 级联资源组 级联资源组 ...

  7. idea 项目文件文字定位搜索 安装后配置等

    目录 全局搜索替换 全局搜索查找 Ctrl + shift + F 定位                 我用过最好的快捷键,体验感贼强 Ctrl + Alt + 左     Ctrl + Alt + ...

  8. postgresql9.5 run 文件linux安装后配置成开机服务

    网上出现的比较多安装方法要么是源码安装,要么是yum安装,我发觉都要配置很多属性,比较麻烦,所以现在我在centos7长用 run文件来安装 http://get.enterprisedb.com/p ...

  9. Manjaro_xfce 安装后配置

    date: 2019/1/26 13:27:06 一.设置su sudo免密 1.设置su免密 sudo vim /etc/pam.d/su 直接将如下两行内容取消注释 auth sufficient ...

最新文章

  1. ActiveReports 报表应用教程 (1)-Hello ActiveReports
  2. laravel --- composer install之后,项目没有vender目录
  3. java旋转图片并画出_java实现图片角度旋转并获得图片信息
  4. python中的带有换行符的字符串在juypter中直接输入、print与写入文件的区别
  5. 骆驼祥子大事件时间轴_骆驼中的事件处理
  6. 按插入顺序排序的map
  7. Web开发的那点事--软件复用
  8. css hack的使用
  9. linux清除asm磁盘分区,ASM Diskgroup添加与删除
  10. springmvc03 接收请求参数
  11. 我花 10 个小时,写出了小白也能看懂的阿里数据中台分析!
  12. QQ空间制作软件大全
  13. 删除远程桌面登录的记录(mstsc)
  14. 2020年开始,中国程序员前景一片灰暗,是这样吗?
  15. iOS申请证书,Certificates, Identifiers Profiles 简介
  16. 超码、候选码和主码有什么区别?
  17. 子集生成算法 之 位向量法和增量构造法
  18. 数据库主键到底是用自增长(INT)好还是UUID好?
  19. 选择二极管要考虑哪些点?
  20. freemarker导出word文档对图片拉伸或拉长的处理

热门文章

  1. Can you answer these queries V SPOJ - GSS5 (分类讨论+线段树维护区间最大子段和)
  2. 2019.6.16完成classstack任务
  3. spring容器注入一个接口的两个实现类
  4. java中会存在内存泄漏吗,请简单描述
  5. 4.4基于switch语句的译码器
  6. Objective--C内存管理基础
  7. QT+SQLite 判断表中是否含有指定字段
  8. MFC线程创建运行关闭的问题
  9. swift5.x基础知识入门
  10. 在虚拟机上装win2003 server心得体会