iptables命令大全
iptables命令参数

iptables命令参数iptables命令是Linux系统中用于设置防火墙规则的工具,它允许用户通过在内核中的网络数据包传输路径上添加或删除规则来过滤、修改和重定向网络数据包。
iptables命令有许多参数可以用来指定具体的操作和规则。
下面是一些常用的iptables命令参数:1. -A或--append:添加规则到规则链的末尾。
例如,`iptables -A INPUT -s 192.168.0.1 -j DROP`将会添加一个规则,禁止来自IP地址为192.168.0.1的主机的所有入站连接。
2. -I或--insert:在规则链内指定的位置插入规则。
例如,`iptables -I INPUT3 -s 192.168.0.1 -j DROP`将会在INPUT链的第3个位置插入一个规则,禁止来自IP地址为192.168.0.1的主机的所有入站连接。
3. -D或--delete:从规则链中删除规则。
例如,`iptables -D INPUT -s 192.168.0.1 -j DROP`将会删除INPUT链中所有来自IP地址为192.168.0.1的主机的入站连接的规则。
4. -P或--policy:设置默认策略。
例如,`iptables -P INPUT ACCEPT`将会将INPUT链的默认策略设置为接受所有入站连接。
5. -s或--source:指定源IP地址或地址段。
例如,`iptables -A INPUT -s 192.168.0.0/24 -j DROP`将会添加一个规则,禁止来自192.168.0.0/24网段的主机的所有入站连接。
6. -d或--destination:指定目标IP地址或地址段。
例如,`iptables -AOUTPUT -d 192.168.0.1 -j DROP`将会添加一个规则,禁止所有出站连接到IP地址为192.168.0.1的主机。
7. -p或--protocol:指定要过滤的传输层协议,如TCP、UDP或ICMP。
iptables 指令详细语法

iptables 指令语法iptables [-t table] command [match] [-jtarget/jump][-t table] 指定规则表-t参数用来指定规则表,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是filter。
三个规则表的功能如下:filter:这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。
这个规则表顾名思义是用来进行封包过滤的处理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT),我们会将基本规则都建立在此规则表中;nat:这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。
这个规则表除了作网址转换外,请不要做其它用途;mangle:此规则表拥有 PREROUTING、FORWARD 和POSTROUTING 三个规则链。
除了进行网址转换工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定 MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在 mangle 规则表中,由于使用率不高,我们不打算在这里讨论 mangle 的用法。
command 常用命令列表:命令-A, --append范例 iptables -A INPUT ...说明新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。
命令-D, --delete范例 iptables -D INPUT --dport 80 -j DROPiptables -D INPUT 1说明从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
命令-R, --replace范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP说明取代现行规则,规则被取代后并不会改变顺序。
Iptables常用命令

口输出 -p ---proto 协议类型 指定数据包匹配的协议,如
TCP、UDP 和 ICMP 等 -s --source 源地址或子网> 指定数据包匹配的源地址 指定数据包匹配的源端口号 指定数据包匹配的目的端口号 指定数据包规则所使用的过
--sport 源端口号> --dport 目的端口号> -m --match 匹配的模块 滤模块
DROP 丢弃数据包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过 滤程序。 REDIRECT 将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续
比对其它规则。这个功能可以用来实作透明代理 或用来保护 web 服务器。例如:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT--to-ports 8081
REJECT
拦阻该数据包,并返回数据包通知对方,可以返回的数据包有几个选择:ICMP
port-unreachable、 ICMP echo-reply 或是 tcp-reset (这个数据包包会要求对方关闭联机) , 进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。 范例如下:
iptables -A INPUT -p TCP --dport 22 -j REJECT --reject-with ICMP echo-reply
命令
说明
-P -L -A -I -D -R -F -Z -X -v
--policy 链名> --list 链名> --append 链名> --insert 链名> --delete 链名> --replace 链名> --flush 链名> --zero 链名>
iptables常用命令解析

