iptables错误:未知选项--dport


19

定义规则时,命令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.

上面的add rule命令只是启用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。你们可以提供的任何帮助和指示都很棒。

编辑:

奖励问题:我还计划配置端口转发。是否仍然需要设置规则以接受通过特定端口的传入连接?

Answers:


27

首先提供一个-p类似-p tcp或的选项-p udp

例子:

iptables -A INPUT -p tcp --dport 22 -m状态--state新-j DROP

iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT

您也可以尝试,-p all但我从未做过,并且在示例中找不到太多的支持。


1
我只是试过了-p all,却得到了完全一样的错误。unknown option --dport。它可以工作,-p tcp但在这种情况下并不能真正帮助我,因为它只会导致相同的问题:为所有内容定义单独的tcp / udp规则。
Calyo Delphi 2013年

根据我的经验,使用all从未与指定端口一起使用。但是,您可以针对不同的协议考虑规则,而不是针对不同的协议使用多个规则。根据协议创建规则,然后使用该multiports选项将一些规则分组在一起。
canadmos 2013年

因此,如果要启用Terraria和Minecraft连接,可以使用多端口打开7777和25565,并为每对端口创建TCP和UDP规则?
Calyo Delphi 2013年

3
-p选项必须是具有端口概念的单个协议(-p ICMP --dport whatever出于明显的原因,它们也不起作用)。
Falcon Momot 2013年


3

@dmourati和@diegows已经回答了您的第一个问题,所以我将解决您的第二个问题。还有奖金问题。而且我还将提供奖金小费;)

iptables -P 接受内置链。在filter表中,这将是INPUTOUTPUTFORWARD链。

端口转发不会被INPUT链处理,因此您不必在INPUT链中打开端口。但是,它确实FORWARD链处理。请注意这一点。

温馨提示:学习和/或进行故障排除时iptables,的输出iptables-save要比的输出好iptables -L -v --line-numbers。试试看,您会惊喜的:)


+1是个不错的答案,但您的最后评论让我有些惊讶。我讨厌iptables-save输出中诊断问题;为什么您觉得比它更好iptables -L -n -v [--line-numbers]
MadHatter支持Monica

@MadHatter简单示例:您可以轻松地看到带有--dport选项的规则实际上-p tcp位于前面。您还可以查看规则处理如何/何时从内置链(例如INPUT)跳转到自定义链(例如ACCEPT_TCP_UDP)。这两个重要信息在的输出中可见iptables -L -n
pepoluan 2013年

3
另一个好处是:我可以做iptables-save > somefilesomefile使用vim 进行编辑,然后进行iptables-apply -t 600 somefile测试。如果我无意间将自己挡在外面,则600秒后规则将恢复。
pepoluan

奖金提示非常感谢,并且已经被使用。iptables-save在问这个问题之前,我一直在帮助自己从原始配置转储中学习。但是,我没想到该FORWARD链是我在端口转发方面需要注意的地方。我将不得不阅读有关。
2014年

@CalyoDelphi如果您搜索“ netfilter数据包流程图”,则会看到每个表和链的适用位置;-)
pepoluan 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.