iptables相关命令
2014-03-20 10:30
330 查看
INPUT/OUTPUT/FORWARD只用于-t filter
INPUT 如果包的目标就是本机,则包直接进入INPUT链,再被本地正在等待该包的进程接
OUTPUT 两类包走OUTPUT,一类是INPUT入的包,一类是主机本身产生的包
FORWARD 如果包的目标不是本机,而是穿过本机的包,则进入FORWARD链,FORWARD既不走INPUT,也不走OUTPUT
POSTROUTING/PREROUTING只用于-t
nat
PREROUTING 进入路由之前进行,最先进行,DNAT
POSTROUTING 进入路由之后进行,最后进行,SNAT
SNAT是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址,可能有人觉得奇怪,好好的为什么要进行ip地址转换啊,为了弄懂这个问题,我们要看一下局域网用户上公网的原理,假设内网主机A(192.168.2.8)要和外网主机B(61.132.62.131)通信,A向B发出IP数据包,如果没有SNAT对A主机进行源地址转换,A与B主机的通讯会不正常中断,因为当路由器将内网的数据包发到公网IP后,公网IP会给你的私网IP回数据包,这时,公网IP根本就无法知道你的私网IP应该如何走了。所以问它上一级路由器,当然这是肯定的,因为从公网上根本就无法看到私网IP,因此你无法给他通信。为了实现数据包的正确发送及返回,网关必须将A的址转换为一个合法的公网地址,同时为了以后B主机能将数据包发送给A,这个合法的公网地址必须是网关的外网地址,如果是其它公网地址的话,B会把数据包发送到其它网关,而不是A主机所在的网关,A将收不到B发过来的数据包,所以内网主机要上公网就必须要有合法的公网地址,而得到这个地址的方法就是让网关进行SNAT(源地址转换),将内网地址转换成公网址(一般是网关的外部地址),所以大家经常会看到为了让内网用户上公网,我们必须在routeros的firewall中设置snat,俗称IP地址欺骗或伪装(masquerade)。
DNAT 的全称为Destination Network Address Translation目的地址转换,常用于防火墙中。
DNAT:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。通常来说,合法地址的数量比起本地内部的地址数量来要少得多。RFC1918中的地址保留可以用地址重叠的方式来达到。当一个内部主机第一次放出的数据包通过防火墙时,动态NAT的实现方式与静态NAT相同,然后这次NAT就以表的形式保留在防火墙中。除非由于某种个原因会引起这次NAT的结束,否则这次NAT就一直保留在防火墙中。引起NAT结束最常见的原因就是发出连接的主机在预定的时间内一直没有响应,这时空闲计时器就会从表中删除该主机的NAT。
如何区分SNAT 和 DNAT?
从定义来讲它们一个是源地址转换,一个是目标地址转换。都是地址转换的功能,将私有地址转换为公网地址。
要区分这两个功能可以简单的由连接发起者是谁来区分:
内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。
在配置防火墙或者路由acl策略时要注意这两个NAT一定不能混淆。
INPUT里是否包括FORWARD的,还是只针对以防火墙为目标的
?
INPUT不包括FORWARD
就是针对防火墙为目标的
INPUT是否是缺省?因为有的iptables
-A条目没有INPUT/OUTPUT/FORWARD,如iptables -L?
no,没有,则代表所有,INPUT/OUTPUT/FORWARD/POSTROUTING/PREROUTING
比如iptables –F,表示刷新-t filter 的INPUT/OUTPUT/FORWARD
FOWARD是基于两个接口的,不象INPUT,OUTPUT都是基于单一接口的
为什么没有eth1的两条?
因为FORWARD不是基于接口的,或者说他是基于两个接口的
FORWARD -o eth0 ACCEPT就已经包括从其他任意接口(eth1)入的了
FORWARD -i eth0 ACCEPT就已经包括从其他任意接口(eth1)出的了
或者说,以后建议FORWARD都尽量用-i
–o 双接口参数
====================================match====================================
-s,
--src, --source,匹配数据包的源地址
-d,
--dst, –destination匹配数据包的目的地址
匹配一段地址range(又无法用掩码表示的)
[!]--src-range ip-ip
[!]--dst-range ip-ip
-i,
--in-interface 匹配包的入口
-i只适用于INPUT、FORWARD、PREROUTING链中,而用在OUTPUT
POSTROUTING都会出错。
-i eth+:可以用通配符,表示匹配从所有的以太接口进入的数据包
可以用去反符号“!”来标示”除了”被列出的接口的所有接口。
-o,
--out-interface 匹配包的出口
-o
适用于OUTPUT、FORWARD,POSTROUTING,而用来INPUT,PREROUTING会出错
-i
-o 同时匹配入口和出口的,只有非NAT的FORWARD链
#iptables –A FORWORD –i eth0 –o eth1 –p tcp –j ACCEPT
凡是从eth0接口进入,从eth1接口流出的tcp数据流被允许通过
-p,
--protocol [!] protocol两种方式
-p name, 可以是tcp, udp, icmp, or all
-p all
-p 数字 ,必须符合RFC1340(/etc/protocol)
-p
tcp --sport,-p tcp --source-port
-p
tcp --dport,-p tcp --destination-port
注意--sport,--dport可以单个端口,可以连续端口,但不支持逗号枚举端口,逗号枚举必须加-m
multiport参数
--ports用于源、目的端口相同时
-p
tcp下的子参数—tcp-flags --syn
[!] –syn
It
is equivalent to --tcp-flags SYN,RST,ACK SYN.
主要用于匹配和连接有关的数据包
-p
icmp --icmp-type ...
icmp-type类型的指定可以取数字或名字:
数字 数字在RFC792中有定义
name name 可以用iptables --p icmp --help 查看
对PING的处理
接口echo-reply,
echo request
INPUT 如果包的目标就是本机,则包直接进入INPUT链,再被本地正在等待该包的进程接
OUTPUT 两类包走OUTPUT,一类是INPUT入的包,一类是主机本身产生的包
FORWARD 如果包的目标不是本机,而是穿过本机的包,则进入FORWARD链,FORWARD既不走INPUT,也不走OUTPUT
POSTROUTING/PREROUTING只用于-t
nat
PREROUTING 进入路由之前进行,最先进行,DNAT
POSTROUTING 进入路由之后进行,最后进行,SNAT
iptables –t nat –A POSTROUTING –s 192.168.1.0 –j SNAT --to-source 219.142.217.161 |
DNAT 的全称为Destination Network Address Translation目的地址转换,常用于防火墙中。
DNAT:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。通常来说,合法地址的数量比起本地内部的地址数量来要少得多。RFC1918中的地址保留可以用地址重叠的方式来达到。当一个内部主机第一次放出的数据包通过防火墙时,动态NAT的实现方式与静态NAT相同,然后这次NAT就以表的形式保留在防火墙中。除非由于某种个原因会引起这次NAT的结束,否则这次NAT就一直保留在防火墙中。引起NAT结束最常见的原因就是发出连接的主机在预定的时间内一直没有响应,这时空闲计时器就会从表中删除该主机的NAT。
如何区分SNAT 和 DNAT?
从定义来讲它们一个是源地址转换,一个是目标地址转换。都是地址转换的功能,将私有地址转换为公网地址。
要区分这两个功能可以简单的由连接发起者是谁来区分:
内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。
在配置防火墙或者路由acl策略时要注意这两个NAT一定不能混淆。
INPUT里是否包括FORWARD的,还是只针对以防火墙为目标的
?
INPUT不包括FORWARD
就是针对防火墙为目标的
INPUT是否是缺省?因为有的iptables
-A条目没有INPUT/OUTPUT/FORWARD,如iptables -L?
no,没有,则代表所有,INPUT/OUTPUT/FORWARD/POSTROUTING/PREROUTING
比如iptables –F,表示刷新-t filter 的INPUT/OUTPUT/FORWARD
FOWARD是基于两个接口的,不象INPUT,OUTPUT都是基于单一接口的
/sbin/iptables -P FORWARD DROP /sbin/iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -o eth0 -p all -j ACCEPT |
/sbin/iptables -A FORWARD -i eth1 -p all -j ACCEPT /sbin/iptables -A FORWARD -o eth1 -p all -j ACCEPT |
FORWARD -o eth0 ACCEPT就已经包括从其他任意接口(eth1)入的了
FORWARD -i eth0 ACCEPT就已经包括从其他任意接口(eth1)出的了
或者说,以后建议FORWARD都尽量用-i
–o 双接口参数
/sbin/iptables -A FORWARD -i eth0 –o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -i eth1 -o eth0 -p all -j ACCEPT |
-s,
--src, --source,匹配数据包的源地址
-d,
--dst, –destination匹配数据包的目的地址
-s 192.168.1.1 但还是建议都写成网络形式192.168.1.1/32 | 单个地址形式 |
-s 192.168.1.0/24 -s 192.168.1.0/255.255.255.0 | 网络形式 (正掩码) |
-s all -s 0.0.0.0/0 | 所有地址 缺省就是-s all 即条目中没有-s,就表示所有地址 |
[!]--src-range ip-ip
[!]--dst-range ip-ip
-i,
--in-interface 匹配包的入口
-i只适用于INPUT、FORWARD、PREROUTING链中,而用在OUTPUT
POSTROUTING都会出错。
-i eth+:可以用通配符,表示匹配从所有的以太接口进入的数据包
可以用去反符号“!”来标示”除了”被列出的接口的所有接口。
-o,
--out-interface 匹配包的出口
-o
适用于OUTPUT、FORWARD,POSTROUTING,而用来INPUT,PREROUTING会出错
-i
-o 同时匹配入口和出口的,只有非NAT的FORWARD链
#iptables –A FORWORD –i eth0 –o eth1 –p tcp –j ACCEPT
凡是从eth0接口进入,从eth1接口流出的tcp数据流被允许通过
-p,
--protocol [!] protocol两种方式
-p name, 可以是tcp, udp, icmp, or all
-p all
-p all只表示tcp、udp、icmp这三种协议,而不包括RFC1340(/etc/protocol)中的所有协议。其他协议,要用数字 缺省是-p all,即:不写-p时, 相当于-p all,相当于tcp,udp,icmp |
-A INPUT -p 50 -j ACCEPT -A INPUT -p 51 -j ACCEPT -p 0相当于-p all |
tcp --sport,-p tcp --source-port
-p
tcp --dport,-p tcp --destination-port
缺省(无--sport),表示匹配所有端口 | |
--sport 135 | 单端口 |
--sport TELNET | 单个服务名,服务名必须在/etc/services 文件中进行标注 |
--sport 135:139 | 连续端口 匹配源端口从135到139 |
--sport 1024: | 匹配源端口从1024到65535 |
--sport !1032 | 表示除了该端口以为的其他所有端口 |
--sport,--dport不支持逗号枚举端口 |
multiport参数
-p tcp -m multiport --sport/--dport |
iptables -A FORWARD –i eth0 –p tcp –m multiport --dports 25,80,110,443,1863 –j ACCEPT |
-p
tcp下的子参数—tcp-flags --syn
-p tcp --tcp-flags [!] flag |
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN |
It
is equivalent to --tcp-flags SYN,RST,ACK SYN.
主要用于匹配和连接有关的数据包
-p
icmp --icmp-type ...
icmp-type类型的指定可以取数字或名字:
数字 数字在RFC792中有定义
icmp echo-reply -p icmp –icmp-type:0 icmp echo-request -p icmp –icmp-type:8 |
[root@demo1 ~]# /sbin/iptables -p icmp -h iptables v1.2.11 ICMP v1.2.11 options: --icmp-type [!] typename match icmp type (or numeric type or type/code) Valid ICMP Types: any echo-reply (pong) destination-unreachable network-unreachable host-unreachable protocol-unreachable port-unreachable fragmentation-needed network-unknown host-unknown network-prohibited host-prohibited TOS-network-unreachable TOS-host-unreachable communication-prohibited host-precedence-violation precedence-cutoff source-quench redirect network-redirect host-redirect TOS-network-redirect TOS-host-redirect echo-request (ping) router-advertisement router-solicitation time-exceeded (ttl-exceeded) ttl-zero-during-transit ttl-zero-during-reassembly parameter-problem ip-header-bad required-option-missing timestamp-request timestamp-reply address-mask-request address-mask-reply |
接口echo-reply,
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 这是FW对外PING包的回包 |
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/second --limit-burst 10 -j ACCEPT iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT 对icmp echo-request限制,防止ping flood,也可以直接对所有icmp包限制 |
相关文章推荐
- iptables防火墙相关命令
- 实例解析Linux下iptables的相关配置与命令使用技巧
- Linux网络相关命令firewalld和netfilter、iptables 使用(6/22)
- 关掉Iptables防火墙的相关的命令
- iptables防火墙相关命令
- Linux iptables 防火墙相关命令介绍及使用
- linux操作系统的压缩和打包方式及相关命令
- Ubuntu软件安装与删除相关命令
- linux命令2(交差,grep,awk相关)
- Centos7 防火墙相关命令
- 参数化命令相关知识点之==================防止SQl的注入
- 十八. 和系统运行状况相关的Shell命令:
- iptables常用命令及应用
- Git分支相关命令
- Linux环境下Tomcat相关命令
- Linux日志相关命令详解
- osx 库相关的常用命令
- centos7下使用iptables命令
- linux下tomcat服务的相关命令
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]