UFW 阻止 upnp 端口映射

aaa*_*aaa 7 server upnp networking ufw 16.04

我正在尝试使用 portmapper-2.1.1 ( https://github.com/kaklakariada/portmapper ) 来获取到我的 ubuntu 16.04LTS 机器的 upnp 映射。

我已将 UFW 配置为允许所有传出并阻止传入(除了一些特定端口)。

我认为这会起作用,因为我正在 ubuntu 盒子上运行 portmapper(例如,传出),但事实并非如此。我认为这是由于 upnp 寻找客户的设置方式造成的。需要明确的是,在禁用 UFW 的情况下,端口映射器将按预期工作。

我的第一个想法是只允许 upnp 服务“回复”的端口,但这似乎是随机的。例如(来自我的 UFW 日志):

4 月 26 日 19:07:34 [UFW 块] IN=enp2s0 OUT= SRC=192.168.1.1 DST=192.168.1.161 LEN=411 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=1900 DPT= 41927 LEN=391

4 月 26 日 19:33:32 [UFW 块] IN=enp2s0 OUT= SRC=192.168.1.1 DST=192.168.1.161 LEN=411 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=1900 DPT= 60212 长=391

(192.168.1.1是我的路由器,192.168.1.161是ubuntu盒子)

我不想为此打开大多数/所有端口以接收传入的 udp 数据包,所以问题是:是否有 UFW/iptables 规则允许其工作,而不仅仅是“允许一切”?

小智 7

看起来您需要允许的数据包具有以下特征:

  • 它们通过接口 enp2s0 传入
  • 他们的源 IP 地址为 192.168.1.1
  • 他们的源 UDP 端口为 1900

因此,您需要允许所有来自 192.168.1.1 端口 1900 的传入 UDP 数据包。

使用此命令添加规则:

sudo ufw allow from 192.168.1.1 port 1900 to any proto udp
Run Code Online (Sandbox Code Playgroud)

查看添加的规则:

me@ubuntu:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
Anywhere                   ALLOW       192.168.1.1 1900/udp        
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!