- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何在AWS上创建VPC /子网,并在同一子网中启动Windows实例和Linux实例。每当我尝试创建vpc时,即使我在路由表中授予了权限,也不会给ssh访问其他终端的权限。
最佳答案
这可能是很多事情。我可能会建议您查看安全组(从您的IP地址添加TCP / 22入站),并根据您的设置(确保已连接IGW),确保将公共IP地址分配给您的实例(添加弹性IP) (如果您的实例还没有一个)。没有有关您的环境的更多信息,我只能提供一些背景知识来帮助您进行故障排除。
VPC中实例的网络路径如下所示:
互联网-> AWS边界-> VPC边界-> VPC路由器->子网边界->弹性网络接口
AWS边界
在大多数情况下,这部分并不重要。从互联网上,最终您的流量将被路由到Amazon自治系统中。这通常是透明的。但是,如果您具有公共类型的Direct Connect,则连接的Amazon端会将您转储到此处。在此区域中,您可以访问公共API终结点,但是如果不进一步深入堆栈,就无法访问VPC中的任何内容。见下文。
VPC边界
这是流量进入/离开VPC的时间点。发生这种情况的方式有很多种。
互联网网关(IGW)
这将在亚马逊拥有的公共可路由IP地址和VPC内部私有IP地址之间执行一对一NAT(不要将其与NAT网关混淆,因为这是不同的,如下所述)。只有分配了公共IP地址的实例才能使用IGW。从实例的角度来看,它是一对一的NAT,是它的专用IP地址和Internet路由IP之间的连接。从外部开始,它是到实例的公共IP地址的连接。需要强调的是,没有分配公共IP地址(弹性IP或其他)的实例将无法通过IGW在任一方向上与Internet通信。相反,如果您没有IGW,则实例上的公共IP地址将没有任何用处。还值得一提的是,还有仅出口网关,仅允许IPv6连接用于出站启动的连接。
虚拟专用网关(VGW)
这可以看作是各种路由器。如果您有一个VPN连接到AWS的VPN服务,或者您使用的是Private Direct Connect,它将遍历该虚拟设备,该虚拟设备将与VPC关联。值得注意的是,这是一种对等并使用VPC专用IP地址进行通信。您不需要公共IP地址即可通过VGW进行对话,也无法使用VPC中实例的公共IP地址来遍历VGW。
VPC对等连接(PCX)
这与VGW非常相似。它只能连接两个VPC(使用传输网关,我想这是一个过分简化的方法),并且将它们连接在专用IP地址层上。您不能通过PCX的公共IP地址来引用资源。
VPC端点(VPC-E)
这只能在连接断开的情况下从VPC内部访问(显然是通过此连接返回流量,但是。这是到AWS Public Boundary中特定的AWS端点的连接(例如S3 API端点)。使用实例的公共IP地址。
VPC路由器
离开或进入VPC的所有流量都命中该路由器,并且路由到/从VPC边界处的所有出口/入口点到每个子网。您可以调整此路由器以控制哪些流量流向何处,并且每个子网可以具有不同的路由表。因此,“公共”子网是VPC中的一个子网,它具有IGW并具有到该IGW的默认路由(0.0.0.0/0)。专用子网没有通往IGW的路由。如果没有通往IGW的路由,则在您的实例上拥有一个公共IP地址是无用且浪费的。
如果要控制VPC内的流量并将其发送到EC2实例(Web代理/ IDS /流量捕获等),也可以路由到ENI,但是ENI必须驻留在具有不同路由的子网中表,否则它自己的出站流量将被路由回自身。退出/进入任何子网的所有流量,以及退出/进入VPC的所有流量都经过此路由器,并服从您配置的路由。您无法在子网中配置路由,发往VPC专用IP空间中某个地址的任何数据包都将自动路由到该特定子网,并且您不能使用更特定的路由来覆盖此功能。
子网边界
在子网边界,流量受网络访问控制列表(NACL)的约束。这是基于规则的无状态防火墙。默认情况下,它是完全开放的,不需要任何配置即可允许流量。没有允许“现有连接”的规则,因此,如果您开始使用NACL锁定子网,则可能需要按照期望返回流量的方向打开所有临时端口。同一子网内实例之间的任何流量都不会到达NACL。但是,任何离开或进入子网(无论是要进入同一VPC中的另一个子网还是完全离开VPC)的任何内容都将触及NACL并受其规则约束。通常不要理会这些内容,除非您需要在子网级别保护流量,否则NACL有点笨拙。
弹性网络接口(ENI)
最终,流量通过ENI,在此受安全组约束。这是一个有状态隐式拒绝防火墙,您只能为其添加允许规则。如果安全组没有允许来自实例的出站流量的规则,则该流量将永远不会离开ENI。如果安全组没有允许某种类型的入站流量的规则,则该类型的入站流量将永远不会发送到实例(即,操作系统将无法检测到它)。
NAT网关
这是可以驻留在子网中的设备。它将需要一条通往IGW的路由,并且需要一个公共IP地址(弹性IP工作)。它对VPC中的任何私有IP地址执行多对一NAT转换为可公开路由的IP(从技术上讲,它执行多对一NAT,将VPC中的许多私有IP地址转换为自己的私有IP地址,并在与IGW通信时进行一对一的NAT,以将NAT网关的私有IP地址转换为公共IP地址)。这仅适用于IPv4。而且仅当实例将其流量发送到NAT网关的ENI时,它才起作用。通常,您将NAT网关驻留在公共子网中(具有到IGW的默认路由),并且私有子网中的所有实例都具有到NAT网关ENI的默认路由。
摘要
连接到EC2实例的最低限制:
VPC附加了IGW
NACL具有双向允许流量的允许规则(默认配置)
EC2实例具有一个允许所需流量的安全组(用于SSH的TCP / 22等)
EC2实例具有与其关联的公共IP地址(必须在启动实例时配置,或者可以在以后通过附加弹性IP进行添加)。
通过此配置,您可以通过公共互联网直接连接到实例。
结构完善的VPC模式
AWS为简单的最佳实践网络建议的通用架构模式是:
连接了IGW的VPC
两个或更多公共子网(每个子网位于单独的可用区中),具有到IGW的默认路由。
每个公共子网中的NAT网关
两个或更多私有子网(每个子网与公共子网位于同一可用区中),每个子网均具有默认路由,该默认路由指向同一可用区中公共子网中的NAT网关。
一个1的自动扩展组中的堡垒主机,跨越所有允许SSH入站的公共子网(是否值得商is)
如果需要,从企业网络到VPC的VPN连接
专用实例上的安全组允许来自VPC内的特定资源的入站(在可能的情况下通过安全组ID进行引用)以及通过VPC需要的任何入站流量,以及出站到世界的出站流量TCP / 443(或更多/更少,具体取决于您的风险承受能力和需求)。
(如果需要),以及到S3的VPC端点或您希望发送大量流量的任何API端点。
这种架构允许您的私有实例连接到出站(至少使用IPv4)的公共Internet资源,并且入站流量必须通过VPN或堡垒主机。对于面向公众的服务,在公共子网中设置Elastic Load Balancer是为实例提供公共连接的理想方式,因此您可以继续在私有子网中对其进行保护。
关于linux - AWS上的Linux和Windows实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737883/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
Linux 管道可以缓冲多少数据?这是可配置的吗? 如果管道的两端在同一个进程中,但线程不同,这会有什么不同吗? 请注意:这个“同一个进程,两个线程”的问题是理论上的边栏,真正的问题是关于缓冲的。 最
我找到了here [最后一页] 一种有趣的通过 Linux 启动 Linux 的方法。不幸的是,它只是被提及,我在网上找不到任何有用的链接。那么有人听说过一种避免引导加载程序而使用 Linux 的方法
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图了解 ld-linux.so 如何在 Linux 上解析对版本化符号的引用。我有以下文件: 测试.c: void f(); int main() { f(); } a.c 和 b.c:
与 RetroPie 的工作原理类似,我可以使用 Linux 应用程序作为我的桌面环境吗?我实际上并不需要像实际桌面和安装应用程序这样的东西。我只需要一种干净简单的方法来在 RaspberryPi 上
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
有什么方法可以覆盖现有的源代码,我应该用 PyQt、PyGTK、Java 等从头开始构建吗? 最佳答案 如果您指的是软件本身而不是它所连接的存储库,那么自定义应用程序的方法就是 fork 项目。据我所
我的情况是:我在一个磁盘上安装了两个 linux。我将第一个安装在/dev/sda1 中,然后在/dev/sda2 中安装第二个然后我运行第一个系统,我写了一个脚本来在第一个系统运行时更新它。
我在 i2c-0 总线上使用地址为 0x3f 的系统监视器设备。该设备在设备树中配置有 pmbus 驱动程序。 问题是,加载 linux 内核时,这个“Sysmon”设备没有供电。因此,当我在总线 0
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正试图在 linux 模块中分配一大块内存,而 kalloc 做不到。 我知道唯一的方法是使用 alloc_bootmem(unsigned long size) 但我只能从 linux 内核而不是
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有 .sh 文件来运行应用程序。在该文件中,我想动态设置服务器名称,而不是每次都配置。 我尝试了以下方法,它在 CentOS 中运行良好。 nohup /voip/java/jdk1.8.0_71/
我是在 Linux 上开发嵌入式 C++ 程序的新手。我有我的 Debian 操作系统,我在其中开发和编译了我的 C++ 项目(一个简单的控制台进程)。 我想将我的应用程序放到另一个 Debian 操
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我使用4.19.78版本的稳定内核,我想找到带有企鹅二进制数据的C数组。系统启动时显示。我需要在哪里搜索该内容? 我在 include/linux/linux_logo.h 文件中只找到了一些 Log
我知道可以使用 gdb 的服务器模式远程调试代码,我知道可以调试针对另一种架构交叉编译的代码,但是是否可以更进一步,从远程调试 Linux 应用程序OS X 使用 gdbserver? 最佳答案 当然
是否有任何可能的方法来运行在另一个 Linux 上编译的二进制文件?我知道当然最简单的是在另一台机器上重建它,但假设我们唯一能得到的是一个二进制文件,那么这可能与否? (我知道这可能并不容易,但我只是
我是一名优秀的程序员,十分优秀!