CIDR overlap between AWS VPC and on-prem network - amazon-web-services

I need to connect an AWS VPC with an on-prem network. Due to a limited CIDR range, I need to choose between Transit Gateway and my preferred account/VPC architecture. Looking for advice.
I'm designing an AWS environment to run some apps for a Big Company.
Big Company has a big on-prem network -- so big (or so badly partitioned) that they can only spare a /25 CIDR range (128 addresses)
My apps need to send/receive data to/from systems on the on-prem network.
They typically use Transit Gateway to connect between on-prem and AWS VPCs.
For management/maintainability/sanity reasons, I would like to separate the dev, staging and prod versions of my app into separate accounts (or at least VPCs). There are a lot of different AWS components involved in each environment.
Questions:
If the CIDRs provided are too small for my environments, is it possible to use some kind of NAT setup?
I understand this is not possible with Transit Gateway. What might we use instead?
Is it worth complicating the network setup to achieve dev/stage/prod separation?

Related

How do I give access to all VPCs via a single VPN on AWS?

The way my set-up works is that I have a 'development', 'staging' and 'production' environment all sitting in separate VPCs and I want to create a client VPN endpoint to allow engineers access to the internals of all these environments (the database mostly).
However, I can't decide how to approach this issue, my first idea was to create a single VPC which peers into all the other VPCs. This would make building the resource in terraform easier as the VPN can be completely separated out.
My other option would be to just have the VPN connection to the development VPC for example and then from there the development VPC peers into the production & staging VPCs however I really don't like this approach
As Steve mentioned from the comment, if you want to centralize your networking setup, for example:
A single or multi AWS VPN S2S with many VPCs
A single or multi DX connection with many VPCs
A single AWS Client VPN to many VPCs
and more
The answer is AWS Transit Gateway. This service also helps you if you have your VPCs placing under different AWS accounts.
For your use-case, AWS has published a blog post with detailed architecture with use-cases for your reference.
https://aws.amazon.com/blogs/networking-and-content-delivery/using-aws-client-vpn-to-scale-your-work-from-home-capacity/

Bastion Server for all AWS instances

i have more than 30 production Windows severs in all AWS regions. I would like to connect all servers from one base bastion host. can any one please let me know which one is good choice? How can i setup one bastion host to communicate all servers which is different regions and different VPC's? Kindly anyone give advice for this?
First of all, I would question what are you trying to achieve with a single bastion design? For example, if all you want is to execute automation commands or patches it would be significantly more efficient (and cheaper) to use AWS System Manager Run Commands or AWS System Manager Patch Manager respectively. With AWS System Manager you are getting a managed service that offers advance management capabilities with highest security principles built-in. Additionally, with SSM almost all access permissions could be regulated via IAM permission policies.
Still, if you need to set-up bastion host for some other purpose not supported by SSM, the answer includes several steps that you need to do.
Firstly, since you are dealing with multiple VPCs (across regions), one way to connect them all and access them from you bastion's VPC would be to set-up a Inter-Region Transit Gateway. However, among other, you would need to make sure that your VPC (and Subnet) CIDR ranges are not overlapping. Otherwise, it will be impossible to properly arrange routing tables.
Secondly, you need to arrange that access from your bastion is allowed in the inbound connections of your target's security group. Since, you are dealing with peered VPCs you will need to properly allow your inbound access based on CIDR ranges.
Finally, you need to decide how you will secure access to your Windows Bastion host. Like with almost all use-cases relying on Amazon EC2 instances, I would stress to keep all the instances in private subnets. From private subnets you can always reach the internet via NAT Gateways (or NAT Instances) and stay protected from unauthorized external access attempts. Therefore, if your Bastion is in private subnet you could use the capability of SSM to establish a port-forwarding session to your local machine. In this way, you enable yourself the connection while even your bastion is secured in private subnet.
Overall, this answer to your question involves a lot of complexity and components that will definitely incur charges to your AWS account. So, it would be wise to consider what practical problem are you trying to solve (not shared in the question)? Afterwards, you could evaluate if there is an applicable managed service like SSM that is already provided by AWS. In the end, from a security perspective, granting access to all instances from a single bastion might not be best practice. If you consider scenarios in which you bastion is compromised for whatever reason, you basically compromised all of your instances across all of the regions.
Hope it gives you slightly better understanding of your potential solution.

