AWS - 使用 EIP 访问私有子网中的实例

2024-04-23

我想使用 EIP 访问我的私有子网中的一些实例。有办法吗?我知道这没有多大意义,但让我详细解释一下。

我有一个带有 2 个子网的 VPC。

  1. 192.168.0.0/24(公共子网)已附加 EIP

  2. 192.168.1.0/24(私有子网)

它们之间有一个 NAT 实例,以允许私有实例对互联网进行出站访问。正如所提到的,一切正常here http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html.

但现在,我暂时需要使用 EIP 直接从互联网寻址私有子网上的实例。是否可以通过单独为该特定实例设置新的路由表来实现这一点?或者其他什么? 以下是限制:

  1. 私有子网上的任何实例都不能出现任何停机时间

  2. 因此,不言而喻,我无法创建新的子网并将这些实例移至那里。

它应该像 -> Attach 一样简单。使用 。消除。 我现在唯一的其他方法是在 iptables 上从公共子网上的实例(具有 EIP)到私有子网上的任何实例进行某种端口转发......但这看起来很混乱。

还有其他方法吗?


当然,私有子网中的内容位于私有子网中,因为它不应该从 Internet 访问。 :)

但是......我相信你有你的理由,所以这里是:

首先,不,您不能以简单的附加 → 使用 → 删除的方式执行此操作,因为每个子网都有一个默认路由,并且要么指向igw对象(公有子网)或 NAT 实例(私有子网)。如果您将弹性 IP 绑定到私有子网中的计算机,则入站流量将到达该实例,但出站回复流量将通过 NAT 实例路由回,这将丢弃或破坏它,因为您无法通过 NAT 进行非对称路由,这就是这里会发生的情况。

如果您的服务是 TCP 服务(http、远程桌面、yadda yadda),那么这里有一个短期黑客技术,它可以很好地工作,避免 iptables 的麻烦,并且只公开您需要的特定服务:

在公共子网中使用 ubuntu 12.04 LTS 启动一个新的微型实例,并使用 EIP 和适当的安全组来允许入站 Internet 流量到达所需端口。允许您自己 ssh 访问新实例。允许从该机器访问内部机器。然后:

$ sudo apt-get update
$ sudo apt-get upgrade 
$ sudo apt-get install redir

假设您要将传入端口 80 流量发送到私有实例上的端口 80:

$ sudo redir --lport=80 --cport=80 --caddr=[private instance ip] --syslog &

完毕。您将在系统日志中记录每次连接和断开连接的端口号和传输的字节数。缺点是,如果您的私有主机正在查看连接计算机的 IP,它将始终看到私有网络实例的内部 IP。

如果您绑定到低于 1024 的端口,则只需使用 sudo 运行它,因为只有 root 可以绑定到较低的端口号。要阻止它,找到 pid 并杀死它,或者sudo killall redir.

潇洒的小redir实用程序在用户空间发挥其魔力,使其比 iptables 更简单(恕我直言)。它在指定的端口上设置一个监听套接字--lport港口。对于每个入站连接,它会分叉自身,建立到--caddr on --cport并将两个数据流连接在一起。它不知道流内部发生了什么,所以它应该适用于任何 TCP。这也意味着尽管使用 Micro,您应该能够传递相当多的流量。

