![Ubuntu 上有状态数据包检测吗?](https://linux22.com/image/1051013/Ubuntu%20%E4%B8%8A%E6%9C%89%E7%8A%B6%E6%80%81%E6%95%B0%E6%8D%AE%E5%8C%85%E6%A3%80%E6%B5%8B%E5%90%97%EF%BC%9F.png)
默认情况下,Ubuntu 没有开放端口(例外:Avahi 和 dhcp)。
假设我的系统通过直接方式连接到互联网(未使用硬件防火墙):如果我要将 UDP 数据包发送到例如 124.32.12.3:53。为了能够得到答案,程序必须说“如果在 30 秒内(超时)有来自 124.32.12.3(源端口为 53)的 UDP 数据包到来,则欢迎它。我将丢弃所有其他数据包。”
有人能告诉我 Ubuntu 上哪个程序/模块默认处理这个问题吗?
非常感谢!
答案1
iptables(或 ufw,它只是 iptables 的一个前端)会执行您想要的操作。UDP 数据包的默认响应超时为 30 秒(或非常接近)。因此,您只需允许与答案相关的数据包返回并丢弃其余数据包(以下假设您的外部 IF 是 eth0):
sudo iptables -A INPUT -i eth0 -d your_external_IP_address -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i eth0 -d your_external_IP_address -j DROP
请注意,这不是全部答案。如果要使用 iptables,则必须考虑您的总体要求并相应地处理可能的其他使用要求。
有类似的最小用例您可以参考一下前几天的报道。