Iptables 路由表的配置及功能简介
时间:2010-03-10 来源:forwardinng
Iptables 路由表的配置及功能简介
在介绍iptables之前,我们先来了解一下防火墙的相关知识:
防火墙存在于网络边界,通过预设规则对进出口路由进行检查的处理组件;防火墙分为包过滤防火墙和procy防火墙,(第二种称谓可能不太合适,欢迎大家来指点哦),第一种防火墙的工作速度比较快,但只能检查到第三层的内容,而procy则可以检查所有内容,目前来讲,在条件允许的情况下,我们通常是将两者结合起来使用,这样,既提高防火墙的工作效率又可对所有内容进行检查,是一种完美的方法。
内核分为内核空间和用户空间,两者之间通常是不能相互通信的,若要相互访问,要通过调用来实现,在内核中,tcp/ip 选择了五个点,调用钩子函数,当数据包通过时将相关项“勾上去”。数据包是必须要经过这五个点中的某几个点的.
Iptables不是一个防火墙,而是一个规则管理器,而netfilter 架构才是防火墙,iptables形象的说就是镶嵌在这五个点里面,来提供过滤规则
Iptables表分为四个:filer,nat,mangle,raw。它们有各自的功能如:做过滤,地址转发等
上面提到的五个点叫做链:chains
FORWARD:转发
PREROUTING:进入防火墙之前
POSTROUING:离开防火墙之前
INPUT:进入主机内
OUTPUT:离开主机内
下面介绍iptables的命令使用:
1:首先对链中的rules作管理
-A:append :在链的尾部加一条规则
-I:[+n] insert:在第n行之前插入一条规则,默认插入到第一行的前面
-R:+n replace:更换一条新的条目 后加数字,即要更换的条的序号
-d:[+n] delete:删除一条规则
2:对链的设置:
-F:flush:冲除,清空,不加参数的时候默认删除所有链
-P:policy:设置默认策略
-N:new:用户自定义新链
-X:删除用户自定义的新链
-Z:清空计数器
-E:将用户自定义的链重命名
3:匹配选项。匹配分为通用匹配和扩展匹配两种:
通用匹配:
-p:protocol 指定协议 {tcp,udp,icmp等}
-s:src address 指定源地址
-d:dst address 指定目标地址
-i:in interface 指定进入的网卡接口
-o:our interface 指定出去的网卡接口
-j:jump 跳转
DROP:悄悄丢掉
REJECT:明确的拒绝
ACCEPT:接受
SNAT:指明是源地址转换
DNAT:指明是目的地址转换
LOG: 为匹配的包开启内核记录。当在规则中设置了这一选项后,linux内核会通过printk()打印一些关于全部匹配包的信息(诸如IP包头字段等)。 --log-level level 记录级别。
--log-prefix prefix :在纪录信息前加上特定的前缀:最多14个字母长,用来和记录中其他信息区别。
REDIRECT: 只适用于nat表的PREROUTING和OUTPUT链,和只调用它们的用户自定义链。它修改包的目标IP地址来发送包到机器自身(本地生成的包被安置为地址127.0.0.1)。它包含一个选项:
MASQERADE:(他和SNAT 的用法一样,只是SNAT用于静态的源地址转换,而后者是动态的 伪装相当于给包发出时所经过接口的IP地址设置一个映像)
-L:列出iptables表
--line-numbers 给规则编号
-n 以数字形式ip格式显示信息,不做名称解析
-v 显示详细信息
-x 不做单位换算,直接显示精确值
扩展匹配。扩展匹配又分为隐含扩展和显示扩展
隐含扩展:
tcp :–dport –sport --tcp-flag (分别为指定目标端口,源端口,tcp标志,)
--syn --只匹配那些设置了SYN位而清除了ACK和FIN位的TCP包。这些包用于TCP连接初始化时发出请求;例如,大量的这种包进入一个接口发生堵塞时会阻止进入的TCP连接,而出去的TCP连接不会受到影响。这等于 --tcp-flags SYN, RST, ACK SYN。如果"--syn"前面有"!"标记,表示相反的意思。
udp:--sport --dport 指定udp的源端口和目的端口
icmp:--icmp-type 8 显示请求
--icmp-type 0 显示回应
--icmp-type 3 主机不可达
显式扩展:
-m state –state 检查状态 这里state是一个逗号分割的匹配连接状态列表。可能的状态是:INVALID表示包是未知连接,ESTABLISHED表示是双向传送的连接,NEW表示包为新的连接,否则是非双向传送的,而RELATED表示包由新连接开始,但是和一个已存在的连接在一起,如FTP数据传送,或者一个ICMP错误。
-m multport –ports (port1,port2,port3 …..)
--source-ports (port1,port2,port3….)
--source-ports (port1,port2,port3….)
-m limit –limit 指定平均速率
--limit burst 指定最大个数
-m mac –mac-source (它只用在PREROUTING ,FORWARD,INPUT链中 )指定mac地址
开启防火墙功能并查看的命令:
#vim /etc/sysctl.conf
#sysctl -p
#cat /proc/sys/net/ipv4/
保存防火墙配置信息:
Service iptables save
下面介绍一下几种服务,通过实例来理解防火墙的工作原理:
Web服务(监听端口80 ,tcp协议)
ftp服务:(监听端口: 21 和其它被动模式下所用的端口 ,tcp协议)
ftp服务器可以工作在主动和被动两种模式,而被动模式比主动模式安全的多,
ssh服务:(端口22,tcp协议)
ping:(类型 8 ;0;3 ,icmp协议 )
实验环境:
内网服务器:10.0.2.2
网关防火墙:10.0.2.1(内网网卡)
10.0.3.1( 外网网卡)
外网: 10.0.3.2
一:结合路由追踪来实现两个网络的web通信:
服务器配置:
#yum install httpd
#service httpd start
网关防火墙配置:
#vim /etc/sysctl.conf 开启路由功能
#sysctl –p
#iptables –P FORWARD DROP 将防火墙的forward链的默认规则设为drop
# iptables –A FORWARD –s 10.0.3.0/24 –d 10.0.2.2 –p tcp –dport 80 –m state –state NEW,ESTABLESHE –j ACCEPT
iptables –A FORWARD –d 10.0.3.0/24 –s 10.0.2.2 –p tcp –sport 80 –m state –state ESTABLESHE –j ACCEPT
客户机验证:
#elinks 10.0.2.2
二:ssh服务:
服务器端的配置:
#yum install ssh
#service ssh start
网关防火墙的配置:
#ipatables –A FORWARD –s 10.0.3.0/24 –d 10.0.2.2 –p tcp –dport 22 –m state –state NEW,ESTABLISHED –j ACCEPT
#ipatables –A FORWARD –d 10.0.3.0/24 –s 10.0.2.2 –p tcp –sport 22 –m state –state ESTABLISHED –j ACCEPT
客户端访问:
#ssh [email protected]
三:ftp服务:
服务器端:
#yum install vsftpd
#service vsfstpd start
网关防火墙的配置:
#iptables –A FORWARD –s 10.0.3.0/24 –d 10.0.2.2 –p tcp –dport 21 –m state –state NEW,ESTABLISHED –j ACCEPT
#iptables –A FORWARD –d 10.0.3.0/24 –s 10.0.2.2 –p tcp –sport 21 –m state –state ESTABLISHED –j ACCEPT
#iptables –A FORWARD –s 10.0.3.0/24 –d 10.0.2.2 –p tcp –m state –state ESTABLISHED,RELATED –j ACCEPT
#iptables –A FORWARD –d 10.0.3.0/24 –s 10.0.2.2 –p tcp –m state –state ESTABLISHED,RELATED –j ACCEPT
客户端访问:
#ftp 10.0.2.2
四:ping服务
网关防火墙的配置:
#iptables –A FORWARD -p icmp –icmp-type 8 -j ACCEPT
#iptables –A FORWARD -p icmp --icmp-type 0 -j ACCEPT
nat 地址转换的应用:
一:将内网所有主机作snat地址转换 来访问Internet
#iptables -t nat POSTROUTING -s 10.0.2.0/24 –d 10.0.3.0/24 -p tcp -j DNAT --to-source 10.0.3.1
二:外网访问内网中ftp服务的时候,需要将目的地址作转换
#iptables -t nat PREROUTING -s 10.0.3.0/24 –d 10.0.3.1 -p tcp --dport 2020 -j DNAT --to-destination 10.0.2.2 :20