On-premise解析AWS上的域名

本节我们将基于上节提到的第二种场景,搭建模拟环境进行实验

左侧的on-premise网段是172.31.0.0/16, 右侧AWS网段是10.100.0.0/16

image-20220912203048978

左边on-premise机器,我们用AWS VPC的机器来模拟

右边AWS的环境我们在第二章已经创建好对应的VPC,且在上节的实验创建了Private Hosted Zone, 并成功解析了ikun内网域名:

image-20220912204309622

准备工作:

将两个VPC进行peering。这样我们就能假装两者是通过VPN/DX连通了,反正我们只要网络连通就行,原理都是一样的


进入VPC页面,点击Create peering connections:

image-20220912204011763

选择两个VPC建立Peering:

image-20220912204054102

创建Peering完成后,还需要接收请求:

image-20220912204120866

这样172.31.0.0/1610.100.0.0/16两个网段的Peering建立完成。

我们还需要分别更新他们的路由表,这样才能真正互相访问:

image-20220912204743203

image-20220912204834292

此时在172.31.0.0/16下能ping通对方的机器。


接下来,我们的目标是让172.31.0.0/16的机器能够成功解析出ikun内网域名

安装bind9

10.100.0.0/16网段创建一台ubuntu 18.04机器

注意不是Amazon Linux系统,amazon linux不能安装bind9
选择ubuntu 18.04,如果是22.04启动bind9时会出错

创建ubuntu完成后,登录到上面,然后进入root:

ssh -i keypair1.pem ubuntu@34.208.0.253
sudo su

运行下面命令进行安装bind server:

apt update
apt install bind9 bind9utils bind9-doc

编辑/etc/bind/named.conf.options, 内容如下:

acl "trusted" {
              172.31.0.0/16;
              10.100.0.0/16;
              localhost;
              localnets;
              
};

options {
   directory "/var/cache/bind";
   recursion yes;
   allow-query { trusted; };
   forwarders {
         10.100.0.2;
          };

    forward only;
    dnssec-enable no;
    dnssec-validation no;
    dnssec-lookaside auto;
    auth-nxdomain no;
    listen-on-v6 { any; };

};
  • forwarders里面的IP,换成本VPC的DNS Server,可以从/etc/resolv.conf里面找到(本网段的第二个IP)

  • acl “trusted"里面的IP段是bind server的白名单,很明显我们要允许两个网段都能访问它。如果不在白名单内,请求这个bind server时会报以下错误:

image-20220912211739250

然后重启服务 service bind9 restart


此时使用本机当DNS服务器进行解析:

image-20220912211044113

这说明从本机当DNS服务器,可以成功解析内网域名。

bind server在本地的53端口监听:

image-20220912211126519

On-premise解析测试

注意一定要放通bind server安全组的53端口给两个网段访问:

image-20220912212950426

从内网的另一台机器进行nslookup,也可以成功解析

image-20220912211503902

172.31.0.0/31的机器,也可以成功解析:

image-20220912212121878

通过以上实验,我们搭建bind server来完成了on-premise到AWS的域名解析,这种方式需要我们搭建服务器,很明显高可用、弹性扩展是一个我们需要考虑的问题。所以引出了下一节的outbound/inbound endpoint