今天我要求我的主机提供商封锁除 53 端口之外的所有 UDP 端口。由于每天都有 UDP 攻击,这是目前阻止我的线路泛滥的唯一选择。
现在,由于阻止已经到位,我无法再获取任何东西。
[root@s1 wupload]# wget http://www.google.com
--2011-08-15 11:56:28-- http://www.google.com/
Resolving www.google.com... failed: Temporary failure in name resolution.
wget: unable to resolve host address `www.google.com'
服务器本身没有任何变化。仅在路由器级别。端口 53 仍处于打开状态,我看到通过 iptables 传入的命中。
我运行的是 CentOS64 5.6。
为了使 wget 和 cURL 正常工作,还需要打开哪些端口?
答案1
要解析主机,您需要 UDP 53传出(我假设您位于状态防火墙后面)。要使用默认端口选项的 wget 和 curl,您需要 TCP 80传出。您不需要为此特定目的使用任何传入端口。
要检查是否可以解析主机,可以使用 dig 命令。如果您希望使用以下命令解析 www.google.com开放DNS,你需要输入以下命令:
挖掘@208.67.222.222 www.google.com
你应该得到以下答案:
; <<>> DiG 9.7.3 <<>> @208.67.222.222
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55450
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 516333 IN NS d.root-servers.net.
. 516333 IN NS l.root-servers.net.
. 516333 IN NS h.root-servers.net.
. 516333 IN NS k.root-servers.net.
. 516333 IN NS g.root-servers.net.
. 516333 IN NS i.root-servers.net.
. 516333 IN NS f.root-servers.net.
. 516333 IN NS c.root-servers.net.
. 516333 IN NS j.root-servers.net.
. 516333 IN NS a.root-servers.net.
. 516333 IN NS m.root-servers.net.
. 516333 IN NS b.root-servers.net.
. 516333 IN NS e.root-servers.net.
;; Query time: 36 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Mon Aug 15 19:17:11 2011
;; MSG SIZE rcvd: 228
挖掘答案可能因主机而异,但您不应该得到任何空的“答案部分”。
如果您可以使用 dig 解析 OpenDNS,但无法使用 wget 或 curl 解析,则意味着您的系统未配置可访问的 DNS 服务器。如果是这种情况,请考虑编辑 /etc/resolv.conf
答案2
它们阻止了绑定到除 53 之外的所有 UDP 端口的入站流量 - 这对于您所在位置的面向互联网的 DNS 服务器来说非常好,但对于客户端解析来说却不是那么好。
DNS 客户端发送流量到端口 53,具有较高的源端口;DNS 服务器的响应具有 53 的源端口和客户端使用的较高端口的目标端口。
因此,您的 ISP 过滤器会让您的 DNS 解析陷入困境。如果他们开放您的 DNS 客户端可能使用的整个高范围,则可能会允许大量洪泛通过;同样,将源端口限制为 53 并不能保证阻止精心策划的洪泛。
最好的解决方案可能是让所有客户端解析都由特定的上游 DNS 解析器完成,并让您的提供商将这些系统从 UDP 过滤器中免除。