arm,iptables: No chain/target/match by that name.


最近由於項目需要,需要打開防火牆功能.

 

公司有

arm linux 3.0
x86 linux 3.2
x86 linux 2.4

的三個嵌入式.都需要打開防火牆功能.

 

執行“whereis iptables”命令,如果結果不為空,則說明防火牆軟件已安裝

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

 

 

輸入iptables -L 命令查看配置 

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain 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 7
iptables: No chain/target/match by that name.

網上搜索是缺少內核模塊

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

是沒有輸出的.

root@wheezy-armel:~  9:31:04 
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables: 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM