免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2466 | 回复: 4
打印 上一主题 下一主题

[网络管理] (linux网络管理员指南) 读后对iptables的理解 [复制链接]

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-10-09 06:20:00操作系统版块每日发帖之星
日期:2015-10-20 06:20:00IT运维版块每日发帖之星
日期:2015-11-03 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-07 14:44 |只看该作者 |倒序浏览
错误之处,还请前辈多多指点

iptables将通信数据分为3个处理点,分别是filter,nat,mangle
filter代表过滤操作.
nat代表转址
mangle代表拆分,其实也是转址的一种.

filter是过滤入站,出站包的检查站(可以叫检查站)
nat是转址之用,当你只有一个IP地址,而有数个电脑时.就需要用到NAT.
nat分为SNAT,DNAT.下面分别解释一下SNAT与DNAT
SNAT意思为源地址转换,如果只有一个合法地址,其它主机得用保留地址.保留地址是无法与外部通信的.保留地址为10.0.0.0/8  172.16-31.0.0/16  192.168.1.0/24  
保留地址的主机要与外部通信,必须要有一个合法的网络IP地址.为什么不行,原因很简单,因特网没有到这些地址的路由.
SNAT流程: 保留地址的主机---->执行源网络地址转换的主机---->将源地址改为合法地址,目的地址不变---->网关主机用合法地址去请求源码要请求的数据---->接着将数据返回给源地址.
实例:iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/24 -p tcp  -j SNAT --to 218.84.9.X
将源络192.168.100/24访问internet转址成218.84.9.X -p参数为协议,只有ip标头为tcp的才执行转址,如果是udp,icmp就不干活了.可以将tcp改为ALL

DNAT意思是目的地址转换,这是地址转换的另一种,只不过用处不同.与保留地址也脱不了干系.这种转址也是为保留地址开发的
既然保留地址无法与外界通信,哪么外界主机要想与保留地址的主机通信,哪也得执行转址.
源地址:internet 目的地址:本地  端口:80  内部主机要提供http服务.可internet主机的请求并不能进入内部主机.这时可在网关主机上执行DNAT.
实例: iptables -t nat -A PREROUTING -p tcp -d 218.84.9.X --dport 80 -j DNAT --to-destination 192.168.1.20
将外部请求218.84.9.X应答的HTTP服务转交给内部主机192.168.1.20 . -p [tcp|udp|icmp|ALL]
nat正是iptables的拿手好戏,只需要几个命令,就可以实现一台路由器的功能.简单吧.

检查站的五个检查兵(应该可以这么理解的,他们与filter.net.mangle有着某着从属关系)
INPUT OUTPUT FORWARD PREROUTING POSROUTING
input   internet连接本地,意为输入.本地进程监听远程的连接
output  本地连接internet,意为输出.是本地进程所产生的包。
forward 这个命令应用在机器存在二块以上网卡的情形中.意思是当数据进入一块网卡,又离开,或者进入了别一块网卡.
prerouting 进入系统的有效包.说明在本地主机已经找到目的地址了.一般应用在SNAT/DNAT转址上.
posrouting 数据包已经进入,但马上要离开.该命令应用在ip伪装及snat上.



防火墙规则匹配条件
iptables内置了osi协议模形.所以支持tcp/ip标头匹配条件.每个数据包里都有目的地址,源地址,源端口,目的端口.使用的协议等,讲到这,相信你也明白为什么防火必须在网络层了吧.防火墙对应用层的程序是一无所知的,应用层的程序如果发生网络应用,则要经过网络层,iptables就是内置在网络层的拦路虎,对过往数据按照规则逐一进行检查.如果匹配,放过.不匹配,拒绝.或者按默认设定的政策进行处理.

-s (代表源地址)   -s www.g.cn | -s 191.1.2.4    支持域名IP,0/0表示所有地址
-d (代表目的地址) -d www.g.cn | -d 218.84.9.251 支持域名IP,0/0表示所有地址
--dport(代表目的端口) --dport 80 | --dport 80-85(80.81一直到85) 80:85单选80与85
--sport(代表源端口) --sport 80 | --dport 80-85(80.81一直到85) 80:85单选80与85

