我正在尝试使用 gufw 在 linux 中打开端口 80。这是我的规则:
-A ufw-user-output -d 192.168.0.100/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A ufw-user-output -d 192.168.0.100/32 -p udp -m udp --dport 80 -j ACCEPT
这是我检查时的输出ufw status
Status: active
To Action From
-- ------ ----
192.168.0.100 80 ALLOW Anywhere
192.168.0.100 80 ALLOW OUT Anywhere
我已经使用此设置从我的 tp-link 路由器设置了端口转发(检查第 2 项):
但是当我检查我的开放端口时端口检查工具,它仍然告诉我端口 80 已关闭。你能帮我解决我的问题吗?谢谢。
答案1
“简单的防火墙”(gufw)正在使用 iptables 来配置 ip 过滤器。所以你应该了解 ip 过滤器及其工作原理。 iptables 知道过滤 ip 的下表:
过滤器-默认表。它专为纯过滤而设计。如果您不使用“-t,则它是默认使用的。 nat - 该表用于网络地址转换。就像它将用于 DSL 或 WLAN 路由器一样。它还用于将一个公共地址与专用网络结合起来,例如 192.168.xx mangle - 该表用于数据包操作。 raw - 该表可用于连接跟踪的异常。
所有这些表都使用链:
INPUT -tables:filter, mangle :该链上的规则将在所有前往本地进程的数据包上执行(例如 ip 地址/端口) OUTPUT -tables:filter, nat, mangle, raw :该链上的规则将在所有传出数据包(来自本地进程)上执行 FORWARD -tables:filter, mangle :该链上的规则用于所有路由数据包 PREROUTING -tables:nat, mangle, raw :此链上的规则用于路由之前的所有数据包 POSTROUTING -tables:nat, mangle :该链上的规则将在路由操作发生后执行
“坏”的事情是 gufw 使用用户定义的链,它将在默认表中使用。到目前为止还不错,但是只要您不了解 iptables 的工作原理,就可能很难了解 gufw 的底层原理。
那么让我展示一下如何使用命令行中的本机 iptables 来实现这个简单的规则(这就是您所寻找的)
你需要的是:
sudo iptables -I 输入 1 -p tcp --dport 80 -j 接受 #1 sudo iptables -I 输出 1 -p tcp --sport 80 -j 接受 #2
#1 这将在表链“INPUT”的第一个位置插入一个链到默认表“filter”,并允许(接受)来自任何地方的 tcp ip 流量前往端口 80 #2 这将插入一个链到默认表表“filter”位于表链“OUTPUT”的第一个位置,并允许(接受)来自端口 80 上的本地进程并向外发送到任何目标 IP 地址和任何端口号的 TCP IP 流量。
因此,我希望这将有助于将您的知识传授给我们 gufw,或者也许您可以抛出 gufw 并使用本机 iptables - 因为对于 98% 的所有用例来说,它并不那么复杂:-) 另外,也许这个链接将有助于与ufs - gufw 旁边的命令行工具:https://help.ubuntu.com/lts/serverguide/firewall.html