当前位置: 首页 > 知识库问答 >
问题:

OpenVPN和VPC对等互连-如何使用BIND9解析.compute.internal两个不同帐户中的域

南门峰
2023-03-14

在我们公司,我们有三个AWS帐户,主要的一个,用作IAM的“根”帐户,并托管一个OpenVPN访问服务器。另外两个帐户是pro和stg。每一个都有自己的专有网络,具有不同的IP范围,我们在root和pro帐户之间有一个专有网络对等网络,在root和stg之间有另一个专有网络对等网络。IP路由已经设置好,一切都在这方面得到控制。

(很抱歉,我还不能上传图像,所以这里有链接)VPN VPC对等

问题来自DNS解析。设置如下:

我已经在OpenVPN服务器中安装了BIND9,以允许对私有托管域进行DNS转发,使用的配置类似于“命名”中的配置。conf.local

zone "stg-my-internal-domain.com" IN {
    type forward;
    forward only;
    forwarders { 10.229.1.100;10.229.2.100; };
};


zone "pro-my-internal-domain.com" IN {
    type forward;
    forward only;
    forwarders { 10.228.1.100;10.228.2.100; };
};

还有两个Route53入站解析器(在每个VPC上运行的简单绑定服务器也可以工作),分别运行在10.229.1.100和10.229.2.100中,用于stg和10.228.1.100 10.228.2.100中,用于pro

VPN客户端具有使用Access Server作为DNS解析器的OpenVPN配置文件。

从我的客户端,我可以解析my-service-1.pro-my-internal-domain.commy-service-2.stg-my-internal-domain.com完美,但当我想解析内部域名时,问题就来了,比如AWS在每个VPC内部生成的域名。

我知道这是一种反模式,我应该尽可能多地使用私有域,但在某些情况下,如EMR集群,YARN和Hadoop管理器使用指向内部AWS名称的链接,这使得解析不可能。

所以我的问题是:如果主地址失败,有没有办法将DNS配置为将解析委托给辅助地址?

我可以为eu-west-1设立货运代理。计算使用所有帐户解析程序的内部区域,但DNS规范规定,只有在无法访问第一个名称服务器时,才会使用第二个名称服务器,因此,只要它回答一个空的或“未知”的响应,它仍然是一个有效的响应,并且不会查询第二个。

非常感谢您的帮助!

共有2个答案

钮誉
2023-03-14

如果您的VPN与您的EMR群集(或任何其他计算资源)位于同一区域,AWS仅支持这些内部ipv4 DNS主机名的DNS解析。我已经寻求他们的支持,他们已经证实了这一点。

例如,我在法兰克福有一个AWS客户端VPNendpoint设置,在爱尔兰有一个EMR集群。我正在将专有网络的私有DNS服务器推送到我的主机(并且在两个专有网络中启用了所有其他相关配置),以便我可以解析私有路由器53 DNS区域记录。

当我连接到VPN时,

我无法解决这个问题:

$ dig +short ip-10-11-x-x.eu-west-1.compute.internal
$

但我可以解决以下问题,这是一个与VPNendpoint位于同一区域的实例

$ dig +short ip-10-10-x-y.eu-central-1.compute.internal
10.10.x.y

要么将EMR集群移动到与VPN相同的区域,要么反过来移动。

但最简单的解决方案可能是只使用一个Chrome插件(这里是一个例子),自动重定向ip-x-y-z。。。指向x.y.z IP的URL。

龚振
2023-03-14

为什么不将内部主机名更改为公共dns名称?当然,这些服务正在使用分配给它们的主机名。你可以改变它。看见https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html

您可能(也可能不)需要为每个分配固定的私有IP。无论如何,在公共DNS区域中发布此私有IP。然后您应该能够正确解析这些名称。请注意,您还可以在启动时在每个实例上运行脚本,以更新主机名和dns记录。

有关公共DNS中私有IP地址的详细讨论,请参阅https://serverfault.com/questions/4458/private-ip-address-in-public-dns

以下是最佳答案供参考:

有些人会说,公共DNS记录不应该披露私有IP地址。。。。考虑到您正在为潜在攻击者提供利用私有系统可能需要的一些信息。就我个人而言,我认为混淆是一种糟糕的安全形式,尤其是当我们谈论IP地址时,因为总的来说,它们很容易被猜测,所以我不认为这是一种现实的安全妥协。这里更重要的考虑是确保您的公共用户不会将此DNS记录作为托管应用程序的正常公共服务的一部分。ie:外部DNS查找以某种方式开始解析到他们无法访问的地址。除此之外,我看不出为什么把私人地址记录到公共空间是一个问题的根本原因。。。。尤其是当您没有备用DNS服务器来承载它们时。如果您决定将此记录放入公共DNS空间,则可以考虑在同一服务器上创建一个单独的区域来保存所有“私有”记录。这将更清楚地表明,它们是私人的。。。。然而,只要有一张A唱片,我可能就不会麻烦了。

 类似资料:
  • 有没有办法在AWS帐户中找到未使用的VPC? 我指的是没有任何EC2实例、RDS和其他相关服务的VPC。 一种方法是在正在运行的实例、RDS和其他服务中使用VPC ID进行搜索,以确定它是否在使用中。有没有其他方法或AWS CLI来查找未使用的VPC?

  • 我正在尝试将在GCP库伯内特斯引擎集群上运行的Java应用程序与Mongo Atlas集群(M20)连接起来。以前,当我没有打开VPC Peering并且我使用常规连接字符串时,它运行良好。但我现在正在尝试使用VPC Peering,在我的GCP项目中使用VPC网络。我按照https://docs.atlas.mongodb.com/security-vpc-peering/.中的步骤选择了192

  • 我所做的: 我在这些帐户之间创建了VPC对等连接 还连接到每个VPC的Internet网关 路由表也已配置(允许来自两侧的流量) 案例1: “ErrorMessage”:“调用Invoke操作时发生错误(AccessDeniedException):User:arn:aws:sts::Account-a:Assumed-Role/Role-for-VPC-peering-test/lambda1_

  • 我有一个根帐户是1234(帐户ID),我有启用MFA的身份验证,我的用户名是myuser12。我可以使用帐户ID、用户名和密码登录。它将请求MFA令牌代码。一旦我输入了令牌代码。我可以在我的根帐户下查看特定位置的实例。 我可以使用我的角色(在我的情况下,所有帐户的角色都是相同的)以及该角色的任何别名将角色切换到新帐户(5678)。切换角色完成后,我可以在特定位置看到新帐户下的所有实例。 通过网络控

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 7年前关闭。 改善这个问题 我有一些需要汇总的表。它们也没有链接,但是所有表的顺序是相同的。 基本上,我想采用以下两个表: 要获得这样的输出以输入到图形应用程序中,请执行以下操作: 问题答案:

  • 希望将一个位于VPC中的AWS lambda连接到另一个不在VPC中但位于同一区域和帐户中的lambda。 > 调用方lambda“lambda_1”的代码: @override public String handleRequest(final Object input,final Context Context){logger.log(Context.getFunctionName()+“in