是否可以将 UFW 配置为允许家庭网络中计算机之间的 UPNP?
如果我关闭防火墙,一切都会正常。我可以在系统日志中看到防火墙阻止了我。我尝试过各种提示,例如 open 1900、1901、5353,这些似乎都是随机尝试。我知道问题是 UPNP 请求随机端口,而 UFW 只是阻止它。
答案1
你似乎很接近答案。最简单的方法是暂时关闭防火墙,让媒体盒运行几分钟,然后检查 lsof 的输出
lsof -i :1025-9999 +c 15
-i 列出与开放端口相对应的“文件”,使用 -i4 仅限制为 IPv4。号码列表将其限制为端口号列表 - 如果您想要所有内容,请忽略它。 +c 位只是为您提供与端口关联的更有意义的命令名称
netstat -lptu --numeric-ports
这列出了所有活动端口及其协议和源/目标地址。
有了这些信息,您就可以构建一个脚本来正确设置 ufw。这是我的脚本示例:
#!/bin/sh
# Set up local firewall using ufw (default install on Ubuntu)
# @see /etc/services for port names
# obtain server's IP address
SERVERIP=192.168.1.181
# Local Network
LAN="192.168.0.0/255.255.0.0"
# disable firewall
ufw disable
# reset all firewall rules
ufw reset
# set default rules: deny all incoming traffic, allow all outgoing traffic
#ufw default allow incoming
ufw default deny incoming
ufw default allow outgoing
# open port for SSH
ufw allow OpenSSH
# open port for Webmin
ufw allow webmin
# open ports for Samba file sharing
ufw allow from $LAN to $SERVERIP app Samba
ufw allow to $LAN from $SERVERIP app Samba
#ufw allow from $LAN to $SERVERIP 137/udp # NetBIOS Name Service
#ufw allow from $LAN to $SERVERIP 138/udp # NetBIOS Datagram Service
#ufw allow from $LAN to $SERVERIP 139/tcp # NetBIOS Session Service
#ufw allow from $LAN to $SERVERIP 445/tcp # Microsoft Directory Service
# open ports for Transmission-Daemon
ufw allow 9091
ufw allow 20500:20599/tcp
ufw allow 20500:20599/udp
# Mediatomb
## upnp service discovery
ufw allow 1900/udp
## Mediatomb management web i/f
ufw allow 49152
# Plex Media Server
## Manage
ufw allow 32400
# open port for MySQL
ufw allow proto tcp from $LAN to any port 3306
# open ports for web services
ufw allow 80
ufw allow 443
ufw allow 8000:9999/tcp
ufw allow 8000:9999/udp
# Deny FTP
ufw deny 21/tcp
# Webmin/usermin allow
ufw allow webmin
ufw allow 20000
# open port for network time protocol (ntpd)
ufw allow ntp
# Allow Firefly (DAAP)
ufw allow 3689
# enable firewall
ufw enable
# list all firewall rules
ufw status verbose
您应该能够从 Mediatomb 部分看到 uPNP 正在 UDP(不是 TCP)上的标准端口 1900 上工作,并且双向开放,这是您的主要端口。但您也可以看到特定服务还需要许多其他端口。