-p (protocol协议)
-p [TCP | UDP | ICMP | ALL] ALL选项表示匹配所有协议

-j (operating操作,对数据判断之后的后续操作)
-j [ACCEPT | DROP | LOG | MARK | REJECT | TTL | MASQUERADE | SNAT | DNAT]
-j的操作选项还有很多,这里并没有一一列出.挑选几个重要的说
ACCEPT 允许,让数据包继续进入下一检查点.
DROP   拒绝,数据包在此检查点消失
LOG    LOG当然是日志了,log还有许多选项的,比喻info
REJECT 抵抗,抵抗与拒绝不同,抵抗还表示与敌方有通话.而DROP则表示不理睬你了.REJECT会给对方一个拒绝的回应
TTL    数据包的生期周期,随你的爱好设置,微软的是64,google是245,freebsd.org是53,kernel.org是51  设置过高浪费占用带宽.最高不要超过255
MASQUERADE 也是地址转换的一种,只不过是应用在动态地址上.它与网络接口存在着某种关系
SNAT与DNAT已经讲过了

-o output  eth0 内网接口
-i  input     eth1 去往internet的接口


来几条命令吧,让你对iptables有点感觉
iptables -P INPUT DROP
iptables -t filter -a INPUT -s 0/0 -p tcp --dport 22 -j DROP
iptables -t filter -a OUTPUT -d 0/0 --dport 80 -p tcp -j ACCEPT
iptables -t filter -a FORWARD -d www.microsoft.com -p ALL -j DROP
第一条命令是设置INPUT检查点的缺省规则为拒绝
第二条命令是过滤internet来本地的22端口,协议为tcp,操作为拒绝
第三条命令是:本地请求internet的80数据为允许
第四条命令是:去往www.microsoft.com的数据包全部拒绝


语法及用法FAQ:
问我写好了规则,我想保存规则怎么办
答:/etc/init.d/iptables save     //[stop | start]

问我想清空所有规则
iptables -F       //清空所有规则
iptables -t nat -F   //清空nat表规则

开机启动iptables
/etc/rc.d/rc.local   添加/etc/init.d/iptables start或者chkconfig

寻求帮助
iptables -p tcp --help     //单项帮助
iptables --help              //整项帮助
iptables -s --help          //举一反三

实现路由器功能
将此行echo "1" > /proc/sys/net/ipv4/ip_forward加入开机启动项或者去/etc/sysctl.conf更改
因定IP加此行,原理上面有 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/24 -p tcp  -j SNAT --to 218.84.9.X
动态ip加此行,原理上面有  iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -j MASQUERADE 看到这行有个PPP0没有,留你个问题,你想去吧







继续编写中........

感谢哪些与我争执shorewall与iptables问题的人,因为你们我才学习了iptables,要不然我还在用shorewall
http://linux.chinaunix.net/bbs/thread-1022759-1-1.html


[ 本帖最后由 3645636 于 2008-10-9 18:07 编辑 ]

NAT.jpeg (121.5 KB, 下载次数: 16)

NAT.jpeg

论坛徽章:
0
2 [报告]
发表于 2008-10-07 16:52 |只看该作者

回复 #1 3645636 的帖子

写的不错,楼主辛苦了

论坛徽章:
0
3 [报告]
发表于 2008-10-08 09:06 |只看该作者

回复 #1 3645636 的帖子

新手的必经之路

论坛徽章:
0
4 [报告]
发表于 2008-10-08 22:41 |只看该作者
nice
赞一个学习精神

论坛徽章:
0
5 [报告]
发表于 2008-10-09 08:05 |只看该作者
很好,不过里面的细节还是要主意一下的:
比如:iptables -a INPUT -s 0/0 -p tcp --dport 22 -j DROP
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP