#数据包传输
以本地为目标
----------------------------------------------------------------------------------------------------
Step Table Chain Comment
1 在线路上传输(比如,Internet)
2 进入接口 (比如, eth0)
3 mangle PREROUTING 这个链用来mangle数据包,比如改变TOS等
4 nat PREROUTING 这个链主要用来做DNAT。不要在这个链做过虑操作,
因为某 些情况下包会溜过去。
5 路由判断,比如,包是发往本地的,还是要转发的。
6 mangle INPUT 在路由之后,被送往本地程序之前,mangle数据包。
7 filter INPUT 所有以本地为目的的包都要经过这个链,
不管它们从哪儿来,对这些包的过滤条件就设在这里。
8 到达本地程序了(比如,服务程序或客户程序)
------------------------------------------------------------------------------------------------------
以本地为源的包
------------------------------------------------------------------------------------------------------
Step Table Chain Comment
1 本地程序(比如,服务程序或客户程序)
2 路由判断,要使用源地址,外出接口,还有其他一些信息。
3 mangle OUTPUT 在这儿可以mangle包。建议不要在这儿做过滤,可能有副作用哦。
4 nat OUTPUT 这个链对从防火墙本身发出的包进行DNAT操作。
5 filter OUTPUT 对本地发出的包过滤。
6 mangle POSTROUTING 这条链主要在包DNAT之后(译者注:作者把这一次DNAT称作实际的路由,
虽然在前面有一次路由。对于本地的包,一旦它被生成,
就必须经过路由代码的处理,但这个 包具体到哪儿去,
要由NAT代码处理之后才能确定。所以把这称作实际的路由。),
离开本地之前,对包 mangle。有两种包会经过这里,
防火墙所在机子本身产生的包,还有被转发的包。
7 nat POSTROUTING 在这里做SNAT。但不要在这里做过滤,因为有副作用,
而且有些包是会溜过去的,即使你用了DROP策略。
8 离开接口
9 在线路上传输
-------------------------------------------------------------------------------------------------------
被转发的包
-------------------------------------------------------------------------------------------------------
Step Table Chain Comment
1 在线路上传输
2 进入接口(比如, eth0)
3 mangle PREROUTING mangle数据包,,比如改变TOS等。
4 nat PREROUTING 这个链主要用来做DNAT。不要在这个链做过虑操作,
因为某些情况下包会溜过去。稍后会做SNAT。
5 路由判断,比如,包是发往本地的,还是要转发的。
6 mangle FORWARD 包继续被发送至mangle表的FORWARD链,这是非常特殊的情 况才会用到的。
在这里,包被mangle(还记得mangle的意思吗)。
这次mangle发生在最初的路由判断之后, 在最后一次更改包的目的之前
(译者注:就是下面的FORWARD链所做的,因其过滤功能,
可能会改变一些包 的目的地,如丢弃包)。
7 filter FORWARD 包继续被发送至这条FORWARD链。只有需要转发的包才会走 到这里,
并且针对这些包的所有过滤也在这里进行。注意,所有要转发的包都要经过这里,
不管是外网到内 网的还是内网到外网的。在你自己书写规则时,要考虑到这一点。
8 mangle POSTROUTING 这个链也是针对一些特殊类型的包(译者注:参考第6步,
我们可以发现,在转发包时,mangle表的两个链都用在特殊的应用上)。
这一步mangle是在所有更改包的目 的地址的操作完成之后做的,但这时包还在本地上。
9 nat POSTROUTING 这个链就是用来做SNAT的,当然也包括Masquerade(伪装)。
但不要在这儿做过滤,因为某些包即使不满足条件也会通过。
10 离开接口(比如: eth0)
11 又在线路上传输了(比如,LAN)
------------------------------------------------------------------------------------------------------- #IPTABLE 语法
语法:
iptables [-t table] command [match] [target/jump] table:
nat 网络地址转换
mangle 数据包修改 改变不同的包及包头的内容,比如 TTL,TOS或MARK
filter 数据包过滤 对包进行DROP、LOG、ACCEPT和REJECT等操作 command:
-A, --append 加 例: iptables -A INPUT ...
-D, --delete 删 例: iptables -D INPUT --dport 80 -j DROP || iptables -D INPUT 1
-R, --replace 替换 例: iptables -R INPUT 1 -s 192.168.0.1 -j DROP
-I, --insert 插入 例: iptables -I INPUT 1 --dport 80 -j ACCEPT
-L, --list 列出 例: iptables -L INPUT
-F, --flush 清空 例: iptables -F INPUT
-Z, --zero 链表归零 例: iptables -Z INPUT
-N, --new-chain 建立链表 例: iptables -N allowed
-X, --delete-chain 删除链表 例: iptables -X allowed
-P, --policy 设置默认的target 例: iptables -P INPUT DROP
-E, --rename-chain 重命名链表 例: iptables -E allowed disallowed match:
-p, --protocol 匹配协议 /etc/protocols 定义 ALL 指 TCP UDP ICMP 例: iptables -A INPUT -p tcp
隐含匹配:
TCP matches
--sport, --source-port TCP包的源端口来匹配包 例: iptables -A INPUT -p tcp --sport 22 || [22:80]
--dport, --destination-port TCP包的目的端口来匹配包 例: iptables -A INPUT -p tcp --dport 22
--tcp-flags 匹配指定的TCP标记:SYN,FIN,ACK SYN
--tcp-option 根据匹配包
UDP matches
--sport, --source-port 类似TCP
--dport, --destination-port 类似TCP
ICMP matches
--icmp-type
-s, --src, --source IP源地址匹配 取反 --source ! 192.168.0.0/24 例: iptables -A INPUT -s 192.168.1.1
-d, --dst, --destination IP目的地址匹配 类似 -s
-i, --in-interface 匹配进入网卡 取反 -i ! eth0 例: iptables -A INPUT -i eth0
-o, --out-interface 匹配出去网卡 取反 -i ! eth0 例: iptables -A INPUT -i eth0
-f, --fragment 匹配一个被分片的包
-m
显式匹配:
Limit match
--limit iptables -A INPUT -m limit --limit 3/hour
--limit-burst iptables -A INPUT -m limit --limit-burst 5
MAC match
--mac-source 还只能在PREROUTING,FORWARD 和INPUT链里使用 例: iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01
Multiport match 多端口
--source-port iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110
--destination-port iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110
--port iptables -A INPUT -p tcp -m multiport --port 22,53,80,110
Owner match 包生产者匹配
--uid-owner 指定用户 例: iptables -A OUTPUT -m owner --uid-owner 500
--gid-owner 指定组
--pid-owner 指定进程
--sid-owner 会话ID
State match 包状态匹配
--state 例:iptables -A INPUT -m state --state RELATED,ESTABLISHED
TOS match TOS字段匹配
--tos 例: iptables -A INPUT -p tcp -m tos --tos 0x16
TTL match TTL值匹配
--ttl 例: iptables -A OUTPUT -m ttl --ttl 60 target/jump:
--jump 跳转到指定表 iptables -A INPUT -p tcp -j tcp_packets (前提:iptables -N tcp_packets)
ACCEPT target
-j ACCEPT 跳出以下匹配,通过IPTABLE
DNAT target
--to-destination 指定要写入IP头的地址,这也是包要被转发到的地方
例: iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10
DROP target
DROP 另一个方法 REJECT
LOG target 记录日志
--log-level 告诉iptables和 syslog使用哪个记录等级
--log-prefix 告诉iptables在记录的信息之前加 上指定的前缀
--log-tcp-sequence 把包的TCP序列号和其他日志信息一起记录下来
--log-tcp-options 记录TCP包头中的字段大小不变的选项
--log-ip-options 记录IP包头中的字段大小不变的选项
MARK target 只能在本地的mangle表
设置mark值,这个值是一个无符号的整数
MASQUERADE target
是颠倒IP头中的源目地址
QUEUE target
这个target为用户空间的程序或应用软件管理包队列
REDIRECT target
在防火墙所在的机子内部转发包或流到另一个端口 只能用在nat表的PREROUTING、OUTPUT链和被它们调用的自定义链里
--to-ports 例: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
REJECT target
REJECT和DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息
--reject-with 指定只针对某些协议返回错误 iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
RETURN target
它使包返回上一层,就是若包在子链 中遇到了RETURN,则返回父链的下一条规则继续,若在父链,被缺省的策略(一般是ACCEPT或DROP)操作
SNAT target
做源网络地址转换的,就是重写包的源IP地址,SNAT只能用在nat表的POSTROUTING链里
例: iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
TOS target
TOS是用来设置IP头中的Type of Service字段的 利用包的头部来传递路由信息,TOS是唯 一的办法
TTL target
TTL可以修改IP头中Time To Live字段的值 TTL只能在mangle表内使用
例:iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
ULOG target
ULOG可以在用户空间记录被匹配的包的信息,这些信息和整个包都会通过netlink socket被多播。
--ulog-nlgroup 指定向哪个netlink组发送包 例:iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-nlgroup 2
--ulog-prefix 使用方法和 LOG的prefix一样
--ulog-cprange 指定每个包要向“ULOG在用户空间的代理”发送的字节数 默认0 iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-cprange 100
--ulog-qthreshold 告诉ULOG在向用户空间发送数据以供记录之前 iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-qthreshold 10

