嵌入式Linux可用的防火墙——iptables:实现ip白名单、mac地址白名单
iptables是linux系统下的一个功能强大的模块,不仅可以用作防火墙,还可以实现NAT等众多路由功能。iptables的容器有很清晰的层次关系:
1. iptables是表的容器,iptables包含表(4张表)
2. 表是链的容器,每个表都包含若干个链
3. 链是规则的容器,真正的过滤规则是属于链里面的
iptables是采用数据包过滤机制工作的,它会对请求的数据包的包头数据进行分析,并根据预先设定的规则来进行匹配,决定是否可以进入主机,流程如下:

从上图不难看出,防火墙是一层层过滤的,按照配置规则的顺序从上到下,从前到后进行过滤。如果匹配上规则,即明确了是阻止还是通过,此时数据包就不再往下匹配新规则了。否则一直向下匹配,直到匹配到默认规则,得到明确的阻止或通过;防火墙的默认规则是对应链的所有规则执行完后才会执行的。
iptables根据功能和表的定义划分包含三个表,filter,nat,mangle,其每个表又包含不同的操作链(Chains)。要使用iptables实现ip白名单、mac地址白名单,只需使用filter表。filter表包含的操作链有三个:INPUT、FORWARD、OUTPUT:
1.INPUT负责过滤所有目标地址是本机地址的数据包,即进入主机的数据包
2.FORWARD负责转发流经主机的数据包
3.OUTPUT负责处理所有源地址是本机地址的数据包,即主机发出的数据包
防火墙功能主要设定INPUT链的规则。首先加载如下模块到Linux内核:
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack 连接跟踪
modprobe ip_conntrack_ftp 连接跟踪
modprobe ip_nat_ftp
modprobe ipt_state
iptables的语法如下:
iptables -P INPUT DROP
iptables [-A/-I num] INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT -A: 添加规则到指定链的结尾,最后一条
-I num: 添加规则到指定链的指定行,num默认为1,即添加到第一条
-t: 指定表,不指定默认为filter
-p: 指定协议(all,tcp,udp,icmp),默认为all
--dport: 指定端口
-j: 处理的行为, ACCEPT, DROP, REJECT(最好使用drop而非reject,因为'拒绝'会返回给用户信息)
-P: 设置默认策略
-s: 匹配来源地址IP/MASK
-i: 接网卡名称,匹配从这块网卡流入的数据
-o: 接网卡名称,匹配从这块网卡流出的数据
#setting for loopback interface
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT -m mac --mac-source XX:XX:XX:XX:XX:XX
-m state --state NEW/ESTABLISHED/RELATED/INVALID //可以用,连接多个
可以看到,实例的第二句即是将某个MAC地址加入白名单中。第一句则是将INPUT的默认规则设为DROP,以屏蔽来自其它MAC消息。若要删除规则,可使用以下方法:
iptables -F //清除所有规则
iptables -D INPUT -p tcp --dport 8080 -j DROP(删除指定链中匹配的规则)
/etc/init.d/iptables restart (用iptables命令行配置的命令都是临时生效)
iptables -D INPUT 规则序号
嵌入式Linux可用的防火墙——iptables:实现ip白名单、mac地址白名单的更多相关文章
- 嵌入式linux的网络编程(1)--TCP/IP协议概述
嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...
- java 通过ip获取客户端mac地址
java 通过ip获取客户端mac地址 package com.asppro.util; import java.io.BufferedReader; import java.io.IOExcepti ...
- Linux基础命令---防火墙iptables
iptables iptables指令用来设置Linux内核的ip过滤规则以及管理nat功能.iptables用于在Linux内核中设置.维护和检查IPv4数据包过滤规则表.可以定义几个不同的表.每个 ...
- linux平台下防火墙iptables原理(转)
原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html iptables简介 netfilter/iptables( ...
- linux平台下防火墙iptables原理
iptables简单介绍 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它能够取代昂贵的商业 ...
- [记]WIndow/Linux 获取本机(全部)IPv4、IPv6、MAC地址方法 (C/C++)
Linux 获取本机IP.MAC地址用法大全 //#include <sys/types.h> #include <ifaddrs.h> #include <sys/io ...
- 查询 ip占用导致ip不通的 问题 查IP对应的mac地址
IP冲突, 同一个IP配到了多余1台的机器上 ,导致IP 不通的情况,此时需要查询 都有哪台机器配置了这个IP,用 arping 命令, 具体命令 类似于 ping ,直接 arping + 目标地 ...
- linux下的防火墙iptables
防火墙(firewall),也称为防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网.它是一项信息安全的防护系统,依照特定的规则,允许或者是限制传输的数据通过. ...
- Linux中的防火墙----iptables
防火墙,它是一种位于内部网络与外部网络之间的网络安全系统.一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过. 防火墙根据主要的功能可分为网络层防火墙.应用层防火墙.数据库防火墙. 网 ...
随机推荐
- IT面试最全逻辑题,收藏后成功率提高10%
这是小学二年级的数学题: 猫妈妈钓到一些鱼,平均分给了7只小猫,每只小猫分到的鱼和剩下的鱼刚好一样多.猫妈妈最多钓到了多少条鱼? 这个是出来工作后的现场面试题: [1]假设有一个池塘,里面有无穷多的水 ...
- ESP32-mqtt笔记
基于ESP-IDF4.1 #include <stdio.h> #include <stdint.h> #include <stddef.h> #include & ...
- 7.Java数组
一.数组概念(最简单的数据结构) 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问 ...
- 动态路由协议、RIP
动态路由协议.RIP 一.动态路由协议 1)动态路由协议概述 2)度量值 3)收敛 4)静态路由与动态路由的比较 5)动 ...
- c语言:scanf()高级应用
1) 指定读取长度 还记得在 printf() 中可以指定最小输出宽度吗?就是在格式控制符的中间加上一个数字,例如,%10d表示输出的整数至少占用 10 个字符的位置: 如果整数的宽度不足 10,那么 ...
- VisualEffectGraph基础操作 --创建VEG项目步骤讲解
一:建立VEG项目步骤 首先打开Unity Hub, 使用unity2020.1 新建项目(本技术博客,默认使用unity2020.1 版本演示),选择HDRP 高清渲染管线,确定项目目录与名称. ...
- 家庭账本开发day08
对查询到额数据进行相关的操作,删除.对删除按钮绑定事件 点击后发送ajax请求到servlet,删除相关的数据后,返回flag到前端 若后台删除成功,则前台进行相应的.close():输出点击行的数据 ...
- 初探SpringRetry机制
重试是在网络通讯中非常重要的概念,尤其是在微服务体系内重试显得格外重要.常见的场景是当遇到网络抖动造成的请求失败时,可以按照业务的补偿需求来制定重试策略.Spring框架提供了SpringRetry能 ...
- deepin修改数据源升级到deepin15.11桌面版
参考:https://blog.csdn.net/baidu_41751590/article/details/89064220 1,我修改数据源地址: 换成上海交通大学源地址: http://ftp ...
- go反射原理
go反射原理 本文基于go1.13.15 1.go汇编 1.1 基本语法 go采用plan9的汇编器完成汇编,有下面几个重要的伪寄存器 FP: Frame pointer: 局部变量访问 PC: Pr ...