iptables常⽤命令解析查看当前iptables规则:iptables -n -L --line-numbers该命令会以列表的形式显⽰出当前使⽤的 iptables 规则,并不做解析,每⼀条规则前⾯的编号可以⽤来做为其它操作,例如后⾯的删除操作的参数,很有⽤。
[root@localhost ~]# iptables -n -LChain INPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- 0.0.0.0/00.0.0.0/0 state RELATED,ESTABLISHEDACCEPT icmp -- 0.0.0.0/00.0.0.0/0ACCEPT all -- 0.0.0.0/00.0.0.0/0ACCEPT tcp -- 0.0.0.0/00.0.0.0/0 state NEW tcp dpt:22REJECT all -- 0.0.0.0/00.0.0.0/0 reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT)target prot opt source destinationREJECT all -- 0.0.0.0/00.0.0.0/0 reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT)target prot opt source destinationiptables 规则中各指令(command)的含义:各种指令如下。
既可以使⽤长指令,也可以使⽤短指令字母,例如,iptables --append chain firewall-rule等价于iptables -A chain firewall-rule另外,指令后⾯所带的参数/选项,如果以 [ ] 包括,则表⽰该参数/选项可省略(有缺省值)。
iptables常用命令

iptables常用命令常用命令列表:命令 -A, --append范例 iptables -A INPUT ...说明新增规则到某个规则炼中,该规则将会成为规则炼中的最后一条规则。
命令 -D, --delete范例 iptables -D INPUT --dport 80 -j DROPiptables -D INPUT 1说明从某个规则炼中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
命令 -R, --replace范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP说明取代现行规则,规则被取代后并不会改变顺序。
命令 -I, --insert范例 iptables -I INPUT 1 --dport 80 -j ACCEPT说明插入一条规则,原本该位置上的规则将会往后移动一个顺位。
命令 -L, --list范例 iptables -L INPUT说明列出某规则炼中的所有规则。
命令 -F, --flush范例 iptables -F INPUT说明删除某规则炼中的所有规则。
命令 -Z, --zero范例 iptables -Z INPUT说明将封包计数器归零。
封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。
命令 -N, --new-chain范例 iptables -N allowed说明定义新的规则炼。
命令 -X, --delete-chain范例 iptables -X allowed说明删除某个规则炼。
命令 -P, --policy范例 iptables -P INPUT DROP说明定义过滤政策。
也就是未符合过滤条件之封包,预设的处理方式。
命令 -E, --rename-chain范例 iptables -E allowed disallowed说明修改某自订规则炼的名称。
常用封包比对参数:参数 -p, --protocol范例 iptables -A INPUT -p tcp说明比对通讯协议类型是否相符,可以使用 ! 运算子进行反向比对,例如:-p ! tcp ,意思是指除 tcp 以外的其它类型,包含 udp、icmp ...等。
iptables命令

IPtables命令详解用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改iptables - [RI] chain rule num rule-specification[option]用iptables - RI 通过规则的顺序指定iptables -D chain rule num[option]删除指定规则iptables -[LFZ] [chain][option]用iptables -LFZ 链名 [选项]iptables -[NX] chain用 -NX 指定链iptables -P chain target[options]指定链的默认目标iptables -E old-chain-name new-chain-name-E 旧的链名新的链名用新的链名取代旧的链名说明Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。
可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。
每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。
这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。
TARGETS防火墙的规则指定所检查包的特征,和目标。
如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者 RETURN[返回]。
ACCEPT 表示让这个包通过。
DROP表示将这个包丢弃。
QUEUE表示把这个包传递到用户空间。
RETURN表示停止这条链的匹配,到前一个链的规则重新开始。
如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。
TABLES当前有三个表(哪个表是当前表取决于内核配置选项和当前模块)。
iptables命令汇总

