【问题标题】:Update all instances of IP address on a server更新服务器上的所有 IP 地址实例
【发布时间】:2015-09-11 06:11:54
【问题描述】:

我们目前有一个动态提供的 IP 地址,并且正在切换到一个静态 IP 地址。因此,我需要更改我们 3 台 LAMP 服务器上的 IP 地址。这些服务器还为 DNS 运行 bind9,为电子邮件运行 postfix/dovecot。 (MySQL 实际上是作为 Percona 数据库集群运行的,这可能无关紧要。)

我认为我有一个很好的策略,但想与以前可能成功完成此操作的其他人一起检查我的逻辑。

这个概念是一次停止每台机器上的所有 web、数据库和邮件服务,将流量推送到剩余的两台服务器之一,并运行以下脚本将旧 IP 地址替换为新 IP 地址,然后重新启动服务器并尝试将流量推送回它,如果一切顺利,则继续集群中的下一个服务器。

我使用 grep -r 在系统中查找旧 IP 地址的实例,需要确保我没有遗漏任何需要考虑的重要内容。

find /etc/bind -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/postfix -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/apache2 -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/postfix -type f -print0 | xargs -0 sed -i 's/old-ip-address/new-ip-address/g'
find /etc/bind -type f -print0 | xargs -0 sed -i 's/rev.address.ip.old/rev.address.ip.new/g'

作为澄清点,grep -r 在 /etc/bind/zones 表、/etc/postfix 配置文件和 /etc/apache2 配置文件中找到了 IP 地址引用。用连字符分隔的 IP 地址也在 postfix 配置文件中找到。反向 IP 地址也在 /etc/bind/named.conf.local 文件中找到,也需要替换。

谁能看看我是否在这里遗漏了什么?我在生产环境中执行此操作……当然,这不是最理想的情况。

【问题讨论】:

    标签: dns server apache2.2 static-ip-address bind9


    【解决方案1】:

    对不起。看起来我在找到解决方案后让它变得陈旧。为了子孙后代,这似乎是在这一点上工作:

    $ORIGIN example.com.
    $TTL 12H
    ; @ symbol represents example.com.
    @   12H IN  SOA ns1.example.com.    hostmaster@example.com. (
    2015062954 ;serial
    30M ;refresh
    2M ;retry
    2W ;expire
    1D ;minimum TTL
    )
    NS  ns1.example.com.
    NS  ns2.example.com.
    MX  10  mail.example.com.
    IN  A   99.101.XXX.XXX
    IN  TXT "v=spf1 a mx ip4:99.101.XXX.XXX ~all"
    IN  SPF "v=spf1 a mx ip4:99.101.XXX.XXX -all"
    ns1 IN  A   99.101.XXX.XXX
    ns2 IN  A   99.101.XXX.XXX
    mail    IN  A   99.101.XXX.XXX
    IN  TXT "v=spf1 a mx ip4:99.101.XXX.XXX ~all"
    IN  SPF "v=spf1 a mx ip4:99.101.XXX.XXX -all"
    www IN  A   99.101.XXX.XXX
    dev IN  A   99.101.XXX.XXX
    demo    IN  A   99.101.XXX.XXX
    webconf IN  A   99.101.XXX.XXX
    stats   IN  A   99.101.XXX.XXX
    

    【讨论】:

      【解决方案2】:

      虽然使用管道连接到xargsfind 的想法听起来很合理,但我会以我15 年的经验告诉你这是个坏主意。我建议:

      1. 确定那些在框上运行的重要服务(您的 find 命令在这里很有效)
      2. 识别对定义地址的每个服务很重要的文件
      3. 备份这些文件(cp 到 .orig 效果很好)
      4. 创建包含新地址的新文件

      这样您可以快速过渡:

      cp somefile.new somefile
      

      快速退出:

      cp somefile.orig somefile
      

      此外,我希望区域文件包含实际的 DNS 条目,因此可以更改它们,但您可能需要重新加载命名才能使这些更改生效。后缀也是如此,您也需要后缀重新加载它们。

      编辑(我没有花时间实际加载这个区域,但它看起来相当正确):

      $ORIGIN example.com. 
      $TTL 12H @  IN  SOA ns1.example.com.    hostmaster@example.com. ( 
                      2015062660 ; 
                      30M ;refresh 
                      2M ;retry 
                      2W ;expire 
                      1D ;minimum TTL 
                      )   
      
              IN  NS  ns1.example.com. 
              IN  NS  ns2.example.com. 
      
              IN  A   99.101.XXX.X 
      
      example.com.    IN  MX  10  mail.example.com. 
      mail        IN  A   99.101.XXX.X 
              IN  TXT     "v=spf1 a mx ip4:99.101.XXX.X ~all
      
      ns1     IN  A   99.101.XXX.X 
      ns2     IN  A   99.101.XXX.X 
      www     IN  CNAME   example.com. 
      dev         IN  CNAME   example.com. 
      demo        IN  CNAME   example.com. 
      webconf     IN  CNAME   example.com. 
      stats       IN  CNAME   example.com. 
      

      编辑: glue records

      【讨论】:

      • 在看到 Rick 的帖子之前,我必须运行该脚本,事实上它在更新 IP 地址方面效果很好。但是出现了严重错误,我现在无法使用 URL 返回该站点。当我使用 MXTOOLBOX 进行 DNS 检查时,它返回检测到循环错误并显示旧 IP 地址。我已经敲了 6 个小时的头,试图找出问题所在,但完全不知所措。
      • 我想您现在正在谈论 DNS 问题。这主要是服务器上的 DNS 检查问题这是区域文件:
      • $ORIGIN example.com。 $TTL 12H @ IN SOA ns1.example.com。主机管理员@example.com。 (2015062660;30M;刷新 2M;重试 2W;过期 1D;最小 TTL)IN A 99.101.XXX.X IN NS ns1.example.com。在 NS ns2.example.com 中。 ns1 IN A 99.101.XXX.X ns2 IN A 99.101.XXX.X www IN CNAME example.com。 dev IN CNAME example.com。在 CNAME example.com 中演示。 CNAME example.com 中的 webconf。 CNAME example.com 中的统计信息。例子.com。 IN MX 10 mail.example.com。邮件 IN A 99.101.XXX.X @ IN TXT "v=spf1 a mx ip4:99.101.XXX.X ~all"
      • 是的,就是这样。看起来它应该可以正常工作。事实上,主站点 example.com 没有任何错误,但使用 MXTOOLBOX DNS 检查(甚至 www)的子站点抛出 Bad Glue 并且本地 NS 列表与父 NS 列表不匹配 99.101.XXX.X 由报告父级,但不是本地 99.101.XXX.X 是由父级报告的,但不是本地 99.101.XXX.0 是本地报告的,但不是由父级报告的,我终生无法弄清楚为什么。有什么想法我可能需要检查吗?
      • 你在父节点有粘合记录吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2022-09-27
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多