On-Premises equivalent of VPC

A lot of examples for AWS and I'm confident others, use the AWS concept of a VPC in part to give some degree of security. The idea being that it can be set up to only allow traffic from certain ports and even certain IP addresses. What it does however give, is a zone of defined traffic.
What did people do for on premise installations before the cloud? Somewhere someone is probably even doing something still on their own computer network.
An Amazon VPC is a virtualized network.
Traditional physical networks consist of routers, switches and firewalls.
Even physical networks use virtualized networks, providing "VLANS" such as Production, Testing and Development virtual networks all across the same physical network.
An Amazon VPC maps very closely to "real-world" networks, except that they are easier to configure and don't require any cabling. VPC maintains the concepts of public and private subnets, route tables and inter-network connections.
Once capability of an Amazon VPC that does not exist in physical networks is the concept of a Security Group, which is a firewall for each individual resources. Traditional networks use firewall devices to restrict traffic travelling between subnets (similar to VPC NACLs), but Security Groups add firewall function at the resource-level, such as on an Amazon EC2 instance or Amazon RDS database. This adds considerably more security capabilities that available in normal network.
Amazon VPCs can also be deployed via API calls or AWS CloudFormation templates, allowing a whole network to be deployed from a script. This is similar to what can be accomplished with VMware virtual networks.

Why can't we implement multiple network interface in a single VPC network on GCP? Where as it is possible in AWS and Azure

Why can't we implement multiple network interface on a single VPC (Which has multiple subnets) in GCP? Where as it is possible in AWS and Azure.
I came across with a problem where I had to implement multiple network interface in GCP. But in my case, all the subnets was present in the single VPC network, I read GCP documentation and got to know that, in GCP it is not possible to have multiple network interface in a single VPC network, in order to implement multiple network interface, all the subnets must be in a different VPC network, where as its completely opposite in AWS and Azure.
In AWS - all network interface must be available in the same VPC, and cannot at network interface from other VPC network.
In Azure vNet - all network interface must be available in the same VPC, and cannot at network interface from other vNet.
Of course, VPC in google cloud is little different from AWS, as an example, Azure vNet and AWS VPC's are regional in nature where as in GCP it is global in nature. And there are several other difference as well.
Was just curious to know about this limitation in GCP which I got.
Your assumption is wrong. You cannot attach more than one network interface to the same subnet, but you can to different subnets in the same VPC.

How can I reduce latency between my AWS EC2 instance and another AWS customer's REST API

I have a need to reduce the latency for my application to reach a vendor's API. Currently my EC2 instance resides in the same region and availability zone as the vendor and I am using EC2 instances with the best network performance.
Is there anything else within my control that I can do to reduce the latency between my application and the vendor's API?
If I had the vendor's cooperation, could anything be done to further reduce the latency?
Ways to reduce latency:
Connect to resources in the same region: You are doing this
Connect to resources in the same Availability Zone: While you say that you are doing this, it might not be so simple. Each AWS account has a random naming of AZs, so you might not actually be in the same AZ.
Connect via VPC Peering: This bypasses the Internet Gateway and the mapping of Public IP addresses. The vendor would need to invite you to join and you would accept the peering request (or vice versa).
Or, the new modern option:
Connect via AWS PrivateLink, which exposes an Elastic Network Interface (ENI) within your VPC that directly connects to a Network Load Balancer in the vendor's VPC.
Any further optimization would require more information about the work being performed and the current architecture. For example, a queue might be more efficient than sending direct messages, or perhaps the use of streaming data might be more appropriate, depending upon the type of data being sent. (Feel free to Edit your question with more details if you want a more accurate answer.)