【问题标题】:AWS - Accessing instances in private subnet using EIPAWS - 使用 EIP 访问私有子网中的实例
【发布时间】:2013-06-20 07:46:29
【问题描述】:

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

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

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

2) 192.168.1.0/24(私有子网)

在它们之间有一个 NAT 实例,以允许私有实例出站访问互联网。一切正常,如此处所述:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

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

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

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

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

还有其他方法吗?

【问题讨论】:

    标签: amazon-web-services subnet amazon-vpc


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        根据需要停止和启动。

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2018-05-02
            • 2021-01-20
            • 1970-01-01
            • 2023-03-21
            • 1970-01-01
            • 1970-01-01
            • 2015-01-15
            • 2019-04-29
            • 1970-01-01
            相关资源
            最近更新 更多