iptables命令大全.txt对的时间遇见对的人是一生幸福;对的时间遇见错的人是一场心伤;错的时间遇见对的人是一段荒唐;错的时间遇见错的人是一声叹息。
数据包经过防火墙的路径图1比较完整地展示了一个数据包是如何经过防火墙的,考虑到节省空间,该图实际上包了三种情况:来自外部,以防火墙(本机)为目的地的包,在图1中自上至下走左边一条路径。
由防火墙(本机)产生的包,在图1中从“本地进程”开始,自上至下走左边一条路径来自外部,目的地是其它主机的包,在图1中自上至下走右边一条路径。
图1如果我们从上图中略去比较少用的mangle表的图示,就有图2所显示的更为清晰的路径图. 图2禁止端口的实例? 禁止ssh端口只允许在192.168.62.1上使用ssh远程登录,从其它计算机上禁止使用ssh#iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT#iptables -A INPUT -p tcp --dport 22 -j DROP? 禁止代理端口#iptables -A INPUT -p tcp --dport 3128 -j REJECT? 禁止icmp端口除192.168.62.1外,禁止其它人ping我的主机#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type echo-request -j ACCEPT#iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request –j ?DROP或#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT #iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP注:可以用iptables --protocol icmp --help查看ICMP类型还有没有其它办法实现?? 禁止QQ端口#iptables -D FORWARD -p udp --dport 8000 -j REJECT强制访问指定的站点图3要使192.168.52.0/24网络内的计算机(这此计算机的网关应设为192.168.52.10)强制访问指定的站点,在做为防火墙的计算机(192.168.52.10)上应添加以下规则:1. 打开ip包转发功能echo 1 > /proc/sys/net/ipv4/ip_forward2. 在NAT/防火墙计算机上的NAT表中添加目的地址转换规则:iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination202.96.134.130:80iptables -t nat -I PREROUTING -i eth0 -p udp --dport 80 -j DNAT --to-destination 202.96.134.130:803. 在NAT/防火墙计算机上的NAT表中添加源地址转换规则:iptables -t nat -I POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000iptables -t nat -I POSTROUTING -o eth1 -p udp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-300004. 测试:在内部网的任一台计算机上打开浏览器,输入任一非本网络的IP,都将指向IP为202.96.134.130的网站.发布内部网络服务器图4要使因特网上的计算机访问到内部网的FTP服务器、WEB服务器,在做为防火墙的计算机上应添加以下规则:1. echo 1 > /proc/sys/net/ipv4/ip_forward2. 发布内部网web服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 80 -j DNAT --to-destination 192.168.52.15:80iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.15 --sport 80 -j SNAT --to-source 202.96.134.10:20000-300003. 发布内部网ftp服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 21 -j DNAT --to-destination 192.168.52.14:21iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.14 --sport 21 -j SNAT --to-source 202.96.134.10:40000-500004. 注意:内部网的计算机网关要设置为防火墙的ip(192.168.52.1)5. 测试: 用一台IP地址为202.96.134.0段的计算机虚拟因特网访问,当在其浏览器中访问http://202.96.134.10时,实际应看到的是192.168.52.15的的web服务。
iptables常用命令

