什么是iptables规则链?

什么是iptables规则链?,第1张

什么是Iptables? iptables 是建立在 netfilter 架构基础上的一个包过滤管理工具,最主要的作用是用来做防火墙或透明代理。Iptables 从 ipchains 发展而来,它的功能更为强大。Iptables 提供以下三种功能:包过滤、NAT(网络地址转换)和通用的 pre-route packet mangling。包过滤:用来过滤包,但是不修改包的内容。Iptables 在包过滤方面相对于 ipchians 的主要优点是速度更快,使用更方便。NAT:NAT 可以分为源地址 NAT 和目的地址 NAT。 Iptables 可以追加、插入或删除包过滤规则。实际上真正执行这些过虑规则的是 netfilter 及其相关模块(如 iptables 模块和 nat 模块)。Netfilter 是 Linux 核心中一个通用架构,它提供了一系列的 “表”(tables),每个表由若干 “链”(chains)组成,而每条链中可以有一条或数条 “规则”(rule)组成。 系统缺省的表为 “filter”,该表中包含了 INPUT、FORWARD 和 OUTPUT 3 个链。 每一条链中可以有一条或数条规则,每一条规则都是这样定义的:如果数据包头符合这样的条件,就这样处理这个数据包。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略来处理该数据包。 table,chain,rule iptables 可以 *** 纵3 个表:filter 表,nat 表,mangle 表。 NAT 和一般的 mangle 用 -t 参数指定要 *** 作哪个表。filter 是默认的表,如果没有 -t 参数,就默认对 filter 表 *** 作。 Rule 规则:过滤规则,端口转发规则等,例如:禁止任何机器 ping 我们的服务器,可以在服务器上设置一条规则: iptables -A INPUT -s ! 127001 -p icmp -j DROP 从–s 开始即是一条规则,-j 前面是规则的条件,-j 开始是规则的行为(目的)。整条命令解释为,在filter 表中的 INPUT 规则链中插入一条规则,所有源地址不为 127001 的 icmp 包都被抛弃。 Chain 规则链:由一系列规则组成,每个包顺序经过 chain 中的每一条规则。chain 又分为系统 chain和用户创建的 chain。下面先叙述系统 chain。 filter 表的系统 chain: INPUT,FORWAD,OUTPUT nat 表的系统 chain: PREROUTING,POSTROUTING,OUTPUT mangle 表的系统 chain: PREROUTING,OUTPUT 每条系统 chain 在确定的位置被检查。比如在包过滤中,所有的目的地址为本地的包,则会进入INPUT 规则链,而从本地出去的包会进入 OUTPUT 规则链。 所有的 table 和 chain 开机时都为空,设置 iptables 的方法就是在合适的 table 和系统 chain 中添相应的规则。 -------------------------------------------------------------- IPTABLES 语法: 表: iptables从其使用的三个表(filter、nat、mangle)而得名, 对包过滤只使用 filter 表, filter还是默认表,无需显示说明 *** 作命令: 即添加、删除、更新等。 链:对于包过滤可以针对filter表中的INPUT、OUTPUT、FORWARD链,也可以 *** 作用户自定义的链。 规则匹配器:可以指定各种规则匹配,如IP地址、端口、包类型等。 目标动作:当规则匹配一个包时,真正要执行的任务,常用的有: ACCEPT 允许包通过 DROP 丢弃包 一些扩展的目标还有: REJECT 拒绝包,丢弃包同时给发送者发送没有接受的通知 LOG 包有关信息记录到日志 TOS 改写包的TOS值 为使FORWARD规则能够生效,可使用下面2种方法的某种: [root@rhlinux root]# vi /proc/sys/net/ipv4/ip_forward [root@rhlinux root]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@rhlinux root]# vi /etc/sysconfig/network [root@rhlinux root]# echo "FORWARD_IPV4=true" > /etc/sysconfig/network -------------------------------------------------------- iptables语法可以简化为下面的形式: iptables [-t table] CMD [chain] [rule-matcher] [-j target] -------------------------------------------------------- 常用 *** 作命令: -A 或 -append 在所选链尾加入一条或多条规则 -D 或 -delete 在所选链尾部删除一条或者多条规则 -R 或 -replace 在所选链中替换一条匹配规则 -I 或 -insert 以给出的规则号在所选链中插入一条或者多条规则 如果规则号为1,即在链头部 -L 或 -list 列出指定链中的所有规则,如果没有指定链,将列出链中的所有规则 -F 或 -flush 清除指定链和表中的所由规则, 假如不指定链,那么所有链都将被清空 -N 或 -new-chain 以指定名创建一条新的用户自定义链,不能与已有链名相同 -X 或 -delete-chain 删除指定的用户定义帘,必需保证链中的规则都不在使用时才能删除,若没有指定链,则删除所有用户链 -P 或 -policy 为永久帘指定默认规则(内置链策略),用户定义帘没有缺省规则,缺省规则也使规则链中的最后一条规则,用-L显示时它在第一行显示 -C 或 -check 检查给定的包是否与指定链的规则相匹配 -Z 或 -zero 将指定帘中所由的规则包字节(BYTE)计数器清零 -h 显示帮助信息 ------------------------------------------------------------- 常用匹配规则器: -p , [!] protocol 指出要匹配的协议,可以是tcp, udp, icmp, all, 前缀!为逻辑非,表示除该协议外的所有协议 -s [!] address[/mask] 指定源地址或者地址范围 -sport [!] port[:port] 指定源端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子 -d [!] address[/mask] 指定目的地址或者地址范围 -dport [!] port[:port] 指定目的端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子 -icmp-type [!] typename 指定匹配规则的ICMP信息类型(可以使用 iptables -p icmp -h 查看有效的ICMP类型名) -i [!] interface name[+] 匹配单独或某种类型的接口,此参数忽略时,默认符合所有接口,接口可以使用"!"来匹配捕食指定接口来的包参数interface是接口名,如 eth0, eht1, ppp0等,指定一个目前不存在的接口是完全合法的,规则直到接口工作时才起作用,折中指定对于PPP等类似连接是非常有用的"+"表示匹配所有此类型接口该选项只针对于INPUT,FORWARD和PREROUTING链是合法的 -o [!] interface name[+] 匹配规则的对外网络接口,该选项只针对于OUTPUT,FORWARD,POSTROUTING链是合法的 [!] --syn 仅仅匹配设置了SYN位, 清除了ACK, FIN位的TCP包 这些包表示请求初始化的TCP连接阻止从接口来的这样的包将会阻止外来的TCP连接请求但输出的TCP连接请求将不受影响这个参数仅仅当协议类型设置为了TCP才能使用 此参数可以使用"!"标志匹配已存在的返回包,一般用于限制网络流量,即只允许已有的,向外发送的连接所返回的包 ---------------------------------------------------------- 如何制定永久规则集: /etc/sysconfig/iptables 文件是 iptables 守护进程调用的默认规则集文件 可以使用以下命令保存执行过的IPTABLES命令: /sbin/iptables-save > /etc/sysconfig/iptables 要恢复原来的规则库,可以使用: /sbin/iptables-restore < /etc/sysconfig/iptables iptables命令和route等命令一样,重启之后就会恢复,所以: [root@rhlinux root]# service iptables save 将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ] 令一种方法是 /etc/rcd/initd/iptables 是IPTABLES的启动脚本,所以: [root@rhlinux root]# /etc/rcd/initd/iptables save 将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ] 以上几种方法只使用某种即可 若要自定义脚本,可直接使用iptables命令编写一个规则脚本,并在启动时执行: 例如若规则使用脚本文件名/etc/fw/rule, 则可以在/etc/rcd/rclocal中加入以下代码: if [-x /etc/fw/rule]; then /etc/fw/sule; fi; 这样每次启动都执行该规则脚本,如果用这种方法,建议NTSYSV中停止IPTABLES ---------------------------------------------------------- 实例: 链基本 *** 作: [root@rh34 root]# iptables -L -n (列出表/链中的所有规则,包过滤防火墙默认使用的是filter表,因此使用此命令将列出filter表中所有内容,-n参数可加快显示速度,也可不加-n参数。) [root@rh34 root]# iptables -F (清除预设表filter中所有规则链中的规则) [root@rh34 root]# iptables -X (清除预设表filter中使用者自定义链中的规则) [root@rh34 root]# iptables -Z (将指定链规则中的所有包字节计数器清零) ------------------------------------------------------------ 设置链的默认策略,默认允许所有,或者丢弃所有: [root@rh34 root]# iptables -P INPUT ACCEPT [root@rh34 root]# iptables -P OUTPUT ACCEPT [root@rh34 root]# iptables -P FORWARD ACCEPT (以上我们在不同方向设置默认允许策略,若丢弃则应是DROP,严格意义上防火墙应该是DROP然后再允许特定) --------------------------------------------------------------- 向链中添加规则,下面的例子是开放指定网络接口(信任接口时比较实用): [root@rh34 root]# iptables -A INPUT -i eth1 -j ACCEPT [root@rh34 root]# iptables -A OUTPUT -o eth1 -j ACCEPT [root@rh34 root]# iptables -A FORWARD -i eth1 -j ACCEPT [root@rh34 root]# iptables -A FORWARD -o eth1 -j ACCEPT -------------------------------------------------------------- 使用用户自定义链: [root@rh34 root]# iptables -N brus (创建一个用户自定义名叫brus的链) [root@rh34 root]# iptables -A brus -s 0/0 -d 0/0 -p icmp -j DROP (在此链中设置了一条规则) [root@rh34 root]# iptables -A INPUT -s 0/0 -d 0/0 -j brus (向默认的INPUT链添加一条规则,使所有包都由brus自定义链处理) ---------------------------------------------------------------- 基本匹配规则实例: 匹配协议: iptables -A INPUT -p tcp (指定匹配协议为TCP) iptables -A INPUT -p ! tcp (指定匹配TCP以外的协议) 匹配地址: iptables -A INPUT -s 19216811 (匹配主机)

