You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

EC2实例通过VPN连接时无法解析私有DNS问题咨询

解决OpenVPN连接后AWS私有DNS解析失败的问题

首先直接给你结论:是的,你需要使用AWS Route 53私有托管区域来解决这个问题,而且它完全可以和你的公共DNS服务商Hover共存,两者互不干扰。下面我一步步给你讲清楚原理和解决方法:

为什么当前私有DNS解析失败?

当你通过VPN连接到VPC后,虽然网络路由已经打通(所以私有IP能正常SSH),但你的VPN客户端默认可能还是用本地的公共DNS服务器(比如你的ISP或者8.8.8.8)来解析域名。而公共DNS服务器根本不知道ec2.internal这类AWS私有域名对应的IP,自然会提示无法解析。

什么是AWS私有托管区域?

简单来说,它是AWS Route 53提供的、专门服务于你的VPC内部的域名解析服务:

  • 它只对关联的VPC生效,外部互联网完全无法访问这些解析记录,安全性很高
  • AWS默认会为每个VPC自动创建一个ec2.internal的私有托管区域,里面包含了VPC内所有EC2实例的私有DNS记录(就是你用的ip-172-31-aa-bbb.ec2.internal这种)
  • 当你的设备通过VPN接入VPC后,只要把DNS请求指向VPC的DNS服务器,就能通过这个私有托管区域解析到对应的私有IP

能不能和Hover共存?

完全没问题!两者的职责完全分开:

  • Hover是你的公共域名服务商,负责解析你对外公开的域名(比如yourdomain.com这类面向互联网的地址)
  • AWS私有托管区域只处理VPC内部的私有域名(比如ec2.internal或者你自定义的私有域名)
  • 你只需要确保VPN客户端的DNS配置是:遇到私有域名时用VPC的DNS解析,公共域名还是用原来的DNS(包括Hover的),不会有任何冲突

具体解决步骤

1. 配置OpenVPN推送VPC DNS服务器地址

你需要让OpenVPN服务器在客户端连接时,自动把VPC的DNS服务器地址推送给客户端:

  • 登录你的OpenVPN EC2实例,找到OpenVPN的配置文件(通常是/etc/openvpn/server.conf
  • 添加一行配置(把172.31.0.2替换成你VPC的DNS服务器IP,VPC的DNS服务器默认是其CIDR网段的第二个IP,比如你的VPC网段是172.31.0.0/16,那DNS就是172.31.0.2):
    push "dhcp-option DNS 172.31.0.2"
    
  • 重启OpenVPN服务生效:
    sudo systemctl restart openvpn@server
    

2. 确认VPC的私有托管区域存在

AWS默认会为每个VPC创建ec2.internal的私有托管区域,但如果被误删了,可以手动重建:

  • 登录AWS控制台,进入Route 53服务
  • 点击左侧的「托管区域」,然后点击「创建托管区域」
  • 区域类型选择「私有」,域名填ec2.internal,然后关联你的目标VPC
  • 完成后,AWS会自动同步VPC内EC2实例的私有DNS记录到这个区域

3. 测试解析

重新连接VPN后,执行以下命令测试:

nslookup ip-172-31-aa-bbb.ec2.internal

如果返回对应的私有IP,就说明解析正常了,此时再用私有DNS执行SSH命令就能成功。

内容的提问来源于stack exchange,提问作者wheresmycookie

火山引擎 最新活动