我安装firewalld
在我的 Debian 10 笔记本电脑上。现在Transmission无法正常上传。如果我进入“编辑”->“首选项”->“网络”并单击“测试端口”,它会显示该端口已关闭。如果我systemctl stop firewalld
重新启动传输,则它表示端口已打开。
如何在防火墙下使用传输?
答案1
首先,在“首选项”窗口的同一网络选项卡中,确保未选中“每次启动传输时选择一个随机端口”。还要检查侦听端口的设置。默认端口号为 51413。
在您的防火墙中,允许上面设置的 TCP 端口号。由于您使用的是firewalld
,因此您可以通过允许命名服务“transmission-client”来允许端口 51413。
如果您的路由器支持 NAT-PMP,或者您为路由器配置了手动端口转发,这就是您所需要的!传输现在可以与您的防火墙一起使用。
NAT-PMP 在 Apple 路由器上可用。它也可以在任何具有最新版本的开源 MiniUPnPd 的合理编写的路由器上使用。这在 OpenWRT 路由器上效果很好:-)。
或者,如果您需要 IPv6(当前版本的 IP:-) 支持,请假装我说的是 NAT-PCP 而不是 NAT-PMP。
否则,您可能依赖于 uPnP 端口转发。这是一个问题,抱歉。如果您不想在路由器上配置手动端口转发,此页面上有一些可能的技术:Fedora 防火墙支持 UPnP?
允许 uPnP 的糟糕方法,你不应该使用
1.firewalld服务“upnp-client”
firewalld
有一个命名服务“upnp-client”。允许此服务可能会让传输工作。但允许此服务意味着攻击者可以绕过任何 UDP 端口的防火墙(如果他们从 UDP 端口 1900 进行传输)。
firewalld
“upnp-client”的服务是使用 定义的<source-port ... />
。这与大多数服务定义<port ... />
中使用的不同。firewalld
有一个关于此的附加免责声明,但firewalld
界面未能显示它。
$ cat /usr/lib/firewalld/services/upnp-client.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>UPnP Client</short>
<description>Universal Plug and Play client for auto-configuration of network routers (use only in trusted zones).</description>
<source-port port="1900" protocol="udp"/>
</service>
2. 迷你sdpd
在以前版本的 Debian 中,安装 Transmission 会自动安装minissdpd
.传输可用于minissdpd
接收 uPnP 响应,这似乎与防火墙配合使用效果更好。如果您在防火墙中允许 UDP 端口 1900,则 Transmission 将能够设置 uPnP 端口转发。
minissdpd
需要配置它应该运行的网络接口名称列表。 Debian 将建议一个默认列表。如果您有多个可能的网络接口(例如 Wi-Fi 和有线以太网),请务必仔细检查这一点。
运行后minissdpd
,请记住在防火墙中允许 UDP 端口 1900,然后重新启动 Transmission。
我注意到这种方法在 Fedora Linux 上不起作用。 minissdpd
在 Fedora 中不可用,并且 Fedora 不构建支持 libminiupnp 的 Transmission。