自己看:
什么是Iptables?
iptables 是建立在 netfilter 架构基础上的一个包过滤管理工具,最主要的作用是用来做防火墙或透明代理。Iptables 从 ipchains 发展而来,它的功能更为强大。Iptables 提供以下三种功能:包过滤、NAT(网络地址转换)和通用的 pre-route packet mangling。包过滤:用来过滤包,但是不修改包的内容。Iptables 在包过滤方面相对于 ipchians 的主要优点是速度更快,使用更方便。NAT:NAT 可以分为源地址 NAT 和目的地址 NAT。
Iptables 可以追加、插入或删除包过滤规则。实际上真正执行这些过虑规则的是 netfilter 及其相关模块(如 iptables 模块和 nat 模块)。Netfilter 是 Linux 核心中一个通用架构,它提供了一系列的 “表”(tables),每个表由若干 “链”(chains)组成,而每条链中可以有一条或数条 “规则”(rule)组成。
系统缺省的表为 “filter”,该表中包含了 INPUT、FORWARD 和 OUTPUT 3 个链。
每一条链中可以有一条或数条规则,每一条规则都是这样定义的:如果数据包头符合这样的条件,就这样处理这个数据包。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略来处理该数据包。
table,chain,rule
iptables 可以 *** 纵3 个表:filter 表,nat 表,mangle 表。
NAT 和一般的 mangle 用 -t 参数指定要 *** 作哪个表。filter 是默认的表,如果没有 -t 参数,就默认对 filter 表 *** 作。
Rule 规则:过滤规则,端口转发规则等,例如:禁止任何机器 ping 我们的服务器,可以在服务器上设置一条规则:
iptables -A INPUT -s ! 127001 -p icmp -j DROP
从 –s 开始即是一条规则,-j 前面是规则的条件,-j 开始是规则的行为(目的)。整条命令解释为,在filter 表中的 INPUT 规则链中插入一条规则,所有源地址不为 127001 的 icmp 包都被抛弃。
Chain 规则链:由一系列规则组成,每个包顺序经过 chain 中的每一条规则。chain 又分为系统 chain和用户创建的 chain。下面先叙述系统 chain。
filter 表的系统 chain: INPUT,FORWAD,OUTPUT
nat 表的系统 chain: PREROUTING,POSTROUTING,OUTPUT

