【问题标题】:Configuring iptables for NewRelic为 NewRelic 配置 iptables
【发布时间】:2014-08-04 18:31:06
【问题描述】:

我正在尝试为我的 Centos6 服务器配置 iptables。 我遇到了 NewRelic ips 的问题。 这是我的 iptables 文件:

*filter

#new relic
-A INPUT -s 50.31.164.0/24    -j ACCEPT
-A INPUT -s 103.21.244.0/22   -j ACCEPT
-A INPUT -s 103.22.200.0/22  -j ACCEPT
-A INPUT -s 103.31.4.0/22   -j ACCEPT
-A INPUT -s 104.16.0.0/12   -j ACCEPT
-A INPUT -s 108.162.192.0/18   -j ACCEPT
-A INPUT -s 141.101.64.0/18  -j ACCEPT
-A INPUT -s 162.158.0.0/15    -j ACCEPT
-A INPUT -s 162.247.240.0/22    -j ACCEPT
-A INPUT -s 173.245.48.0/20    -j ACCEPT
-A INPUT -s 188.114.96.0/20   -j ACCEPT
-A INPUT -s 190.93.240.0/20    -j ACCEPT
-A INPUT -s 197.234.240.0/22   -j ACCEPT
-A INPUT -s 198.41.128.0/17    -j ACCEPT
-A INPUT -s 199.27.128.0/21   -j ACCEPT

-A OUTPUT -d 50.31.164.0/24    -j ACCEPT
-A OUTPUT -d 103.21.244.0/22   -j ACCEPT
-A OUTPUT -d 103.22.200.0/22   -j ACCEPT
-A OUTPUT -d 103.31.4.0/22   -j ACCEPT
-A OUTPUT -d 104.16.0.0/12   -j ACCEPT
-A OUTPUT -d 108.162.192.0/18   -j ACCEPT
-A OUTPUT -d 141.101.64.0/18   -j ACCEPT
-A OUTPUT -d 162.158.0.0/15    -j ACCEPT
-A OUTPUT -d 162.247.240.0/22    -j ACCEPT
-A OUTPUT -d 173.245.48.0/20    -j ACCEPT
-A OUTPUT -d 188.114.96.0/20   -j ACCEPT
-A OUTPUT -d 190.93.240.0/20    -j ACCEPT
-A OUTPUT -d 197.234.240.0/22   -j ACCEPT
-A OUTPUT -d 198.41.128.0/17    -j ACCEPT
-A OUTPUT -d 199.27.128.0/21   -j ACCEPT

# Default chain policy
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP

COMMIT

现在的问题是新的遗物被阻止了,尽管它的所有 ips 都被打开了。 如果我将默认策略更改为:

 -P INPUT ACCEPT
    -P FORWARD DROP
    -P OUTPUT ACCEPT

这实际上禁用了 iptables,一切正常。

你有什么建议吗?

【问题讨论】:

    标签: unix iptables centos6 newrelic


    【解决方案1】:

    简,

    我将首先查看

    的输出
    iptables -nL
    

    确保当前运行的文件与您认为正在加载的文件相同(我假设是 /etc/sysconfig/iptables)。

    如果它们匹配,我会添加一些日志记录,或者从命令行通过

    iptables --append INPUT --jump LOG --log-prefix Input____ --log-level=$LOG_LEVEL
    iptables --append OUTPUT --jump LOG --log-prefix Output____ --log-level=$LOG_LEVEL
    

    或修改您的文件并添加

    -A INPUT -j LOG --log-prefix "Input____" --log-level 6
    -A OUTPUT -j LOG --log-prefix "Output____" --log-level 6
    

    # Default chain policy 行之前并重新加载防火墙。

    我会选择命令行选项,以免更改永久生效。

    日志的输出通常会转到 /var/log/messages。 (您可以检查 /etc/syslog.conf 以了解 kern.* 记录的位置。)

    您可以通过

    轻松找到记录的输出
    tail -f /var/log/messages | grep put____
    

    然后尝试访问其中一个 NewRelic ip。

    如果您需要更多帮助,请发布iptables -nLtail -f /var/log/messages | grep put____ 的输出

    【讨论】:

      【解决方案2】:

      似乎这些规则旨在确保您的系统可以与 New Relic 文档网站上列出的 IP 地址列表进行通信:

      https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/networks

      您现在拥有的规则是允许您的系统与 New Relic 之间进行通信的良好开端。我可以帮助连接到 New Relic,但我不能告诉你完整的防火墙规则应该是什么。防火墙是一个复杂的主题,当然不是一刀切。

      请不要认为我的补充会使上述规则列表变得全面。

      现在免责声明已经排除,代理/监视器无法向 New Relic 报告数据的可能原因很可能是因为这些规则阻止了所有 DNS 查找。

      对于要向 New Relic 发送数据的任何应用程序监视器(即 Java 代理、Ruby 代理等)或 Linux 服务器监视器,必须执行“collector.newrelic.com”的 DNS 查找。这个“收集器”实际上将代理或监视器重定向到另一个系统,即“真正的”收集器。

      使用上面列出的规则,当应用程序代理或服务器监视器尝试对“collector.newrelic.com”执行 DNS 查找时,它将失败。此故障将阻止代理或服务器监视器向 New Relic 报告任何数据。

      您可以通过添加如下一般内容来允许 DNS 查找:

      -A OUTPUT -p udp --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
      -A INPUT -p udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
      
      • 您可以通过明确包含 DNS 服务器的 IP 地址来进一步完善此规则。

      添加这些行并重新启动防火墙应该可以解决 New Relic 报告问题。

      最后一条评论,这里显示的iptables 规则也阻止所有传入的网络请求。如果您有网站或 Web 应用程序,这些规则将阻止任何人访问您的网站。这也应该在您修订的防火墙规则列表中得到解决。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-29
        • 2016-01-11
        • 2012-07-26
        • 2012-05-22
        • 2013-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多