Linux 板


LINE

第四章 实作nftables与开机载入规则分享 本章节即将以一实例运作的nftables, 来介绍nftables在Debian Jessie可以如何运作。 我们在测试所使用的这台电脑, 就直接实际测试开机规则载入执行nftables的实测。 4.1 建立nftables规则的方式 nftables的规则建立方式, 除了在第三章中我们所介绍的直接输入nftables的指令以外, nftables本身也有一个互动式的介面, 可以让使用者查询/编辑目前运作中的nftables规则。 # nft -i nft -i的这个指令可以让使用者进入nftables的互动式指令介面: nft> 而稍早我们在第三章所介绍的指令, 在互动介面中, 就可以不用输入指令最前端的"nft"这3个英文字, 如此一来下指令的时间就缩短了一些。 而若要离开互动式介面, 则在互动式介面中输入quit即可: nft>quit 如此一来就跳回原本使用的shell环境了。 而详细的nftables指令, 可以在man里面查询nftables的指令规则, 安装好nftables後man里面就有详细的资料罗! 4.2  nftables运作实例 一个完整的防火墙, 在电脑开机後进入系统, 就需要自动运行了, 而如何让nftables在Debian Jessie上自动的运行呢? 这个问题非常好! 在debian中不用额外撰写任何的script, 便有现成的方法让nftables自动运行。 在早期我们操作iptables的开机规则载入时, 我们将iptables-restore指令写在/etc/network/if-pre-up.d中, 给予其x权限, 使得我们所建立的iptables规则得以於开机时自动载入并且执行。 同样的nftables也可以依样画葫芦! 在Debian Jessie中nftables的规则档案, 目前经过测试可成功运行的载入方法有两种, 分别是: 1. 复制/etc/nftables中的设定,   并且在复制的设定中编辑所需的规则, 於开机时设定由/etc/network/if-pre-up.d建立的nftables载入指令, 来去载入编辑好的nftables规则。 2. 於/etc目录中, 随意touch一档案, 将nftables规则写於此档案中, 在由/etc/network/if-pre-up.d建立的nftables载入指令,   使其自动执行编辑的nftables指令档。 由於方法2可以让使用者看到完整的nftables指令, 如此一来就算不常编辑nftables规则, 也比较不容易忘记nftables的指令语法。 亦为笔者较为推荐的方式。 故於在第四章中, 便以方法2进行示范! 为了避免视觉性的混淆, 示范的过程将会将ipv4与ipv6设定的档案以不同的档名做区分。 首先我们先在/etc中分别建立ipv4规则与ipv6规则的档案, 以范例中的电脑, 是直接建立在/etc/nftables中, 分别建立档案名称为4与6的档案予以分别放置ipv4与ipv6的规则, 为了避免一般使用者cd至nftables目录後可以使用cat指令看到nftables的规则, 加上此两个档案必须进行载入而需要使用x权限, 故我们将此两档案权限设定为700。 我们简单测试的ipv4的nftables规则加至档案名称为4的档案如下: nft add rule ip filter input ct state established accept nft add rule ip filter input tcp dport {1234,5678} accept nft add rule ip filter input icmp type {echo-request} accept nft add rule ip filter input drop nft add rule ip filter forward drop ipv6的nftables规则加至档案名称为6的档案如下: nft add rule ip6 filter input ct state established accept nft add rule ip6 filter input drop nft add rule ip6 filter forward drop 编辑好所需要的规则後, 再来就是处理开机载入的部份了! 我们到了/etc/network/if-pre-up.d目录中, 分别建立自动载入ipv4与ipv6规则的两个档案, ipv4的档案随意命名为4start, ipv6的档案随意命名为6start, 在4start的档案中, 我们写入以下的指令: #!/bin/sh /usr/sbin/nft -f /etc/nftables/ipv4-filter;/usr/sbin/nft flush table ip filter;/etc/nftables/4 而在6start的档案中, 我们写入以下的指令: #!/bin/sh /usr/sbin/nft -f /etc/nftables/ipv6-filter;/usr/sbin/nft flush table ip6 filter;/etc/nftables/6 完成此两个档案後, 切记必须要把两个档案的权限设为700, 如此一来开机後, 才会自动载入/etc/nftables/4, 以及/etc/nftables/6这两个以设定好的规则档案。 这时候重新开机试试看吧! 重新开机後, 我们下nft list table ip filter指令, 将会看到: table ip filter { chain input { type filter hook input priority 0; ct state established accept icmp type { echo-request} accept tcp dport { 1234, 5678} log accept drop } chain forward { type filter hook forward priority 0; drop } chain output { type filter hook output priority 0; } } 也就是刚才我们设定在/etc/nftables/4中的规则, 这样就成功了。 那麽来检查看看试试看ipv6的规则, 下了nft list table ip6 filter指令, 将会看到: table ip6 filter { chain input { type filter hook input priority 0; ct state established accept drop } chain forward { type filter hook forward priority 0; drop } chain output { type filter hook output priority 0; } } 这也就是我们在/etc/nftables/6档案中所设定的ipv6规则, 如此一来就证明我们的开机自动规则载入设定成功! 4.3 新增/移除/重新载入规则 当需要调整规则时, 不管是新增/移除/调整前後规则并且重新载入, nftables都可以顺利的进行, 不过由於nftables本身不会判断重复设定的规则, 故若是由设定档中载入nftables的规则, 势必需要先进行flush规则的动作, 再次进行载入规则, 以本次测试电脑的ipv4来说, 先行更动/etc/nftables/4中的档案, 再来执行/usr/sbin/nft flush table ip filter, 最後执行/etc/nftables/4, 如此依来才可以让nftables更新规则时不会重复载入相同的规则, 不过由於这样指令太长, 对打字速度慢或是懒的打很多字的使用者并不吃香, 若您们与笔者一样为lazy guy, 可以学笔者将flush的指令与载入规则的指令, 写於/usr/local/sbin中, 如此一来只要打简短几个字, 就可以一次进行flush与载入规则的动作! 在/usr/local/sbin中, 我们建立一个ipv4使用的档案假设叫作4reload好了, 并在4reload中加入下列指令: #!/bin/sh /usr/sbin/nft flush table ip filter;/etc/nftables/4 另外也可以建立一个ipv6使用的档案假设叫作6reload, 在6reload中加入下列指令: #!/bin/sh /usr/sbin/nft flush table ip6 filter;/etc/nftables/6 并将此两档案权限设为700, 如此一来只要打上4reload这几个字, 就可以让nftables重新载入/etc/nftables/4中新设定好的ipv4规则。 而同样的若打上6reload这几个字, 就可以让nftables重新载入/etc/nftables/6中新设定好的ipv6规则。 nftables的规则载入运作在Debian Jessie就是这麽简单! 若要测试NAT等所需的规则设定, 也可以用同样的方式以此类推来进行自动载入。 若想要在不同的网路使用场所使用不同的nftables规则, 亦可进行不同场所所需的nftables规则, 当把电脑带到不同的地方, 就可以立刻载入不同设定的rules档案, 如此一来就可以方便的依照不同的使用环境切换规则设定。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.29.198
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Linux/M.1405376916.A.A87.html ※ 编辑: Debian (118.160.29.198), 07/15/2014 06:48:53
1F:推 wyvernlee:赞! 07/15 11:57
2F:推 drm343:我自己是透过切换设定档的方式来改变防火墙规则 07/15 15:41
3F:推 SuperTaco: 好文推 11/20 11:10







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP