Not able to access AWS EC2 instance when connected to VPN - amazon-web-services

I have set up an AWS EC2 server, and installed cassandra on it. I am successfully able to connect to cassandra and use it through my local machine using the public IP of my ec2 instance.
Now, I need to be connected to a VPN to continue with my work. But, after connecting to the VPN, I am not able to ssh into the ec2 server or access the installed cassandra.
My security group allows all traffic (IPv4 and IPv6).
I'm new to this, so any help would be appreciated. Thanks!

Related

How to connect my developer machine with Amazon Memory DB Cluster

Memory DB Cluster configured, connected with an EC2 instance within same VPC. but cannot telnet Memory DB Cluster even when connected via vpn where as from EC2 instance, telnet and redis-cli both works.
Configured VPN via OpenVPN and connected. I can access EC2 instance [telnet etc] via private IP when connected with VPN, but could not connect with Memory DB cluster. need to connect my developer machine to be connected with DB Cluster to proceed.
tried to find any private IP of cluster or something by which i can connect but couldn't.
Instead of VPN it would be easy to do ssh tunnelling to do port forwarding for development purposes . Create a bastion host and ssh tunnel and forward the Memory db port. you can follow the instructions which were done for RDS port forward https://aws.amazon.com/premiumsupport/knowledge-center/rds-connect-using-bastion-host-linux/

How to access AWS EC2 instance from web browser on Linux machine?

