你的位置:首页 > 操作系统

[操作系统]arm,iptables: No chain/target/match by that name.


最近由于项目需要,需要打开防火墙功能.

 

公司有

arm linux 3.0
x86 linux 3.2
x86 linux 2.4

的三个嵌入式.都需要打开防火墙功能.

 

执行“whereis iptables”命令,如果结果不为空,则说明防火墙软件已安装

# whereis iptablesiptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gzroot@wheezy-armel:~ 9:26:57

 

 

输入iptables -L 命令查看配置 

# iptables -LChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination root@wheezy-armel:~ 9:27:32 #

 

此处为空表示 没有配置防火墙.

 

此处可参考:

#知识:
# http://blog.chinaunix.net/uid-9950859-id-98279.html
# http://blog.slogra.com/post-232.html
# http://www.cnblogs.com/bangerlee/archive/2013/02/27/2935422.html
# http://blog.chinaunix.net/uid-26495963-id-3279216.html

 

保存本文件,然后把本规则加载,使之生效,注意,iptables不需要重启,加载一次规则就成了
sudo iptables-restore < /etc/iptables.test.rules
然后再查看最新的配置,应该所有的设置都生效了.
sudo iptables -L

第四步:保存生效的配置,让系统重启的时候自动加载有效配置
iptables提供了保存当前运行的规则功能
iptables-save > /etc/iptables.up.rules

 

结果执行时报错.

# iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7iptables: No chain/target/match by that name.

网上搜索是缺少内核模块

root@wheezy-armel:~ 9:30:27 # lsmod |grep iptablesroot@wheezy-armel:~ 9:31:04 # 

是没有输出的.

root@wheezy-armel:~ 9:31:04 # iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTiptables: No chain/target/match by that name.

后面发现是 有了-m state    RELATED,ESTABLISHED  之类的就报错.

就是对tcp 的连接状态:

  NEW
        ESTABLISHED
        RELATED
        INVALID
貌似都不能处理 .
 iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP   当然你如果想拒绝的更彻底:   iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT

如果用DROP可以成功,用REJECT会报错.

 

最后改成了:

常用的ACTION:   DROP:悄悄丢弃    一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表   REJECT:明示拒绝   ACCEPT:接受    custom_chain:转向一个自定义的链   DNAT   SNAT   MASQUERADE:源地址伪装   REDIRECT:重定向:主要用于实现端口重定向   MARK:打防火墙标记的   RETURN:返回    在自定义链执行完毕后使用返回,来返回原规则链。

简单说就是只能用低级功能,不能用高级功能.

 

最后修改后的命令文件是

# Generated by iptables-save v1.4.14 on Tue May 6 14:54:02 2014#知识:# http://blog.chinaunix.net/uid-9950859-id-98279.html# http://blog.slogra.com/post-232.html# http://www.cnblogs.com/bangerlee/archive/2013/02/27/2935422.html# http://blog.chinaunix.net/uid-26495963-id-3279216.html#1.PREROUTING (路由前)#2.INPUT (数据包流入口)##3.FORWARD (转发管卡)#4.OUTPUT(数据包出口)#5.POSTROUTING(路由后)*filter:INPUT ACCEPT [1:40]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]#允许本地回环接口(即运行本机访问本机)#-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT#允许本地回环接口(即运行本机访问本机)-A INPUT -i lo -j ACCEPT#允许所有本机向外的访问-A OUTPUT -j ACCEPT# arm linux 3.0不可用...#-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable#-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT# Allows xxxx port 允许访问 xxxx的端口#xxx或xxx可能有多个端口,请在这儿添加.#这儿是tcp-A INPUT -p tcp -m tcp --dport 1234 -j ACCEPT#这儿是udp#-A INPUT -p udp -m udp --dport 1234 -j ACCEPT# Allows Mysql port 允许访问 mysql 的端口#-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT-A INPUT -p tcp --dport 3306 -j ACCEPT# Allows SSH port #***如果不允许这个,你就先去一边哭会吧.#***如果不允许这个,你就先去一边哭会吧.-A INPUT -p tcp --dport 22 -j ACCEPT#-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT# 允许 ping 这个和禁用ping ,2选1.-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT#禁用ping#-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP#记录日志功能,arm linux 3.0不可用...#-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7# arm linux 3.0不可用...#-A INPUT -j REJECT --reject-with icmp-port-unreachable# arm linux 3.0不可用...#-A FORWARD -j REJECT --reject-with icmp-port-unreachable#拒绝 未定义规则.(注意:如果22端口未加入允许规则,SSH链接会直接断开。) REJECT-A INPUT -j DROP -A FORWARD -j DROP COMMIT# Completed on Tue May 6 14:54:02 2014# Generated by iptables-save v1.4.14 on Tue May 6 14:54:09 2014