IPTABLES <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Iptables
基础,规则、链、表
规则:就是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别定义了源地址、目的地址、传输协议(如
TCP,UDP,ICMP
)和服务类型
(HTTP,FTP,SMTP)
等,当数据包与规则匹配时,
iptables
就根据规则所定义的方法来处理这些数据包,如放行
(accept),
拒绝
(reject),
和丢弃
(drop)
等。配置防火墙主要工作就是添加,修改和删除这些规则。
链:链(
CHAINS
)是数据包传播的途径,每一条链其实就是众多规则中的一个检查清单,每一条链可以有一条或数条规则。当一个数据包到达一条链时,
iptables
就从链中第一条规则开始检查,看该数据包是否满足规则定义的条件。如果满足,系统就会根据这条规则所定义的方法处理该数据包;否则
iptables
将继续检查下一条规则,如果该数据包不符合链中任一条规则,
iptables
将会按照默认策略来处理数据包。
表:表(
tables
)提供了特定的功能,
iptables
内建了
3
个表,即
filter
表、
nat
表、和
mangle
表。分别用于实现包过滤,网络地址转换和包重构的功能
1.
Filter
表
Filter
表主要是用于过滤数据包,是
iptables
的默认表,包含了
INPUT
链(用于处理进入的数据包),
FORWORD
链(处理转发的数据包),
OUTPUT
链(处理本地生成的数据包)。在
filter
表中只允许对数据包进行接受、丢弃操作,而无法对数据包进行修改。
2.
Nat
表
Nat
表主要用于网络地址转换,可以实现一对一,一对多,多对多等
NAT
工作,包含了
PREROUTING
链(修改即将到来的数据包),
OUTPUT
链(修改路由之前本地生成的数据包)和
POSTROUTING
(修改即将出去的数据包)。
3.
Mangle
表
Mangle
表主要用于对指定包进行修改,如
TTL,TOS
等。用的很少。
IPTABLES
传输数据包的过程
![](https://i-blog.csdnimg.cn/blog_migrate/efff9455972a1cf97ae7ca84d95132ed.jpeg)
1、
当一个数据包进入网卡时,他首先进入
PREROUTING
链,内核根据数据包目的
IP
判断是否需要转发出去。
2、
如果数据包是进入本机的,就会向下到
INPUT
链。数据包到达
INPUT
链后,任何进程都会接受。本机上运行的程序也可以发出数据包,这些数据包会经过
OUTPUT
链,然后到达
POSTROUTING
链输出。
3、
如果数据包是要转发出去的,且内核允许,数据包就会经过
FORWARD
链,然后到
POSTROUTING
链输出。
用户可以在各个链定义规则。
Iptables
命令格式:
iptables [-t
表
] –
命令
匹配
动作
1、
表选项:
filter
表,
nat
表和
mangle
表
2、
命令选项,用于指定执行方式,包括插入规则、删除规则、添加规则等。
-P
或者
—policy
定义默认策略
-L
或者
--list
查看
iptables
规则列表
-A
或者
--append
在规则列表最后面添加
1
条规则
-I
或者
--insert
在指定位置插入
1
条规则
-D
或者
--delete
从规则列表中删除
1
条规则
-R
或者
--replace
替换规则列表中的某条规则
-F
或者
--flush
删除表中所有规则
-Z
或者
--zero
将表中数据包计数器和流量计数器清零
3
、匹配选项,匹配指定数据包与规则匹配所具有的特征,包括源地址、目的地址、传输协议和端口号
-i
或者
—in-interface <
网络接口名称
>
指定数据包从哪个网络接口进入,如
ppp0,eth0
-o
或者
—out-interface <
网络接口名称
>
指定数据包从哪个网络接口流出
-p
或者
—proto <
协议类型
>
指定数据包匹配的协议
tcp,udp,icmp
等
-s
或者
—source <
源地址或子网
>
指定数据包匹配的源地址
--sport <
源端口号
>
指定数据包匹配的源端口号
-d
或者
—destination <
目的地址或者子网
>
--dport <
目标端口号
>
4
、动作选项,指定当数据包与规则匹配时,应该做什么操作,如接口,丢弃等
ACCEPT
接受数据包
DROP
丢弃数据包
REDIRECT
将数据包重新转向到本机或另外一台主机的某个端口
SNAT
源地址转换
DNAT
目的地址转换
MASQUERADE IP
伪装,即
NAT
技术
LOG
日至功能,将符合规则的数据包的相关信息记录在日至中
Iptables
的使用
1、
定义默认策略
iptables [-t
表名
] <-P> <
链名
> <
动作
>
例如:
iptables –P INPUT ACCEPT
定义
filter
表
INPUT
链默认策略接受所有数据包
iptables –t nat –P OUTPUT DROP
将
nat
表
OUTPUT
链默认策率丢弃所有数据包
技巧,定义默认规则拒绝所有
iptables –P INPUT DROP
iptables –P FORWARD DROP
iptables –P OUTPUT ACCEPT
2、
查看
iptables
规则
iptables [-t
表名
] <-L> [
链名
]
例如查看
nat
表所有链的规则列表
Iptables –t nat –L
3、
增加、插入、删除和替换规则
Iptables [-t
表名
] <-A
或
I
或
D
或
R>
链名
[
规则编号
] [-i
或
o
网卡名称
] [-p
协议类型
] [-s
源地址或子网
] [--sport
源端口号
] [-d
目的
IP
地址或子网
] [--dport
目的端口号
] <-j
动作
>
例如为
filter
表
INPUT
链添加
1
条规则
iptables –t filter –A INPUT –s 192.168.1.200 –j DROP
例如在
filter
表
INPUT
链规则列表中第
2
条规则前插入
1
条规则
iptables –t filter –I INPUT 2 –s 192.168.2.0/24 –p tcp –dport 80 –j DROP
例如删除
filter
表
INPUT
链规则列表中第
3
条规则
iptables –t filter –D INPUT 3
使用
iptables
实现
NAT
首先要开启内核路由功能:
echo “<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1”> /proc/sys/net/ipv4/ip_forward
然后实现
IP
伪装,在
nat
表中的
POSTROUTING
链加入一条规则,这条规则是将所有由
ppp0
口送出的包伪装。
iptables –t nat –A POSTROUTING –o PPP0 –j MASQUERADE
查看规则虽然可以用iptables -L 来查看,但是信息并不完全,所以还是用cat /etc/sysconfig/iptables 来查看
注意:每次添加或者删除规则后,要service iptables save 来保存,否则iptables服务重新启动后,规则会丢失
转载于:https://blog.51cto.com/6509e/124312