概述

Linux-iptables命令

Linux-SNAT和DNAT


netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。

规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。

当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。

当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。

如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。

语法

iptables(选项)(参数)

选项

-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清除规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

iptables命令选项输入顺序

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

四张表

raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
nat:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。

我们现在用的比较多个功能有3个:
1.filter 定义允许或者不允许的
2.nat 定义地址转换的
3.mangle功能:修改报文原数据

五条链

INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。

这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。

  • 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
  • 对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
  • 而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

动作

accept:接收数据包。

DROP:丢弃数据包。

REDIRECT:重定向、映射、透明代理。 与DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息。

SNAT:源地址转换,即改变数据包的源地址

DNAT:目标地址转换,即改变数据包的目的地址

MASQUERADE:IP伪装(NAT),用于ADSL。即是常说的NAT技术,MASQUERADE只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP分配动态的;如果主机的IP地址是静态固定的,就要使用SNAT

LOG:日志记录,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错

iptables命令格式

iptables过滤条件

iptables传输数据包的过程

① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

实例

清除已有iptables规则

iptables -F
iptables -X
iptables -Z

开放指定的端口

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机) 
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问 
 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口 
 iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口 
 iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口 
 iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口 
 iptables -A INPUT -j reject #禁止其他未允许的规则访问 
 iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问

屏蔽IP

iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令 iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令 iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令 iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令

项目实操

使用xshell或者secucreCRT等外部访问 10.45.7.198的2121端口,实际是访问容器192.168.123.221的22端口,可简单的理解为从外访问里。

 iptables -t nat -A PREROUTING -p tcp -d 10.45.7.198 --dport 2121-j DNAT --to-destination 192.168.123.221:22

容器的地址为172.25.243.103, 和 10.45.7.198的地址不通,但是172.25.243.103和10.45.7.197是通的,10.45.7.197和10.45.7.198是通的, 所以如果172.25.243.103想访问10.45.7.198可以加以下规则,可简单的理解为从里面访问外面

iptables -t nat -A POSTROUTING -s 172.25.243.103 -o eth0 -j SNAT --to 10.45.7.197

删除的话,将A换成D 即可,其余保持不变。


查看已添加的iptables规则

iptables -L -n -v

这好像查不到我在nat表增加的规则呢…..坑逼

 iptables -t nat -nL

iptables -L命令还可以查看nat表和mangle表的内容哦

iptables -L -t nat
cat /proc/net/ip_conntrack | less
iptables -F -t nat (清除NAT表)
iptables --list 查看过滤表 (没查到nat表中的...)

删除已添加的iptables规则

将所有iptables以序号标记显示,执行:

iptables -L -n --line-numbers 

比如要删除INPUT里序号为8的规则,执行:

iptables -D INPUT 8

查看 nat表的规则

[root@entel1 ~]# iptables -t nat -L -n --line-numbers
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    DNAT       tcp  --  0.0.0.0/0            10.45.7.197         tcp dpt:22013 to:172.25.243.13:22
2    DNAT       tcp  --  0.0.0.0/0            10.45.7.197         tcp dpt:22023 to:172.25.243.23:22
3    DNAT       tcp  --  0.0.0.0/0            10.45.7.197         tcp dpt:22033 to:172.25.243.33:22
4    DNAT       tcp  --  0.0.0.0/0            10.45.7.197         tcp dpt:22043 to:172.25.243.43:22
...........Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         Chain DOCKER (0 references)
num  target     prot opt source               destination         

详细介绍请看:
http://www.linuxso.com/linuxpeixun/10332.html