iptables常⽤命令iptables常⽤指令作者:参考资料来源:、⽬录关于iptables的介绍可以参考资料来源的视频介绍。
---1、查看版本与帮助信息$ iptables -V # 查看版本信息iptables v1.6.1$ iptables -h # 查看帮助信息iptables v1.6.1Usage: iptables -[ACD] chain rule-specification [options]iptables -I chain [rulenum] rule-specification [options]iptables -R chain rulenum rule-specification [options]iptables -D chain rulenum [options]iptables -[LS] [chain [rulenum]] [options]iptables -[FZ] [chain] [options]iptables -[NX] chainiptables -E old-chain-name new-chain-nameiptables -P chain target [options]iptables -h (print this help information)Commands:Either long or short options are allowed.--append -A chain Append to chain--check -C chain Check for the existence of a rule--delete -D chain Delete matching rule from chain--delete -D chain rulenumDelete rule rulenum (1 = first) from chain--insert -I chain [rulenum]Insert in chain as rulenum (default 1=first)--replace -R chain rulenumReplace rule rulenum (1 = first) in chain--list -L [chain [rulenum]]List the rules in a chain or all chains--list-rules -S [chain [rulenum]]Print the rules in a chain or all chains--flush -F [chain] 删除所有链的规则(默认的会保留)--zero -Z [chain [rulenum]]链的计数器清零--new -N chain ⾃定义链--delete-chain-X [chain] 删除⾃定义的链--policy -P chain targetChange policy on chain to target--rename-chain-E old-chain new-chainChange chain name, (moving any references)Options:--ipv4 -4 Nothing (line is ignored by ip6tables-restore)--ipv6 -6 Error (line is ignored by iptables-restore)[!] --protocol -p proto protocol: by number or name, eg. `tcp'[!] --source -s address[/mask][...]source specification[!] --destination -d address[/mask][...]destination specification[!] --in-interface -i input name[+]network interface name ([+] for wildcard)--jump -j targettarget for rule (may load target extension)基本的处理⾏为:ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)--goto -g chainjump to chain with no return--match -m matchextended match (may load extension)--numeric -n numeric output of addresses and ports[!] --out-interface -o output name[+]network interface name ([+] for wildcard)--table -t table table to manipulate (default: `filter')--verbose -v verbose mode--wait -w [seconds] maximum wait to acquire xtables lock before give up--wait-interval -W [usecs] wait time to try to acquire xtables lockdefault is 1 second--line-numbers print line numbers when listing--exact -x expand numbers (display exact values)[!] --fragment -f match second or further fragments only--modprobe=<command> try to insert modules using this command--set-counters PKTS BYTES set the counter during insert/append[!] --version -V print package version.---2、iptables查看表$ sudo iptables --list这个命令和我们常见的sudo iptables -L是等价的,就是以列表显⽰表格,注意这⾥默认显⽰的是filter表格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据包经过防火墙的路径图1比较完整地展示了一个数据包是如何经过防火墙的,考虑到节省空间,该图实际上包了三种情况:来自外部,以防火墙(本机)为目的地的包,在图1中自上至下走左边一条路径。
由防火墙(本机)产生的包,在图1中从“本地进程”开始,自上至下走左边一条路径来自外部,目的地是其它主机的包,在图1中自上至下走右边一条路径。
图1如果我们从上图中略去比较少用的mangle表的图示,就有图2所显示的更为清晰的路径图.图2禁止端口的实例禁止ssh端口只允许在192.168.62.1上使用ssh远程登录,从其它计算机上禁止使用ssh #iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT#iptables -A INPUT -p tcp --dport 22 -j DROP∙禁止代理端口#iptables -A INPUT -p tcp --dport 3128 -j REJECT∙禁止icmp端口除192.168.62.1外,禁止其它人ping我的主机#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type echo-request -j ACCEPT#iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request –j ?DROP或#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT#iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP注:可以用iptables --protocol icmp --help查看ICMP类型还有没有其它办法实现?∙禁止QQ端口#iptables -D FORWARD -p udp --dport 8000 -j REJECT强制访问指定的站点图3要使192.168.52.0/24网络内的计算机(这此计算机的网关应设为192.168.52.10)强制访问指定的站点,在做为防火墙的计算机(192.168.52.10)上应添加以下规则:1. 打开ip包转发功能echo 1 > /proc/sys/net/ipv4/ip_forward2. 在NAT/防火墙计算机上的NAT表中添加目的地址转换规则:iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT--to-destination 202.96.134.130:80iptables -t nat -I PREROUTING -i eth0 -p udp --dport 80 -j DNAT--to-destination 202.96.134.130:803. 在NAT/防火墙计算机上的NAT表中添加源地址转换规则:iptables -t nat -I POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000iptables -t nat -I POSTROUTING -o eth1 -p udp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-300004. 测试:在内部网的任一台计算机上打开浏览器,输入任一非本网络的IP,都将指向IP为202.96.134.130的网站.发布内部网络服务器图4要使因特网上的计算机访问到内部网的FTP服务器、WEB服务器,在做为防火墙的计算机上应添加以下规则:1. echo 1 > /proc/sys/net/ipv4/ip_forward2. 发布内部网web服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 80 -j DNAT --to-destination 192.168.52.15:80iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.15 --sport 80 -j SNAT --to-source 202.96.134.10:20000-300003. 发布内部网ftp服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport21 -j DNAT --to-destination 192.168.52.14:21iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.14 --sport 21 -j SNAT --to-source 202.96.134.10:40000-500004. 注意:内部网的计算机网关要设置为防火墙的ip(192.168.52.1)5. 测试: 用一台IP地址为202.96.134.0段的计算机虚拟因特网访问,当在其浏览器中访问http://202.96.134.10时,实际应看到的是192.168.52.15的的web 服务;当访问ftp://202.96.134.10时,实际应看到的是192.168.52.14上的的ftp服务智能DNS图51. echo 1 > /proc/sys/net/ipv4/ip_forward2. 在NAT服务器上添加以下规则:在PREROUTING链中添加目的地址转换规则:iptables -t nat -I PREROUTING -i eth0 -p tcp --dpor 53 -j DNAT--to-destination 202.96.134.130iptables -t nat -I PREROUTING -i eth0 -p udp --dpor 53 -j DNAT--to-destination 202.96.134.130在POSTROUTING链中添加源地址转换规则:iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p tcp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-50000iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p udp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-500003. 测试在内部网任一台计算机上,将DNS设置为任意的外网IP,就可以使用DNS测试工具如nslookup来解析DNS服务器202.96.134.130上的名称.端口映射见上节透明代理设置#iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128通过NAT上网典型NAT上网一般做为NAT的计算机同时也是局域网的网关,假定该机有两块网卡eth0、eth1,eth0连接外网,IP为202.96.134.134;eth1连接局域网,IP为192.168.62.101. 先在内核里打开ip转发功能#echo 1 > /proc/sys/net/ipv4/ip_forward2.?使局域网用户能访问internet所要做的nat#iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to?202.96.134.134如果上网的IP是动态IP,则使用以下规则:#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.62.0/24 -j MASQUERADE如果是通过ADSL上网,且公网IP是动态IP,则使用以下规则:#iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.62.0/24 -j MASQUERADE3. 使internet用户可以访问局域网内web主机所要做的nat#iptables -t nat -A PREROUTING -p tcp -d 202.96.134.134 --dport 80 -j DNAT --to-destination 192.168.62.10注:局域网内的客户端需将默认网关、DNS设为防火墙的IP在我们的网络机房实现NAT共享上网工作环境:上层代理192.168.60.6(4480),只授予教师机(192.168.62.111)使用该代理的权限目标:不使用squid代理上网,而是使用NAT的方式上网方法:1) 确保停止教师机(192.168.62.111)的squid或其它代理服务2) 客户端网关、DNS均指向192.168.62.111,浏览器代理设置为192.168.60.6(4480)。
测试在当前情况下能否上网3) 在教师机(192.168.62.111)上添加如下iptables规则:#iptables -t nat -A POSTROUTING -p tcp -d 192.168.60.6/32 --dport 4480 -j SNAT --to-source 192.168.62.111:10000-30000解释:对于目的地为192.168.60.6、目的端口为4480的TCP包,在经过防火墙路由后,将其源地址转换为192.168.62.111,端口转换为10000-30000间的某个端口。
4) 客户端测试能否上网IP规则的保存与恢复iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载使用命令iptables-save来保存规则。
一般用iptables-save > /etc/sysconfig/iptables生成保存规则的文件 /etc/sysconfig/iptables,也可以用service iptables save它能把规则自动保存在/etc/sysconfig/iptables中。