这个问题可能有点愚蠢,但是如何在不定义接口的情况下在多个接口上打开一个端口?例如,如何在所有接口上打开端口 22?
在我的计算机上,我有一些动态的接口,它们可能可用也可能不可用,所以我必须设置“通用”规则。
该代码对我来说不起作用,但我不知道原因:
# My default policy is to drop the input.
# The other policies are required like that.
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
#Open port 22 on all interfaces ?
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
所以显然最后一行有问题......但我看不出来?
编辑:iptables -nvL
root@machine:/etc/rc.d# iptables -nvL
Chain INPUT (policy DROP 22 packets, 1378 bytes)
pkts bytes target prot opt in out source destination
18 1484 ACCEPT all -- * * 192.168.0.0/24 192.168.0.1
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 236 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- eth1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- 192.168.0.1 * 0.0.0.0/0 0.0.0.0/0
24 1362 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:443
Chain FORWARD (policy ACCEPT 490 packets, 194K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 49 packets, 35544 bytes)
pkts bytes target prot opt in out source destination
答案1
根据您的iptables -nvL
输出,你有一条规则来丢弃所有进入 eth1 的流量。这很可能是您的问题。
您尝试添加的规则使用-A INPUT
,因此它将规则附加到链的末尾。鉴于您的-nvL
输出中还有其他规则不在您的脚本中,我猜您有一些其他规则首先在其他地方应用。
解决方案这里将把规则改为-A INPUT
在-I INPUT
规则开头、DROP
规则之前添加。