首页 > 其他分享 >nftables了解使用

nftables了解使用

时间:2024-01-29 14:36:50浏览次数:26  
标签:使用 了解 filter add nftables inet 规则 nft

使用nftables进行包管理和实现防火墙功能涉及以下几个基本步骤:

  1. 安装 nftables: 在大多数现代Linux发行版中,nftables通常已经作为标准软件包包含在内。如果未安装,可以通过包管理器(如apt、yum或dnf)来安装它。
   # 对于基于Debian的系统:
   sudo apt-get install nftables

   # 对于基于RPM的系统:
   sudo yum install nftables  # 或者在较新版本中使用 dnf
  1. 理解nftables的基础概念:

表(Tables):nftables中有四种类型的表,包括inet(处理IPv4和IPv6)、ip(仅处理IPv4)、arp和bridge。
链(Chains):每个表中可以有多个链,例如input、output和forward链。
规则(Rules):链中包含具体的规则,用于定义对数据包的操作,规则包含匹配条件和相应的动作。
集(Sets):可选的数据结构,用于存储一组地址或其他对象,并在规则中引用。
创建基础规则集: 允许所有出站流量并丢弃所有入站流量的简单示例:

   # 创建一个名为 filter 的 inet 表,这是默认使用的表
   nft add table inet filter

   # 在 filter 表中添加 INPUT 链并设置默认策略为 DROP
   nft add chain inet filter input { type filter hook input priority 0 ; policy drop; }
   
   # 添加 OUTPUT 链并设置默认策略为 ACCEPT
   nft add chain inet filter output { type filter hook output priority 0 ; policy accept; }

   # 如果要允许 SSH 访问(假设是端口22),可以添加以下规则到INPUT链
   nft add rule inet filter input tcp dport ssh accept
  1. 配置具体规则: 根据需要创建更复杂的规则,比如允许特定来源访问特定端口,或者进行网络地址转换等操作。

  2. 查看当前规则集: 使用 nft list ruleset 命令查看已配置的所有规则。

  3. 保存规则: nftables的规则变更在运行时生效,但重启后可能丢失。为了持久化规则,你需要将它们写入到系统的配置文件中,通常是 /etc/nftables.conf,并在启动脚本中调用 nft 命令加载这些规则。

  4. 复杂规则示例: 更复杂的规则可以包含多种匹配条件,如协议类型、源/目的IP、端口号、状态标志等,以及对应的动作,如accept、drop、log等。

# 允许来自特定网络段的HTTP访问
nft add rule inet filter input ip saddr 192.0.2.0/24 tcp dport http accept

# 拒绝所有ICMP请求
nft add rule inet filter input icmp type echo-request reject with icmpx type admin-prohibited

标签:使用,了解,filter,add,nftables,inet,规则,nft
From: https://www.cnblogs.com/cuifujian/p/17994437

相关文章

  • 微服务网关使用
    一、网关常用网关gateway,zuul等。gateway和spring-cloud兼容的更好,约占70%的市场。二、基本使用1、导入gateway网关依赖<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>......
  • 如何使用云函数
    1.新建云函数 2.取好云函数的名字【video】后,即在目录下创建如下图文件 3.在index.js中编写云函数内容 4.写好云函数之后,上传并部署 5.在小程序中调用 完成......
  • Websocket 简单使用
    vue3  <scriptsetup>import{reactive,ref,onMounted,onBeforeMount,onUnmounted}from'vue'onMounted(()=>{initWebsocket()})onUnmounted(()=>{WebSocketonclose()})constws=reactive({socket:null,})constini......
  • tar中的参数 cvf,xvf,cvzf,zxvf的使用
    tar中的参数cvf,xvf,cvzf,zxvf的使用:https://blog.csdn.net/adminsheery/article/details/127491059?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170650878916800182140677%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=1706508......
  • 云打印app怎么下载,云打印app怎么使用?
    随着云技术的飞速发展,现在云打印也已经普及到众多用户之间。很多有打印需求的朋友都需要用到云打印服务,很多小伙伴也在咨询云打印app,那么今天小易就带大家来了解一下,云打印app怎么下载,云打印app怎么使用? 云打印app怎么下载?很多想要使用云打印服务的用户都想下载云打印app,那......
  • git tag的使用
    一什么是tag: tag是用来备份某次提交的,比如版本1上线前的最后一次在develop分支上的提交为commitX,将commitX打成tag,tag名为v1.0,后续版本迭代中继续在develop分支上开发,版本2最后一次提交为commitN,就将commitN打成tagv2.0,可以用tag来备份每次版本的发布.如果需要回退之......
  • AirNet使用笔记10(组播测试)
    1、修改MSDP2的主机名,IP改为不同网段,加路由测试SMC:/home/cdatc/AirNet/config/network.xml<nodehostname="msdp2"showname="msdp2"position="ACC"logic_position="ACC"stationno="4"bakenode="3"grouptype=&quo......
  • 在Python中,你可以使用以下代码来更改ttk.Combobox下拉框选项的文字大小¹: ```python
    在Python中,你可以使用以下代码来更改ttk.Combobox下拉框选项的文字大小¹:```pythonimporttkinterastkfromtkinterimportttkroot=tk.Tk()root.geometry('500x500')#设置所有Combobox的下拉框文字大小root.option_add("*TCombobox*Listbox.font","Arial20")combob......
  • 使用Golang编写Windows服务
    主要是使用”github.com/kardianos/service“这个库它已经处理好了与服务管理器的交互细节,并且自带服务安装、卸载、启动、停止等功能,非常齐全了。直接上完整代码:packagemainimport( "log" "os" "syscall" "time" "unsafe" "github.com/kardianos/service")......
  • pinia的使用
    Pinia和Vuex区别大致总结:支持选项式api和组合式api写法pinia没有mutations,只有:state、getters、actionspinia分模块不需要modules(之前vuex分模块需要modules)TypeScript支持很好自动化代码拆分pinia体积更小(性能更好)如何使用Pinia一、安装使用Pinia1.1安装下载//pinia......