13

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

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

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

2)192.168.1.0/24(私有子网)

这些之间有一个 NAT 实例,以允许私有实例具有对 Internet 的出站访问权限。一切正常,如此处所述:http: //docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

但是现在,暂时我需要使用 EIP 直接从 Internet 对私有子网上的实例进行寻址。这是否可以通过单独为该特定实例设置新的路由表来实现?还是别的什么?以下是限制:

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

2)因此不用说,我不能创建一个新的子网并将这些实例移到那里。

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

还有其他方法吗?

4

4 回答 4

22

当然,私有子网中的东西在私有子网中,因为它不应该可以从 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它在指定端口上设置一个监听套接字。对于每个入站连接,它会自行分叉,建立到--caddron的出站连接--cport并将两个数据流联系在一起。它不知道流内部发生了什么,因此它应该适用于几乎任何 TCP。这也意味着您应该能够通过相当多的流量,尽管使用 Micro。

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

于 2013-06-21T00:19:34.690 回答
3

根据您的要求,您最终可以将静态路由直接连接到 igw。

例如,如果您知道 Internet 上您希望允许流量的来源,您可以将路由 xxxx/32 -> igw 放入您的私有路由表中。因为您的实例附加了一个 EIP,它将能够到达 igw,并且到该目的地的流量将到达它应该到达的地方,而不是 NAT。

我已经多次使用这个技巧进行短期访问。显然,这是一个短期的解决方法,不适合 prod 环境,并且只有在您知道您的互联网流量来自哪里时才有效。

于 2015-12-14T22:41:40.073 回答
2

我建议你设置一个VPN服务器。此脚本无需做太多工作即可创建 VPN 服务器:https ://github.com/viljoviitanen/setup-simple-openvpn

只需根据需要停止和启动。

于 2013-10-02T11:18:53.933 回答
0

1-使用从临时 EC2 实例到 NAT 私有子网的 redir 实用程序。对于此选项,请认为这是最不具侵入性的。可以通过创建系统服务使其持久化,因此在重新启动的情况下将再次创建套接字。2-静态路由表,这需要 AWS VPC 的中高级知识,并且根据情况,您可能需要处理 AWS Route 53 3-VPN:这可能意味着处理 Amazon IGW 以及一些额外的步骤。

对我来说最好的解决方案是 1 plus 不同的端口映射,在 AWS 53 中创建 DNS 记录,安全组限制。要求是相反的:让某些用户每天访问的连接保持不变,并且在某些时候能够停止 EC2 实例。

于 2018-11-23T06:39:39.920 回答