iptables 学习

来源:互联网 发布:oa系统集成阿里云邮箱 编辑:程序博客网 时间:2024/04/30 02:03

一、基础知识

规则:定义数据包过滤条件,包含源地址、目的地址、传输协议、服务类型等;

 

链:指数据包的传播路径,一条链中可以有多条规则;

 

表:提供特定功能。iptables内置了filter、nat、mangle这3个表,分别用于实现包过滤、网络地址转换、包重构;

filter表包含:input、output、forward。这个表只有接收和丢弃包的功能,无法对数据包进行修改。

nat:可以实现1对1、1对多、多对多的工作。表包含prerouting(修改即将到来的数据包)、output(修改在路由之前本地

 

生成的数据包)、postrouting(修改即将出去的数据包)3个链。

mangle:包含input、output、forward、prerouting、postrouting5个链

 

 

二、iptables语法

iptables [-t 表] <命令选项> [链] [匹配选项] [操作选项]

 

命令选项说明:

-A    在所选链的链尾加入一条或多条规则

-D   在所选链的链尾删除一条或多条规则

-R    在所选链的链尾替换一条或多条规则

-I     以给出的规则号,在所选链中插入规则

-L    列出指定链的规则

-F    清除指定链或表中的所有规则

-N   创建新链

-X   删除链,链中的规则不能在使用中

-P    为永久链指定默认规则

-C    检查指定的包是否与指定链的规则相匹配

-Z    将制定链中的所有规则的包字节器清零

-h    显示帮助信息

 

 

 

匹配选项

-p [!] proto 指定要匹配的协议,加上!表示逻辑非

-s [!] address[/mask 根据源地址或地址范围确定数据包是否通过过滤器

-i [!] input name[+] 指定数据包从哪个接口进入,如eth0,eth1

-j target 匹配规则后数据包的处理方法,可能是accept、drop等

-m match

-o [!] output name[+] 指定匹配规则的对外网络接口,该选项只有output、forward、postrouting链是合法的。

--sport sport 指定数据包匹配的源端口,可以用“起始端口:结束端口”指定一个范围

-d [!] address[/mask根据目的地址或地址范围确定数据包是否通过过滤器

--dport dport指定数据包匹配的目标端口,可以用“起始端口:结束端口”指定一个范围

 

 

默认时,终端中创建的各种规则在系统重启后就丢失了,所以要把这些规则保存到文件中,通过iptables-save来实现:

iptables-save > /etc/sysconfig/iptables

重启后规则丢失,再使用以下命令回复:

iptables-restore < /etc/sysconfig/iptables

若希望重新启动后自动恢复,则:

service iptables save

 

目标动作

ACCEPT接收

DROP 丢弃

REJECT 拒绝包

LOG 写入日志

TOS 改写包的TOS值

REDIRECT 重新导向另一个端口,可以用来实现透明代理

MASQUERADE ?

DNAT 改写数据包的目的IP为特定IP或范围

SNAT 改写源IP

MIRROR ?

QUEUE ?

RETURN ?

MARK ?

 

三、实例

 

1、  查看规则

iptables –t nat –L //查看nat表所有链的规则列表

 

2、  禁止客户机访问指定网站

iptables –I FORWARD –d www.xunlei.com –j DROP

 

3、  禁止部分客户机上网

iptables –I FORWARD –s 192.168.1.0/24 –j DROP

 

4、  禁止某些服务

iptables –I FORWARD –s 102.168.1.0/24 –p tcp –dport 80 –j DROP //禁用web

iptables –I FORWARD –s 102.168.1.0/24 –p tcp –dport 21 –j DROP //禁用ftp

 

5、  nat

透明代理的实现:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

0 0
原创粉丝点击