DNS resolution in aws from EC2 - amazon-web-services

If spinned up an EC2 instance in a vpc, I removed all outbound rules for security group of EC2, when I ping any public domain like google.com, Facebook.Com from server, still its getting the ip address of domain(similarly pinging Google.com {ipaddress} with 32 bytes of data). From where does instance gets ip address of domain and on which port? even though I blocked all outbound rules of security group?

AWS security groups and network ACLs don't filter traffic to or from:
AWS reserved IPv4 addresses (these are the first four IPv4 addresses of the subnet, including the Amazon DNS server address for the VPC)
link-local addresses (169.254.0.0/16)
The Amazon-supplied VPC DNS server is at the VPC subnet CIDR base +2 address (e.g. 10.0.0.2 if your VPC subnet CIDR is 10.0.0.0).
See Internetwork traffic privacy in Amazon VPC.

Related

AWS unknown IP address

The IP address 10.20.1.1 came up during our security scan and I was wondering which resource this IP belongs to. I searched through the EC2 instances and wasn't able to find this IP, it looks like a network interface IP or something like this so was wondering if someone could please point me to the right direction so I can find the resource and match it to that IP.
From Subnets for your VPC - Amazon Virtual Private Cloud:
The first four IP addresses and the last IP address in each subnet CIDR block are not available for your use, and they cannot be assigned to a resource, such as an EC2 instance. For example, in a subnet with CIDR block 10.0.0.0/24, the following five IP addresses are reserved:
10.0.0.0: Network address.
10.0.0.1: Reserved by AWS for the VPC router.
10.0.0.2: Reserved by AWS. The IP address of the DNS server is the base of the VPC network range plus two. For VPCs with multiple CIDR blocks, the IP address of the DNS server is located in the primary CIDR. We also reserve the base of each subnet range plus two for all CIDR blocks in the VPC. For more information, see Amazon DNS server.
10.0.0.3: Reserved by AWS for future use.
10.0.0.255: Network broadcast address. We do not support broadcast in a VPC, therefore we reserve this address.
Since you have a subnet of 10.20.1.0/24, the address of 10.20.1.1 is Reserved by AWS for the VPC router.
AWS is responsible for routing traffic within a VPC according to the DHCP option sets in Amazon VPC. When a new instance launches and uses DHCP to obtain an IP address in the subnet, it is provided with the address of the router. Some network settings (such as DNS server) can be set, but AWS retains control of the router.
Your network scan detected the IP address associated with this router.

I cannot connect by ipv6 from aws ec2 after all the essential steps (I learned from the internet)

After referencing many of the websites teaching me how to use ipv6 from AWS EC2 instances, I find it not working. Why?
From AWS EC2 Console,
it seems that my only instance has its ipv6 address.
And I've opened the ICMP IPV6, together with other necessary ipv6 ports, with source identified both 0.0.0.0/0, ::/0.
I've configured the VPC and subnet associated with that instance so they have ipv6 CIDR, and will automatically dispatch ipv6 addresses.
I've also configured that the router associated with the subnet, to have both 0.0.0.0/0, ::/0 paired with igw-xxx (Internet gateway? I guess)
After all these operations, I still can't find any correct records when in shell, typing
ip -6 addr which I believe there should be some v6 address not starting with fe80:, but actually not.
Is there anything else I should do?
Egress Only Internet Gateway(EOIG) is needed to access IPv6 websites from the EC2 instances in private subnet.
In addition, NAT Gateway(NATG) is needed to access IPv4 websites from the EC2 instances in private subnet.
EOIG (Only IPv6 outgoing traffic)
NATG (Only IPv4 outgoing traffic)
You can find EOIG on the left pane which NAT Gateway also is. Then, make one EOIG then set it to the route table associated with private subnet.

In AWS, does the whole VPC get a single DNS server or does each subnet in VPC gets a DNS server?

This question is in the context of Private DNS hostnames.
In AWS, for each subnet in a VPC, the IP address of the DNS server is the base of the VPC network range plus two - Curious to understand
If it is a single DNS server for the entire VPC with interfaces in each subnet or
There are separate instances of DNS servers for each subnet
If there are separate instances of DNS servers for each subnet, how does the Private DNS name of an EC2 instance in a different subnet (within same VPC) gets resolved?
There is only one DNS server per VPC, and its private IP address is the base of the VPC network range plus two. [ref]

How do I get AWS Client VPN to resolve DNS using VPC-peered Private Hosted Zone

I have a VPC in my AWS account peered to a VPC of a partners account. The partner account has Route 53 resolvers to resolve DNS within domain.com to IPs in their peered VPC.
I've associated my VPC with their private hosted zone.
Within my VPC (for example SSH into an EC2 instance), the DNS resolution for foo.bar.domain.com works great - I'm resolving & connecting to the resources in their VPC as expected.
However, when I'm running and AWS client VPN on my personal machine, I'm unable to resolve the foo.bar.domain.com to the same private IP address through the VPN. So, for example, running a development server on my machine connected to the partner VPC URLs is failing.
I've tried hosting a DNS server in the VPC with a zone forwarding rule pointing to the Route 53 IPs.
I've tried setting the VPN DNS server IP to the Route 53 IPs.
But none of that has worked. Help would be appreciated?
The answer was simpler than I thought: I just had to set the DNS server in the AWS Client VPN Endpoint settings to be the private IP address of my VPC's DNS (which is always the VPC's CIDR +2).
From the AWS docs:
If you're unsure about which IP address to specify for the DNS servers, specify the VPC DNS resolver at the .2 IP address in your VPC.
Client VPN Endpoints > Modify Client VPN Endpoint > Other optional parameters -> Enable DNS Servers -> IP Address

IPV4 traffic not working with AWS egress only internet gateway

I have assigned an egress only internet gateway to my private subnet. Now I can connect with IPV6 websites but not with IPV4 addresses.
Do I need NAT gateways to access IPV4 address from my EC2 machine? (Only outgoing traffic)
You need either a NAT Gateway, or simply an Internet Gateway. But if you are only interested in outgoing, then a NAT Gateway is the way to go.
Egress only internet gateways are for IPv6 only. As mentioned in the documentation for them.
Yes, you need a NAT Gateway to access IPv4 websites from your EC2 instance in private subnet.
To make the instance in private subnet to access both IPv4 and IPv6 websites, we need:
NAT Gateway (Only IPv4 outgoing traffic)
Egress Only Internet Gateway (Only IPv6 outgoing traffic)
Don't forget to assign an IPv6 address to the instance in private subnet otherwise the instance cannot access IPv6 websites.
*A public IPv4 address is not needed for the instance in private subnet. We can access IPv4 websites without it.
Moreover, with the commands below, we can check if the connections to IPv4 and IPv6 websites are available from the instance in private subnet.
For IPv4 websites:
ping -4 google.com
For IPv6 websites:
ping -6 google.com