When I try to connect to my EC2 instance using web browser (Mozilla Firefox) using the third option in the connect (EC2 Instance Connect (browser-based SSH connection) ), I get the following error in the new pop-up window:
There was a problem setting up the instance connection
Log in failed. If this instance has just started up, try again in a minute or two.
Some things to check:
Make sure the instance was launched from Amazon Linux 2 or Ubuntu 16.04 or later
Check that the instance is in a public subnet (defined as having a Route Table that points to an Internet Gateway)
Open the Security Group for SSH (port 22) either for the whole Internet (0.0.0.0/0) (which is a very poor choice for security) or from the IP address ranges for EC2 Instance Connect (See: AWS IP Address Ranges - AWS General Reference)
EC2 Instance Connect in your browser establishes a web connection to the AWS service. Then, the SSH connection is established from the AWS Service to the Amazon EC2 instance. This is why the security group needs to allow incoming connections from the IP address range associated with the EC2 Instance Connect Service (not your own IP address).
Alternative ways to connect are:
Run an SSH client on your computer, or
Use AWS Systems Manager Session Manager (which connects via an Agent running on the computer, so it's not 'real' SSH)

Unable to ping Private IP of DMS Replication Instance from on-premises over Site-to-Site VPN & DMS source DB endpoint test connection fails

What am I trying to do?
I want to migrate and automatically replicate data from SQL Server in my on-premises Windows Server to DB in AWS Cloud. I am using AWS DMS (Database Migration Service) for this.
What have I done/tried already?
I have set up a site-to-site VPN (between on-premises network and AWS VPC)
I am able to ping EC2 instance in VPN from Windows Server on-premises
I am able to ping Windows Server on-premises from EC2 instance in VPN
I have created a DMS Replication Instance. Its Private IP is within the allowed VPC CIDR of the VPN connection set already
I am able to ping the Private IP of DMS Replication Instance from EC2 instance
However, I am NOT able to ping the Private IP of DMS Replication Instance from Windows Server on-premises
I have set-up a DB Server in my on-premises Windows Server. I added this DB as a DMS source endpoint. When I tried to test the connection, it failed with the following error message:
I have linked a Security Group to the DMS Replication Instance. This is the same Security Group I used in the VPN connection set up
My DMS source DB endpoint configuration is as follows:
What do I want to know?
Why am I not able to ping the private IP of DMS Replication Instance while I am able to ping an EC2 instance by setting up VPN
Why the DMS endpoint test connection is failing?
Could you help me in doing this DB migration please?
Probably the following debugging method would help you.
As you have mentioned that you are able to ping the EC2 instance private IP from your on-premise network, it was clear that Site-Site VPN is successful.
You did not mention that you created the DMS instance in the same subnet as the other windows instance which you are able to ping from your on-premise network. If you are created DMS in a different subnet please make sure the route table associated with that subnet has route propagation enabled . Then please check in the security groups that in the inbound rules you are allowing the port numbers and IP addresses. This way we can make sure all the things are setup proper in AWS.
From your on-premise sites please make a telnet test with the following command.
Windows/Linux:
Open command prompt in windows or terminal in linux and try
telnet <<DMS IP>> <<Port Number>>
If it is successful connected then you have connectivity between on-premise to DMS host.
If it is not successfully connected or timed out then you need to contact your on-premise network manager or who is in-charge and tell them that you have an issue connecting with AWS Subnet x.x.x.x/x CIDR from on-premise network

How to connect to on-premise VPN from EC2?

I would like to run my Node application from EC2. But my application's database is in Client's location and I usually connect through Cisco AnyConnect VPN application.
I tried installing openconnect in the EC2, the moment I connect to the VPN, the instance goes out of my control. I understood this, because I no longer have control on the EC2 instance, since it's in the Client's VPN network. So I rebooted the EC2 to get back the access.
So how can I connect my Client's VPN from EC2 ?
Note: I cannot install or ask my client to configure anything on their end for this, they just provided their VPN connection details.
Create a Gateway in AWS. You can build an IPsec tunnel from AWS to a client's firewall using a site-to-site VPN.

PgAdmin access to AWS Postgres instance in private subnet

I'm trying to create a realistic network setup for a multi-tiered web application. I've created a new VPC within AWS with 1 x public subnet & 2 x private subnet. I then created a Postgres instance within the private subnet and set it to not publicly accessible. This adds an extra layer of security around the database, but how do I then access the database from my local IP?
I created a security group & assigned my IP to the inbound rules & assigned that to the DB instance during creation:
But I still have no way of connecting to it? Do I need to create a VPN and connect to my VPC via the VPN and then connect to the DB instance? Within the proposed architecture, how do you connect to the DB?
What I'm trying to achieve is an architecture which will allow me to create Lambda functions which communicate with the DB via the API Gateway and serve data to a web frontend. So I want the DB protected via the private subnet. But I also want to be able to connect directly to the DB from my local laptop.
At the moment - the RDS instance is running in the VPC, but I don't know how to connect to it. DoI need to set up an Internet Gateway / VPN / EC2 instance and jump to the DB?
You have implemented excellent security by placing the Amazon RDS database into a private subnet. This means it is not accessible from the Internet, which blocks off the majority of potential security threats.
However, it also means that you cannot connect to it from the Internet.
The most common method to achieve your goals is to launch an Amazon EC2 instance in the public subnet and use it as a Bastion or Jump Box:
You SSH into the Bastion
The Bastion can then connect you to other resources within the VPC
Since you merely wish to connect to a database (as opposed to logging into another server), the best method is to use SSH with port forwarding.
In Windows, this can be done using your SSH client -- for example, if you are using PuTTY, you can configure Tunnelling. See: How to Configure an SSH Tunnel on PuTTY
For Mac/Linux, use this command:
ssh -i YOUR-KEYPAIR.pem -L 5555:RDS-ENDPOINT:5432 ec2-user#YOUR-BASTION-SERVER
You then point the SQL client on your laptop to: localhost:5555
The 5555 can be any number you wish. It is merely the "local port" on your own computer that will be used to forward traffic to the remote computer.
The RDS-ENDPOINT is the Endpoint of your RDS database as supplied in the RDS console. It will be similar to: db.cnrffgvaxtw8.us-west-2.rds.amazonaws.com
BASTION-SERVER is the IP address or DNS name of the Jump Box you will use to connect
Then, any traffic sent to localhost:5555 from your SQL client will be automatically sent over the SSH connection to the Bastion/Jump Box, which will then forward it to port 5432 on the RDS database. The traffic will be encrypted across the SSH connection, and establishment of the connection requires an SSH keypair.
I referred a lot of articles and videos to find this answer.
yes, you can connect to rds instances in private subnets
we have two ways to connect
With server: By using ec2 in the public subnet and using it as a bastion host. we can connect to pg admin by ssh tunneling
Serverless: By using client VPN endpoint. create a client VPN endpoint and associate the subnets and allow the internet to the private subnets. and then download the configuration file and install open VPN GUI and import the configuration file and add the keys and then connect the open VPN. Now try to connect to pgadmin, it will connect.
for steps: https://docs.google.com/document/d/1rSpA_kCGtwXOTIP2wwHSELf7j9KbXyQ3pVFveNBihv4/edit )