当然,私有子网中的内容位于私有子网中,因为它不应该从 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,您应该能够传递相当多的流量。
完成后,扔掉微实例,您的网络就会恢复正常。