完成后,扔掉微实例,您的网络就会恢复正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS - 使用 EIP 访问私有子网中的实例 的相关文章

  • AWS CLI S3API 查找路径中的最新文件夹

    我有一个非常大的桶 数十万个对象 我有一条路径 假设 s3 myBucket path1 path2 path2 获取也是文件夹的上传内容 因此 示例可能如下所示 s3 myBucket path1 path2 v6 1 0 s3 myBu
  • 将文件从 CodeCommit 部署到 S3

    我想将推送到 CodeCommit 存储库中的某些文件部署到 S3 存储桶中 我正在尝试使用存储库上的 Lambda 触发器来执行此操作 但是 我无法获取提交中更改的文件列表 也无法使用 AWS CodeCommit API 从 CodeC
  • 基于 SQS 队列大小的自动缩放

    我已将这些命令组合在一起 以根据 SQS 队列大小自动缩放 EC2 实例 我已运行所有命令 我的队列有 10 条消息 但尚未启动单个实例 我想弄清楚我的 cloudwatch 警报正在侦听哪个 SQS 队列 此外 我们还感谢任何有助于识别问
  • Cloudwatch 仪表板:具有独立时间范围的小部件?

    我希望仪表板中的每个小部件都有自己的时间范围 我找不到办法做到这一点 如果不可能的话 我会发现它令人难以置信 我希望我的仪表板包含以下内容堆积区域小部件 过去一小时内 30 秒周期的请求计数 即 120 个绘图点 过去一天以 1 小时为周期
  • 无法使用 python 在 aws cdk 中编写策略文档

    您好 我正在开发 AWS CDK 我正在努力制定政策 下面是我的代码 MWSECSServiceRole iam Role self MWSECSServiceRole assumed by iam ServicePrincipal ecs
  • 创建 CloudFront Distribution 时出现 Crypp CloudFormation 失败

    我设置了一个 CloudFormation 模板来跟踪 CloudFront 分发等 设置完毕后 我创建了一个AWS CertificateManager Certificate and an AWS CloudFront Distribu
  • 从 Flask 中的 S3 返回 PDF

    我正在尝试在 Flask 应用程序的浏览器中返回 PDF 我使用 AWS S3 来存储文件 并使用 boto3 作为与 S3 交互的 SDK 到目前为止我的代码是 s3 boto3 resource s3 aws access key id
  • 在 aws-cdk 上的 aws-rds 上,使数据库可公开访问的设置在哪里?

    使用 AWS RDS 控制台和 CLI API 都有一个开关可以使数据库可公开访问 但我找不到使用提供的构造使用新的 aws cdk 来实现此目的的方法 Cloud Formation 类 例如 CfnDBInstance 中有一个布尔值
  • AWS Textract InvalidParameterException

    我有一个 Net core 客户端应用程序 根据 AWS 文档 使用带有 S3 SNS 和 SQS 的 amazon Textract 检测和分析多页文档中的文本 https docs aws amazon com texttract la
  • Elastic Beanstalk、Bundler 找不到 gem“bundler”的兼容版本

    我已经尝试过将 Elastic Beanstalk 用于 Rails 当我运行 eb deploy 时出现此错误 我需要至少安装bundler 1 8 4 知道如何解决这个问题吗 Bundler could not find compati
  • 如何运行指定 node.js 版本 8 的 eb init?

    I run eb init并部署 我得到了node js版本6 如何在执行时指定我想要node js版本8eb init命令 这是一个有趣的问题 我很想知道是否有更简单的方法 但我是这样实现的 确定最新的SolutionStack名称如所列
  • 亚马逊 AWS CloudFront 声称不存在这样的存储桶

    我正在尝试设置 CloudFront 来提供图像 但当前无法访问它并返回错误 指定的存储桶不存在
  • Beanstalk 部署忽略 .ebextensions 中的 nginx 配置文件

    我在单实例 Elastic Beanstalk 环境中托管 Java Web 应用程序 并添加了几个 ebextension 文件 这些文件在每次部署时成功为我创建配置文件 然而 我无法找到一种方法让 Beanstalk 在 etc ngi
  • 在 RedShift 中声明变量

    SQL Server能够声明一个变量 然后在查询中调用该变量 如下所示 DECLARE StartDate date SET StartDate 2015 01 01 SELECT FROM Orders WHERE OrderDate g
  • 从本地计算机连接到 AWS 上的 Neptune

    我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB 就像从办公室连接到 RDS 一样 是否可以从本地计算机连接 Neptune 数据库 Neptune 数据库是否公开可用 开发人员有什么方法可以从办公室连接 Nep
  • 如何在 PuTTY 中保存并运行 Java 文件?

    我是 AWS 亚马逊网络服务 的新手 所以这可能是一个基本问题 我在 AWS 上创建了一个 EC2 实例 我有一台 Windows 计算机 因此我使用 PUTTY 来连接 Linux 实例 连接到我的 EC2 实例后 我使用以下命令编写 J
  • 如何使用 AWS Glue 开始处理从 Web 服务终端节点提取的数据?

    更多源数据来自我需要定期轮询的 Web 服务端点 获得数据后 我可以使用 pyspark 执行传统的 ETL 并最终将数据写入 S3 和 Redshift 我不确定如何进行初始提取 甚至不确定我应该在 AWS Glue 文档中查找什么内容
  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • AWS Amazon - 登录循环卡住

    我已经使用 AWS 亚马逊几年了 但是 突然当我登录时 我进入了此验证部分 他们将验证码发送到我的电子邮件 我收到了该代码 因此 我输入收到的代码 最终返回登录页面 所以我登录后 同样的事情一遍又一遍地发生 我无法进入我的仪表板 它只是不断
  • 如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?

    我正在尝试使用调用我的 Lambda 函数sam local invoke但发现无法连接到我的主机MySQL 我尝试添加 docker network host但也无法连接 Traceback most recent call last F