数据包与IPTABLE关系的更多相关文章

  1. Linux iptables原理--数据包流向

    Iptable与Netfilter 在上一篇文章 linux iptables常用命令--配置一个生产环境的iptables 我们知道iptables有好几个表,如raw,mangle,nat,fil ...

  2. Linux内核--网络栈实现分析(七)--数据包的传递过程(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地 ...

  3. Linux内核--网络栈实现分析(二)--数据包的传递过程(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7492423 更多请看专栏,地址 ...

  4. [转]SOCKET通信中TCP、UDP数据包大小的确定

    TCP.UDP数据包大小的确定 UDP和TCP协议利用端口号实现多项应用同时发送和接收数据.数据通过源端口发送出去,通过目标端口接收.有的网络应用只能使用预留或注册的静态端口:而另外一些网络应用则可以 ...

  5. 从数据包谈如何封杀P2SP类软件

    概述 1.1背景介绍 我们经常在用户的网络中发现大量的P2P应用,占用了网络中大量的宝贵带宽资源,用户的网络管理者也知道内网中存在这些应用,也采取了一些限制措施,但是效果并不一定理想.本文试着以数据包 ...

  6. Linux数据包路由原理、Iptables/netfilter入门学习

    相关学习资料 https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html http://zh.wik ...

  7. IP报文解析及基于IP 数据包的洪水攻击

    版本(4bit) 报头长度(4bit) 优先级和服务类型(8bit) 总长度(16bit) 标识(16bit) 标志(3bit) 分段偏移(13bit) 存活期(8bit) 协议(8bit) 报头校验 ...

  8. [转]TCP、UDP数据包大小的确定

       TCP.UDP数据包大小的确定   http://blog.163.com/jianlizhao%40126/blog/static/1732511632013410101827640/   U ...

  9. Linux内核--网络栈实现分析(二)--数据包的传递过程--转

    转载地址http://blog.csdn.net/yming0221/article/details/7492423 作者:闫明 本文分析基于Linux Kernel 1.2.13 注:标题中的”(上 ...

随机推荐

  1. 分类指标准确率(Precision)和正确率(Accuracy)的区别

    http://www.cnblogs.com/fengfenggirl/p/classification_evaluate.html 一.引言 分类算法有很多,不同分类算法又用很多不同的变种.不同的分 ...

  2. magento 备份

    magento 备份分为“文件备份”和“数据备份” 我们先来讲下“数据备份” 数据备份的方法有 通过数据库软件直接导出magento使用的数据库,使用mysql命名或者phpmyadmin,导出来就好 ...

  3. OWASP WEB会话管理备忘单 阅读笔记

    https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Session_ID_Properties 会话简介 HTTP是一种无状态 ...

  4. VS2010--2013使用技巧及使用过程中遇到的问题

    Microsoft Visual Studio 2010 --2013默认情况下是不显示代码的行号的,但是在编译出错时,可点击下面输出窗口中的错误提示进行定位.但是这样操作起来你有没有感觉到不方便呢. ...

  5. 本地json文件的编辑器,node-webkit开发的exe程序

    首发:个人博客,更新&纠错&回复 在昨天的dota契合度计算器中,用到了dota英雄数据和dota玩家数据这两个数据库,为了便于网页应用使用,这两个数据库的存储格式是json,即her ...

  6. ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片

    以下介绍两种方法:1.利用WebRequest,WebResponse 类 WebRequest wreq=WebRequest.Create("http://www.xueit.com/e ...

  7. win api 实现 AES加密、解密

    WCHAR szPasswod[] = {L"goodpasswod" }; HCRYPTHASH hHash; HCRYPTPROV hCryptProv; HCRYPTKEY ...

  8. win7 64+python2.7.12安装numpy+scipy+matplotlib+scikit-learn

    python包下载网址 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 1.已经安装python2.7.12,查看scripts里是否有pip.2.7.9版本以上 ...

  9. POJ 2876 Cantoring Along

    Description The Cantor set was discovered by Georg Cantor. It is one of the simpler fractals. It is ...

  10. SourceTree 免登录跳过初始设置

    SourceTree 安装之后需要使用账号登陆以授权,以前是可以不登陆的,但是现在是强制登陆. 虽然是免费授权,但是碰上不可抗力因素,登陆不是很方便,这里记录一下跳过这个初始化的步骤. 安装之后,转到 ...