linux中IPtables的使用基本使用及相关参数介绍

2021/12/28 7:07:06

本文主要是介绍linux中IPtables的使用基本使用及相关参数介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

image

1、IPtables的使用

1、安装iptables

	 yum install iptables* -y
	 
2、启动iptables

	systemctl start iptables
	
3、关闭firewalld

	systemctl disable --now firewalld
	
补充:查看当前服务运行的状态(例:防火墙,网络管理等)

	systemctl status firewalld
	
iptables语法格式:

	iptables -t 表名 选项 链名称 条件 动作
	
	参数介绍:
	
	 1.基本参数:
	 
		-t:				 	指定操作的表(后跟表名)
		-L / --list:		列出当前防火墙的相关规则
		-v:				 	列出数据包和数据包的大小
		-n:				   不反解地址 # 例:0.0.0.0表示任意ip地址,可反解为anywhere
		# 查看当前防火墙的相关规则
		iptables -L -V -n
		
	 2.选项:选项后跟链名
		-A / --append		追加一条规则到链中(尾部)
		-I / --insert	 	插入一条规则到链中,插入至顶部
		-F / --flush		清空链中的规则
		-Z / --zero			清空计数器(包数量、包大小)
		-D / --delete		删除链中的规则
		-R / --replace		修改
		-S / --list-rules	列出所有的规则
		-N / --new-chain	创建一个自定义链
		-X / --delete-chain	删除一个自定义链
		-P / --policy		指定链的默认策略

2、iptables基本的条件匹配

条件后跟相应的协议

	参数:-p
	
        TCP(HTTP)
        
      	TCP(Transmission Control Protocol,传输控制协议)是面向连接的协	议,也就是说,在收发数据前,必须和对方建立可靠的连接。 一个TCP连接必须要	  经过三次“对话”才能建立起来,其中的过程非常复杂, 只简单的描述下这三次对		话的简单过程:

        1)主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是	第一次对话;

        2)主机B向主机A发送同意连接和要求同步 (同步就是两台主机一个在发		送,一个在接收,协调工作)的数据包 :“可以,你什么时候发?”,这是第二次	 对话;

        3)主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着		吧!”, 这是第三次对话。
        UDP
        
		UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传		送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发	送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传	  输带宽的限制; 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中	读一个消息段
        ICMP(PING)
        
        我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常, 其		实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据	包, 如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
		ping命令是用来探测主机到主机之间是否可通信,如果不能ping到某台主	机,表明不能和这台主机建立连接。ping命令是使用 IP 和网络控制信息协议 		(ICMP),因而没有涉及到任何传输协议(UDP/TCP) 和应用程序。它发送icmp回送	 请求消息给目的主机
        ALL(所有)

image

3、iptables的相关动作

	接收动作的参数:
	
		-i	:进来的网卡 (一般是网卡名,eth0/eth1)
		
		-o	: 出去的网卡	(一般是网卡名,eth0/eth1)
		
		-m	: 指定的模块	(可以借用模块从而实现我们的需求,大大减少工作量)
		
		-p	:指定协议 (接收匹配的相关条件协议)
		
		-j	: 转发动作
		
			# 相关转发动作
		
            ACCEPT		数据包放行,进行完该动作以后,将不再比对其他规则,					直接跳到下一个规则
            
            REJECT		阻拦数据包,并将数据包传给对方并通知对方
            
            DROP		丢弃包不予处理(可以理解为拒绝访问),进行完该处理					动作后,将不再比对其他规则,直接终端过滤程序
            
            REDIRECT	将包重新导向到另外一个端口,进行完该处理动作后,将					会继续比对其他规则

4、源地址、源端口、目标地址、目标端口

# 在进行网络传输的时候,涉及到两个对象,发送请求的一方,和接收请求的一方。

源地址:发送请求的地址/一方(一般遇到允许xxx访问,一般是对源地址进行限制)

	参数:-s [源地址]  # 和匹配条件相关协议连用
	
# 端口:可以认为是设备与外界通讯交流的出口

源端口:发送请求的一方的端口号

	参数:--sport [源端口号] # 和源地址连用
	
目标地址:接收请求的地址/一方(一般遇到访问xxx或者使用xxx访问时,一般是对目标		地址进行限制)

	参数:-d [目标地址] # 和匹配条件相关协议连用
	
目标端口:接收请求的一方的端口号

	参数:--dport [目标端口号] # 和目标地址连用
	

5、模块

在iptables网路传输里也存在有模块的概念

作用:扩展iptables的功能

模块:具有一系列功能的集合体

如何导入模块:-m [模块名]

1、multiport模块:连续匹配多个端口号

	--sport / --dport	:指定多个端口,不同端口之间用逗号隔开,连续端口使用冒号分割
	
2、iprange模块:指定一段连续的ip地址范围
	
	--src-range from [-to]	:源地址范围
	--dst-range from [-to]	:目标地址范围
	
3、string模块: 匹配指定字符串

	--string pattern	# 指定要匹配的字符串
	--algo {bm|kmp}		# 匹配的查询算法
	
4、time模块: 根据时间匹配报文
	
	--timestart hh:mm[:ss]		# 开始时间
	--timestop hh:mm[ss:]		# 结束时间
	--monthdays day[,day...]	# 指定一个月的某一天
	--weekdays day[,day...]		# 指定周还是周天
	
5、禁ping,默认本机无法ping别人、别人无法ping自己

	--icmp-type {type[/code]|typename}
		echo-request (8)请求
		echo-reply 	 (0)回应

6、connlimit模块:限制连接数,并发链接数
	
	--connlimit-upto n		# 如果现有链接数小于或等于n则匹配
	--connlimit-above n 	# 如果现有链接数大于n则匹配
	
7、针对报文速率进行限制。 秒、分钟、小时、天

	--limit rate [/second/minute|/hour|day]	# 报文数量
		即我们平时在基于网络传输文件时的传输速度:例:100kb/s
	--limit-burst number					# 报文数量(默认:5)

image



这篇关于linux中IPtables的使用基本使用及相关参数介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程