我在 Linux Mint 上。
我在路由器上分配了一个公共静态地址,并手动转发了用于 torrent 的给定端口,因此不是通过 UPnP,我在路由器和 Transmission bittorrent 应用程序中都禁用了 UPnP。
从某种意义上说,它的工作原理是传输显示端口已打开。但是,据我了解,当传输关闭时,端口也应该关闭。
iptables
但是,尽管传输已关闭,但仍有新数据包被接受。
为什么?我能做些什么?
这里是iptables -L -v
:
# iptables -L -v
Chain INPUT (policy DROP 7514 packets, 585K bytes)
pkts bytes target prot opt in out source destination
251 10040 DROP all -- any any anywhere anywhere ctstate INVALID
4330 371K DROP icmp -- any any anywhere anywhere
0 0 DROP igmp -- any any anywhere anywhere
4394 850K ACCEPT all -- lo any anywhere anywhere
1324K 462M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
6751 415K ACCEPT tcp -- any any anywhere anywhere tcp dpt:56874
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1484K packets, 2391M bytes)
pkts bytes target prot opt in out source destination
一分钟后也是一样:
# iptables -L -v
Chain INPUT (policy DROP 7869 packets, 611K bytes)
pkts bytes target prot opt in out source destination
251 10040 DROP all -- any any anywhere anywhere ctstate INVALID
4330 371K DROP icmp -- any any anywhere anywhere
0 0 DROP igmp -- any any anywhere anywhere
4437 863K ACCEPT all -- lo any anywhere anywhere
1324K 462M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
6983 430K ACCEPT tcp -- any any anywhere anywhere tcp dpt:56874
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1485K packets, 2391M bytes)
pkts bytes target prot opt in out source destination
至于评论:
netstat -nap | grep <my port number here>
该命令显示空结果。
答案1
当端口关闭时丢弃数据包不是 iptables 的工作,这是正常网络堆栈的工作(就像没有 iptables 一样)。 (准确地说:网络堆栈不只是丢弃数据包,它还会礼貌地通知对方没有任何监听。)
仅仅因为 iptables 接受数据包并不意味着有任何东西在监听。
更新:正如评论中提到的,存在风险。但这不是来自在关闭的端口上接受数据包本身,而是来自不同之处与所有其他端口相比,此端口上的行为:丢弃与拒绝。解决办法是不掉落所有其他端口上的数据包,但拒绝它们就像网络堆栈所做的那样:
如果数据包是 TCP,则使用-j REJECT --reject-with tcp-reset
,对于 UDP 和其他基于端口的协议,使用-j REJECT --reject-with icmp-port-unreachable
。由于每个简单的 DROP 现在都分为两个规则,因此最好创建一个新链仅用于拒绝,并跳转到您之前想要删除的任何位置的该链。
使用端口映射器来nmap
检查结果。