我只想浏览网页并成为网络服务器但它不起作用。
我的规则是:
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
-A INPUT -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
另外,我不太清楚这些状态。哪些状态对我而言是无用的,为什么?
非常感谢你的帮助。
编辑
我仍然无法上网。有了这些规则,我希望我的服务器成为 Web 服务器,同时能够从这台机器上网(这只是为了练习)
以下是我更新的规则。它们有什么问题?(我为 DNS 端口添加了两行,不确定它们是否有用或是否正确)
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
-I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp --dport 53 -j ACCEPT
-A INPUT -p tcp --dport 53 -j ACCEPT
答案1
您的INPUT
规则看起来好像是在尝试允许传入连接到本地计算机上的 Web 服务器。您的OUTPUT
规则看起来好像是在尝试允许从本地计算机到任何外部 Web 服务器的传出连接。您想实现哪个目标?两者兼而有之?
无论如何,您需要对 ESTABLISHED,RELATED 规则更加宽容。您希望允许所有属于已建立连接的数据包,而不仅仅是那些具有目标端口 80 的数据包。特别是,来自 Web 服务器的回复没有目标端口 80(它们有源端口 80),您不允许它们。通常,您会在每个链的顶部有一个规则,允许所有已建立和相关的数据包:
-I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-I OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
完成此操作后,您只需允许形成新连接的初始数据包即可。要允许访问本地 Web 服务器,请执行以下操作:
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
...并允许从本地机器访问外部 Web 服务器:
-A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
但对于第二种情况(允许从本地计算机访问外部 Web 服务器),您是否考虑过这是否是您真正想要的?您只想让 HTTP 通过,甚至连 DNS 也不通过?