iptables 錯誤:未知選項 --dport

iptables 錯誤:未知選項 --dport

指令 iptables 不再辨識定義規則時最常用的選項之一:--dport

我收到此錯誤:

[root@dragonweyr /home/calyodelphi]# iptables -A INPUT --dport 7777 -j ACCEPT_TCP_UDP
iptables v1.4.7: unknown option `--dport'
Try `iptables -h' or 'iptables --help' for more information.

上面的新增規則指令只是啟用 Terraria 連線的範例。

這是我目前的準系統 iptables 配置(listiptables別名iptables -L -v --line-numbers),很明顯它--dport在過去已經起作用:

root@dragonweyr /home/calyodelphi]# listiptables 
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       39  4368 ACCEPT     all  --  lo     any     anywhere             anywhere            
2      114 10257 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
3        1    64 ACCEPT     tcp  --  eth1   any     anywhere             anywhere            tcp dpt:EtherNet/IP-1 
4       72 11610 ACCEPT     all  --  eth1   any     anywhere             anywhere            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 91 packets, 10045 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain ACCEPT_TCP_UDP (0 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            

我還嘗試定義一個自訂鏈(靈感來自這個問題)來接受 tcp 和 udp 連接,這樣我就不必為我想要啟用 tcp 和 udp 的所有內容(例如 Minecraft 或 Terraria 伺服器,或完全是另一個服務)定義兩個規則。但即使這樣也不行:

[root@dragonweyr /home/calyodelphi]# iptables -P ACCEPT_TCP_UDP DROP
iptables: Bad built-in chain name.

用禮貌的話來說,這變得非常令人沮喪(與此相關的咒罵量會讓水手告訴我要注意我的嘴)。我的 Google-fu 很糟糕,所以我還沒有找到解決方案。我在路由器上運行 CentOS 6.5。你們能提供的任何幫助和指示都會很棒。

編輯:

額外問題:我還計劃配置連接埠轉送。是否還需要設定規則來接受特定連接埠上的傳入連線?

答案1

首先給一個-p選項,如-p tcp-p udp

例子:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP

iptables -A 輸入 -p udp --dport 53 --sport 1024:65535 -j 接受

您也可以嘗試,-p all但我從未這樣做過,並且在範例中沒有找到太多支援。

答案2

另一個可能的解決方案是您忘記以 root 身份運行。我剛剛在使用 Debian 教程時遇到了這個問題

$ iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1  --dport 80 -j REDIRECT --to-ports 8080
iptables v1.8.2 (nf_tables): unknown option "--dport"
$ sudo iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
# OK

答案3

如果使用 --dport,則需要協定 (-p)。例子:

-p tcp

答案4

@dmourati 和 @diegows 已經回答了你的第一個問題,所以我將解決你的第二個問題。還有獎金問題。我還會贈送額外的小費;)

iptables -P 僅有的接受內建鏈條。在filter表中,這將是INPUTOUTPUTFORWARD鏈。

連接埠轉送不由鏈處理INPUT,因此您不必在INPUT鏈中開啟連接埠。它不過,由鏈條處理FORWARD。對此要小心。

額外提示:當學習和/或排除故障時iptables, 的輸出iptables-save比 的輸出更好iptables -L -v --line-numbers。試試一下,你會感到驚喜:)

相關內容