mangle 表的系统 chain: PREROUTING,OUTPUT
每条系统 chain 在确定的位置被检查。比如在包过滤中,所有的目的地址为本地的包,则会进入INPUT 规则链,而从本地出去的包会进入 OUTPUT 规则链。
所有的 table 和 chain 开机时都为空,设置 iptables 的方法就是在合适的 table 和系统 chain 中添相应的规则。
--------------------------------------------------------------
IPTABLES 语法:
表: iptables从其使用的三个表(filter、nat、mangle)而得名, 对包过滤只使用 filter 表, filter还是默认表,无需显示说明
*** 作命令: 即添加、删除、更新等。
链:对于包过滤可以针对filter表中的INPUT、OUTPUT、FORWARD链,也可以 *** 作用户自定义的链。
规则匹配器:可以指定各种规则匹配,如IP地址、端口、包类型等。
目标动作:当规则匹配一个包时,真正要执行的任务,常用的有:
ACCEPT 允许包通过
DROP 丢弃包
一些扩展的目标还有:

REJECT 拒绝包,丢弃包同时给发送者发送没有接受的通知
LOG 包有关信息记录到日志
TOS 改写包的TOS值
为使FORWARD规则能够生效,可使用下面2种方法的某种:
[root@rhlinux root]# vi /proc/sys/net/ipv4/ip_forward
[root@rhlinux root]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@rhlinux root]# vi /etc/sysconfig/network
[root@rhlinux root]# echo "FORWARD_IPV4=true" > /etc/sysconfig/network
--------------------------------------------------------
iptables语法可以简化为下面的形式:
iptables [-t table] CMD [chain] [rule-matcher] [-j target]
--------------------------------------------------------
常用 *** 作命令:
-A 或 -append 在所选链尾加入一条或多条规则
-D 或 -delete 在所选链尾部删除一条或者多条规则
-R 或 -replace 在所选链中替换一条匹配规则
-I 或 -insert 以给出的规则号在所选链中插入一条或者多条规则 如果规则号为1,即在链头部
-L 或 -list 列出指定链中的所有规则,如果没有指定链,将列出链中的所有规则
-F 或 -flush 清除指定链和表中的所由规则, 假如不指定链,那么所有链都将被清空
-N 或 -new-chain 以指定名创建一条新的用户自定义链,不能与已有链名相同
-X 或 -delete-chain 删除指定的用户定义帘,必需保证链中的规则都不在使用时才能删除,若没有指定链,则删除所有用户链
-P 或 -policy 为永久帘指定默认规则(内置链策略),用户定义帘没有缺省规则,缺省规则也使规则链中的最后一条规则,用-L显示时它在第一行显示
-C 或 -check 检查给定的包是否与指定链的规则相匹配
-Z 或 -zero 将指定帘中所由的规则包字节(BYTE)计数器清零
-h 显示帮助信息
-------------------------------------------------------------
常用匹配规则器:
-p , [!] protocol 指出要匹配的协议,可以是tcp, udp, icmp, all, 前缀!为逻辑非,表示除该协议外的所有协议
-s [!] address[/mask] 指定源地址或者地址范围
-sport [!] port[:port] 指定源端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子
-d [!] address[/mask] 指定目的地址或者地址范围
-dport [!] port[:port] 指定目的端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子
-icmp-type [!] typename 指定匹配规则的ICMP信息类型(可以使用 iptables -p icmp -h 查看有效的ICMP类型名)
-i [!] interface name[+] 匹配单独或某种类型的接口,此参数忽略时,默认符合所有接口,接口可以使用"!"来匹配捕食指定接口来的包参数interface是接口名,如 eth0, eht1, ppp0等,指定一个目前不存在的接口是完全合法的,规则直到接口工作时才起作用,折中指定对于PPP等类似连接是非常有用的"+"表示匹配所有此类型接口该选项只针对于INPUT,FORWARD和PREROUTING链是合法的
-o [!] interface name[+] 匹配规则的对外网络接口,该选项只针对于OUTPUT,FORWARD,POSTROUTING链是合法的
[!] --syn 仅仅匹配设置了SYN位, 清除了ACK, FIN位的TCP包 这些包表示请求初始化的TCP连接阻止从接口来的这样的包将会阻止外来的TCP连接请求但输出的TCP连接请求将不受影响这个参数仅仅当协议类型设置为了TCP才能使用 此参数可以使用"!"标志匹配已存在的返回包,一般用于限制网络流量,即只允许已有的,向外发送的连接所返回的包
----------------------------------------------------------
如何制定永久规则集:
/etc/sysconfig/iptables 文件是 iptables 守护进程调用的默认规则集文件
可以使用以下命令保存执行过的IPTABLES命令:
/sbin/iptables-save > /etc/sysconfig/iptables
要恢复原来的规则库,可以使用:
/sbin/iptables-restore < /etc/sysconfig/iptables
iptables命令和route等命令一样,重启之后就会恢复,所以:
[root@rhlinux root]# service iptables save
将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ]
令一种方法是 /etc/rcd/initd/iptables 是IPTABLES的启动脚本,所以:
[root@rhlinux root]# /etc/rcd/initd/iptables save
将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ]
以上几种方法只使用某种即可
若要自定义脚本,可直接使用iptables命令编写一个规则脚本,并在启动时执行:
例如若规则使用脚本文件名/etc/fw/rule, 则可以在/etc/rcd/rclocal中加入以下代码:
if [-x /etc/fw/rule]; then /etc/fw/sule; fi;
这样每次启动都执行该规则脚本,如果用这种方法,建议NTSYSV中停止IPTABLES
----------------------------------------------------------
实例:
链基本 *** 作:
[root@rh34 root]# iptables -L -n
(列出表/链中的所有规则,包过滤防火墙默认使用的是filter表,因此使用此命令将列出filter表中所有内容,-n参数可加快显示速度,也可不加-n参数。)
[root@rh34 root]# iptables -F
(清除预设表filter中所有规则链中的规则)
[root@rh34 root]# iptables -X
(清除预设表filter中使用者自定义链中的规则)
[root@rh34 root]# iptables -Z
(将指定链规则中的所有包字节计数器清零)
------------------------------------------------------------
设置链的默认策略,默认允许所有,或者丢弃所有:
[root@rh34 root]# iptables -P INPUT ACCEPT
[root@rh34 root]# iptables -P OUTPUT ACCEPT
[root@rh34 root]# iptables -P FORWARD ACCEPT
(以上我们在不同方向设置默认允许策略,若丢弃则应是DROP,严格意义上防火墙应该是DROP然后再允许特定)
---------------------------------------------------------------
向链中添加规则,下面的例子是开放指定网络接口(信任接口时比较实用):
[root@rh34 root]# iptables -A INPUT -i eth1 -j ACCEPT
[root@rh34 root]# iptables -A OUTPUT -o eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -i eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -o eth1 -j ACCEPT
--------------------------------------------------------------
使用用户自定义链:
[root@rh34 root]# iptables -N brus
(创建一个用户自定义名叫brus的链)
[root@rh34 root]# iptables -A brus -s 0/0 -d 0/0 -p icmp -j DROP
(在此链中设置了一条规则)
[root@rh34 root]# iptables -A INPUT -s 0/0 -d 0/0 -j brus
(向默认的INPUT链添加一条规则,使所有包都由brus自定义链处理)
----------------------------------------------------------------
基本匹配规则实例:
匹配协议:
iptables -A INPUT -p tcp
(指定匹配协议为TCP)
iptables -A INPUT -p ! tcp
(指定匹配TCP以外的协议)
匹配地址:
iptables -A INPUT -s 19216811
(匹配主机)
iptables -A INPUT -s 19216810/24
(匹配网络)
iptables -A FORWARD -s ! 19216811
(匹配以外的主机)
iptables -A FORWARD -s ! 19216810/24
(匹配以外的网络)
匹配接口:
iptables -A INPUT -i eth0
iptables -A FORWARD -o eth0
(匹配某个指定的接口)
iptables -A FORWARD -o ppp+
(匹配所有类型为ppp的接口)
匹配端口:
iptables -A INPUT -p tcp --sport :>1、山德罗•基亚Sandro Chia画家的独照:
(1)>在你盒子(类似路由器功能的东西)那有个凹陷下去的一个按钮reset(重置) 用笔头按住三秒 然后松开,重置后网关的密码就没了。
然后用IE浏览器输入19216811登录网关,检查DHCP开了没 (汗、如果是这个你HI死了)
再不然的话关了DHCP,你自己将电脑设置个固定IP(基于window7)
方法:打开“网络共享中心”点“更改适配器设置” 出现本地链接和无线连接,右击“无线连接”,出现下拉菜单点“属性” 协议4或6里可以设置了,至于查看你用哪个协议的,打开CMD菜单 ipconfig/all 就知道了

ftp不能新建文件夹是设置错误造成的,解决方法为:

1、打开后,找到左上角的站点并用鼠标左键点击。

2、在d出的菜单中选择站点管理器,图中箭头已经指出。

3、点击站点管理器后,选择新建站点。

4、创建新站点的时候站点名称可以自拟,我这里以我的网站为名。

5、创建好后,接下来就是比较重要的一部了,我们在箭头所指的方向输入IP地址(包括计算机IP或者英文类的服务器地址或网站地址)、用户名、密码。

6、连接成功后我们就可以看到网站上面的信息,新建文件夹了。


中国新闻时讯通讯社(>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13508590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存