Linux-iptables命令相关推荐

  1. 全网超详细的Linux iptables命令详解以及详解iptables-save和iptables-restore命令

    文章目录 1. 文章引言 2. iptables的四表五链 2.1 何为四表 2.2 何为五链 3. iptables语法格式 4. 规则的查看与清除 5. 防火墙的备份与还原 5.1 iptable ...

  2. Linux iptables命令详解

    iptables 是 Linux 防火墙系统的重要组成部分,iptables 的主要功能是实现对网络数据包进出设备及转发的控制.当数据包需要进入设备.从设备中流出或者由该设备转发.路由时,都可以使用 ...

  3. 【Linux】一步一步学Linux——iptables命令(186)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 iptables命令是Linux上常用的防火墙软件,是ne ...

  4. linux iptables 命令简介

    语法 iptables(选项)(参数) 选项 -t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个.如果不 ...

  5. Linux防火墙与iptables命令

    Linux防火墙与iptables命令 防火墙概念 一.Firewalld与iptables简介 1.1Firewalld 1.2Firewalld.iptables 二.iptables 2.1四表 ...

  6. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  7. iptables命令_理解 Linux 下的 Netfilter/iptables

    Netfilter/iptables 项目由 Rusty Russe 创建于1998年,并于 1999 年建立了 Netfilter Core team,并在此后负责维护此项目,同时也于2000年3月 ...

  8. linux条件表达式例子,Linux的Iptables命令的基本知识(三)-常用匹配条件示例和执行动作...

    上一期给大家简单讲解了Linux的Iptables命令的常用命令示例,本期给大家讲解一下Linux的Iptables命令的基本知识-常用匹配条件示例和执行动作. 五.常用匹配条件示例: 1.-i:流出 ...

  9. (十二)洞悉linux下的Netfilteramp;iptables:iptables命令行工具源码解析【下】

    iptables用户空间和内核空间的交互 iptables目前已经支持IPv4和IPv6两个版本了,因此它在实现上也需要同时兼容这两个版本.iptables-1.4.0在这方面做了很好的设计,主要是由 ...

  10. Linux命令详解:iptables 命令

    Linux下 iptables 配置详解 一.Linux防火墙 iptables 相关知识点 1.概要 1.1 防火墙分类 1.2 iptables基础 1.3 管理和设置 iptables 规则 1 ...

最新文章

  1. iOS 数据持久化 -- Core Data (2)
  2. 表白编程代码python_python抖音表白程序源代码
  3. 测试php框架漏洞,ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...
  4. 记一次在LAMP中遇到的问题
  5. android listview 切换,Android:在ListView适配器中切换OnCheckedChangeListener
  6. java正则表达式去除空格_去掉字符串前后所有空格的正则表达式
  7. mysql 创建用户、授权、修改密码
  8. 阿里云OCR通用文字识别和自定义模板OCR识别Python代码及一站式教程
  9. 如何编辑制作并发送手机报?
  10. oracle中的with函数,关于oracle中With函数的用法
  11. Python2写csv文件中文乱码问题及解决方法详解
  12. 《绝地求生》玩家排名预--1.介绍
  13. 通信系统通信过程仿真(联合信源信道编码)
  14. 可能会有特殊的客人光顾
  15. 程序员也要懂点法律--专栏《白话法律42讲》学习总结
  16. 同济大学计算机学院徐老师,罗怡桂 - 师资队伍 - 同济大学软件学院
  17. 追星女孩彩虹屁情话合集100条 ✔︎ (二)
  18. C语言字符串头文件string.h中的strlen,strcat,strcpy,strncpy,strcmp,strlwr,strupr函数
  19. 当UI亲吻3D——浅谈手机UI发展
  20. 行为者网络理论(ANT,Actor Network Theory):一切皆是映射

热门文章

  1. caffe apt install
  2. C++虚继承下的内存模型(二)
  3. Leetcode - 230. Kth Smallest Element in a BST (BST)
  4. MoCo论文中的Algorithm 1伪代码解读
  5. 推荐系统笔记:Introduction
  6. pytorch模型的保存与加载
  7. 基于MATLAB的FFT傅立叶分析
  8. 2020年阿里大数据一面面经,看看你还有啥不知道的?
  9. 胶囊网络(Capsule)实战——keras算法练习
  10. hc05与单片机连接图_单片机科普:单片机的IO口不够用了怎么办?如何扩展单片机的IO口...