随机推荐

  • Python如何将输入字符串的结果相乘[重复]

    这个问题在这里已经有答案了 我是一名正在尝试学习 Python 的编程初学者 我正在尝试完成以下练习 编写一个程序来提示用户输入小时数和每小时费率 计算总工资 这是我想出的 hours input Enter number of hours
  • Cosmos DB 中的向后分页

    我正在尝试在我的 Vue 前端上使用 c 和 cosmos 实现一个简单的分页系统 但我不确定当用户想要返回时实现分页的最佳方法 为了前进 我使用延续令牌 所以 Cosmos 知道我已经到了哪里 但我不太确定向后工作的最佳方法 或者如果用户
  • yii2 作曲家更新致命错误

    当我更新我的作曲家以添加yii2 solr扩展我的项目时 我遇到如下错误 The yiisoft yii2 composer plugin requires composer plugin api 1 0 0 this WILL break
  • 如何配置两个 JSON 序列化器并根据路由选择正确的一个

    我有一个使用 Net Framework 4 7 的 ASP NET Core Web API 项目 我正在升级到 Net Core 3 1 我升级的原因之一是使用新的 System Text Json 序列化程序 目前 我有一些基于路线的
  • Grails 2.4.3:使用 REST 服务

    如何在 Grails 2 4 3 中使用 RESTful Web 服务 我还需要使用基本身份验证 你可能认为这个问题已经有了一个很好的答案 但我真的很难找到一个 许多答案都向我指出了 Grails Rest 插件的方向 我已经尝试过但无法为
  • 指示 getUserMedia 使用最佳可用相机分辨率

    我正在使用 getUserMedia 函数从网络摄像头录制视频 一切工作正常 除了当我刚刚指定 video true 约束时它仅以 640x480 分辨率录制 如果我设置如下约束 我现在可以在笔记本电脑上获得更好的录音质量 var medi
  • Spring MVC 如何处理多用户

    我使用 Spring 已有 6 个多月了 我无法理解与以下场景相关的底层机制 我有一个 Spring Web 应用程序 现在我在控制器中自动连接了模型 根据 url 匹配 它调用相应的方法 我所有的方法都是单例的 现在 当两个用户同时打开应
  • ActionBarSherlock:getSupportMenuInflator() 未定义

    我在用着动作栏夏洛克并尝试使用以下方法来扩充我的 XML 菜单getSupportMenuInflator 但它给出了一个错误 the method getSupportMenuInflator is undefined for the t
  • 如何创建对象并将其添加到向量中?

    我有一个 C 向量 我希望向量能够容纳可变数量的对象 Visual Studio 2012 给我一个错误 Error type name is not allowed 从这段 C 代码中可以看出 include
  • zend框架FlashMessenger问题

    我正在使用 FlashMessenger 助手来设置消息 但无法使用 getMessages 方法检索消息 它返回 null 这是我的示例代码
  • 从mapbox api获取建筑信息

    有没有办法从 Mapbox API 获取建筑信息 几何形状 高度等 我从这个例子开始 https www mapbox com mapbox gl js example 3d buildings https www mapbox com m
  • 没有历史记录的 Git 存储库

    是否可以拥有一个没有历史记录的 Git 存储库 例如 我工作的地方有一个本地 Git 存储库 我想将最新版本推送到生产服务器 生产服务器上不应存储任何历史记录 我怎样才能做到这一点 你可以看看命令是否git archive http git
  • Jenkins MultiJob - 发送包含内部作业数据的结果电子邮件

    我有一个包含 3 个内部作业的多作业项目 需要按以下顺序执行 Master MultiJob Project Job Phase 1 gt JOB A Phase 2 gt JOB B Phase 2 gt JOB C 当作业 C 结束时
  • Symfony2 覆盖 User.orm.xml

    我需要覆盖这个 Symfony vendor friendsofsymfony user bundle FOS UserBundle Resources config doctrine model User orm xml 文件
  • 更改响应背景颜色的文本颜色

    考虑这个例子 codepen https codepen io anon pen EdwKZb infobox width 110mm height 65mm background image url https i pinimg com
  • 如何在 React 的 recompose 生命周期方法中 setState?

    我在我的 React 项目中使用 recomposehttps github com acdlite recompose https github com acdlite recompose 这是一个很棒的图书馆 我正在使用compose实
  • 使用 XSD.exe 从多个 XSD 架构生成 C# 类

    我有 2 个 XSD 文件 假设一个 XSD 文件 ABC xsd 包含属于 XML 一部分的元素 另一个 XSD 文件假设 XYZ xsd 包含这些元素的定义 现在 在 ABC XSD 保存元素 模式标记以及其他命名空间中 我们也提到了模
  • Laravel 5:违反完整性约束:1062 - 多对多

    我需要以下方面的一些建议 我有两次迁移 就像这样 Schema create plates function Blueprint table table gt increments id table gt integer serial nu
  • 按日期比较对象(实现 Comparator)

    我有一个 java People 对象 public class People String lastname String firstname String gender String datebirth String fcolor pu
  • AWS - 使用 EIP 访问私有子网中的实例

    我想使用 EIP 访问我的私有子网中的一些实例 有办法吗 我知道这没有多大意义 但让我详细解释一下 我有一个带有 2 个子网的 VPC 192 168 0 0 24 公共子网 已附加 EIP 192 168 1 0 24 私有子网 它们之间