指令 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
表中,這將是INPUT
、OUTPUT
和FORWARD
鏈。
連接埠轉送不由鏈處理INPUT
,因此您不必在INPUT
鏈中開啟連接埠。它做不過,由鏈條處理FORWARD
。對此要小心。
額外提示:當學習和/或排除故障時iptables
, 的輸出iptables-save
比 的輸出更好iptables -L -v --line-numbers
。試試一下,你會感到驚喜:)