RDS DNS lookup error - mysql

Does anyone know how to turn off DNS lookup on an AWS RDS server, MySQL? Keep getting the same error, and its giving me 504 errors.
2014-07-31 12:39:44 14174 [Warning] IP address '222.127.85.158' could not be resolved: Name or service not known
Regards,
Bob

You can turn it off in your my.cnf file.
See this post: https://www.percona.com/blog/2008/05/31/dns-achilles-heel-mysql-installation/

I don't think you can. It's better to use hostnames in the long run anyways. Can't think of many reasons why you'd only want to use IP.

While you should be able to access your RDS instance via its IP, you shouldn't do it.
Amazon does not guarantee that the IP will always be the same.
Amazon's failover (multi AZ) switches the IP address behind the DNS entry. So can't use the IP address with a failover setup

Related

Amazon EC2 and RDS accross AWS Accounts [duplicate]

From EC2 instance i-78a8df00, I'm trying to connect to RDS instance mysql.************.us-east-1.rds.amazonaws.com. They are both in the U.S. East region. I added the security group of EC2 instance (sg-********) to the RDS security group, but that didn't help. It appears to be a firewall/DNS issue as it is timing out when running this command:
ubuntu#ip-10-195-189-237:~$ mysql -h mysql.************.us-east-1.rds.amazonaws.com
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql.************.us-east-1.rds.amazonaws.com' (110)
I can connect to RDS instance fine from my local machine using the same line as above. I tried various forum solutions but those don't help.
I had similar problem, when I spun a new EC2 instance, but didn't change setting in RDS security group of inbound IP address allowed to connect to port 3306 of my RDS instance.
The confusing bit was an option in RDS dashboard, called Security Groups. You don't need it to solve the problem.
What you really need is:
Go to list of RDS instances
Click on the instance you are trying to connect
Click Security group rules section
This should open a new browser tab or window with details of security group.
Locate several tabs in bottom part, select Inbound rules tab and click Edit button.
Change value to the IP address of your EC2 instance or IPv4 CIDR blocks, e.g.
174.33.0.0/16
To get this value, you can either ssh into your instance and run ip addr or run EC2 Manager in browser and locate value of Private IPs in your instance details.
Additional information for people who might run into similar issues trying to connect to RDS or RedShift:
1) Check security groups
Verify the security group for the RDS instance allows access from the security group your source server belongs to (or its IP added directly if external to AWS). The security group you should be looking at is the one specified in the RDS instance attributes from the RDS console UI (named "security group").
NOTE: Database security groups might be different from AWS EC2 security groups. If your RDS instance is in classic/public EC2, you should check in the "database security group" section of the RDS UI. For VPC users, the security group will be an normal VPC security group (the name sg-xxx will be listed in the RDS instance's attributes).
2) Confirm DNS isn't an issue.
Amazon uses split DNS, so a DNS lookup external to AWS will return the public IP while a lookup internal to AWS will return a private IP. If you suspect it is a DNS issue, have you confirmed different IPs are returned from different availability zones? If different AZs get different IPs, you will need to contact AWS support.
3) Confirm network connectivity by establishing a socket connection.
Tools like tracepath and traceroute likely won't help since RDS currently drops ICMP traffic.
Test port connectivity by trying to establish a socket connection to the RDS instance on port 3306 (mysql, or 5432 for postgres). Start by finding the IP of the RDS instance and using either telnet or nc:
telnet x.x.x.x 3306
nc -vz x.x.x.x 3306
a) If your connection attempt isn't successful and immediately fails, the port is likely blocked or the remote host isn't running a service on that port. you may need to engage AWS support to troubleshoot further. If connecting from outside of AWS, try to connect from another instance inside AWS first (as your firewall might be blocking those connections).
b) If your connection isn't successful and you get a timeout, packets are probably being dropped/ignored by a firewall or packets are returning on a different network path. You can confirm this by running netstat -an | grep SYN (from a different CLI window/session while running and waiting for the telnet/nc command to timeout). Connections in the SYN state mean that you've sent a connection request, but haven't received anything back (SYN_ACK or reject/block). Usually this means a firewall or security group is ignoring or dropping packets.
Check to make sure you're not using iptables or a NAT gateway between your host and the RDS instance. If you're in a VPC, also make sure you allow egress/outbound traffic from the source host.
c) If your socket connection test was successful, but you can't connect with a mysql client (CLI, workbench, app, etc.), take a look at the output of netstat to see what state the connection is in (replace x.x.x.x with the actual IP address of the RDS instance):
netstat -an | grep x.x.x.x
If you were getting a connection established when using telnet or NC, but you see the 'SYN' state when using a mysql client, you might be running into an MTU issue.
RDS, at the time this is written, may not support ICMP packets used for PMTUD (https://en.wikipedia.org/wiki/Path_MTU_Discovery#Problems_with_PMTUD). This can be a problem if you're trying to access RDS or RedShift that's in a VPC from a classic ec2 instance via ClassicLink. Try lowering the MTU with the following, then testing again:
sudo ip link show
# take note of the current MTU (likely 1500 or 9001)
sudo ip link set dev eth0 mtu 1400
If the lower MTU worked, be sure to follow up with AWS customer support for help and mention that you are seeing an MTU issue while trying to connect to your RDS instance. This can happen if TCP packets are wrapped with encapsulation for tunneling, resulting in a lower usable MTU for packet data / payload. Lowering the MTU on the source server allows the wrapped packets to still fit under the limit.
If it didn't work, set your MTU back to it's default and engage AWS support for further troubleshooting.
While Mark's problem seemed to have something to do with multi-AZ routing & EC2 classic, I ran into this exact same problem today.
To fix it, I modified the Security Group that was created automatically with my RDS instance by adding the two private IP addresses from my EC2 instance.
This was a fairly obvious problem, but I'm new to AWS in general, so hopefully this is useful for others like myself.
Apparently, multi-AZ screws everything up. Since the default multi-AZ config placed my database in region us-east-1d, and my EC2 instance was in region us-east-1a, the DNS was not routing correctly. I re-created the RDS instance as non-multi-AZ, and made it live in us-east-1a, and all is happy.
If there are any super geniuses out there in regards to DNS routing on AWS with RDS, ELB, and multi-AZ capabilities, it would be pretty awesome to know how to do this, since this isn't documented anywhere in Amazon Web Service's documentation.
After struggling for 3 days I finally found why mine was not connecting ...
Add outbound rule on your EC2 instance for port 3306 and inbound rules on your RDS server on port 3306. The inbound value should be the security of the EC2 instance
Example:
Your EC2 security group is - sg.ec2
And RDS security group is - sg.rds
So go to edit outbound rules of sg.ec2 and add Custom TCP at port 3306 and destination to 0.0.0.0/0
Then, go to edit inbound rule of sg.rds and add an inbound rule at port 3306 and source as sg.ec2
I had the similar problem today when my EC2 instance suddenly lost access to RDS instance and Wordpress stopped working. The security groups were correct and I could even connect to MySQL from console on EC2 instance but not from PHP. For some reason restarting EC2 server helped me.
Looks like sometime between the last posting and this posting, Amazon fixed the DNS routing issue, because everything works fine now for multi-AZ rds...
Solution: I had to adjust the inbound rule of the RDS instance's security group to allow connections from the IP address of my EC2 instance.
Longer explanation: When creating an AWS RDS instance I selected the option to be able to connect to it via public IP address. In doing so I ASSUMED that I would then be able to connect to it from ANY IP Address, but that was not the case. Rather, when the instance got created/configured, it took the public IP address of my laptop and set the inbound rule of the RDS security group to only accept connections from that IP address. So I had to manually add a rule to allow incoming MYSQL/Aurora connections from IP address of the EC2 instance.
I ran into the same issue, I was not able to connect from EC2 instance to the RDS both resources in the same VPC and multi AZ setup.
The multi-AZ setup was not a problem for me.
I was missing only the OUTBOUND rule 3306 from my EC2 instance Security group, to my RDS Security group.
According to the Amazon doc, we should use:
PROMPT> mysql -h <endpoint> -P 3306 -u <mymasteruser> -p
where endpoint and mymasteruser(username) are from your RDS instance.
I solved that problem using IP public adress directly(of the endpoint) instead of the endpoint(****.us-east-1.rds.amazonaws.com).You can get the ip public address using "ping" command(ping ****.us-east-1.rds.amazonaws.com)

Connecting MySQLWorkbench to Amazon Web Services EC2 Instances

I have no idea how to connect mySQL to amazon EC2 Instance. Here is the screenshot of mySQL workbench: mySQL. I try to change the HostName to the Public IP being provided by the instance, however when i press test connection, it keep promoting this error: Error Message. So what should i do as of now? Thanks!!
Since I cannot put a comment, pardon me for putting this to the
Answers Section
Error 10060 is a generic error that means your client cannot reach the server.
Try pinging your server IP, if it responds, it is online.
Are you sure that the port that EC2 uses is also 3306? Configure your EC2 Instance to allow remote connections. Check the EC2 Security features, something might be blocking you.
AFAIK, the root user is only limited to localhost. So it won't work if you use it remotely. Create a new user with the privileges that you only need, then use the '%' wildcard which means any host.
And finally, you may want to try this: Step by Step instructions
In your EC2 instance you will have a Security Group Column.
Click on that will open the security group page
In the bottom of the page you have a tab called Inbound
Click Edit and then Add Rule to allow port 3306.
In source select anywhere option.

Error connecting to my AWS RDS in Singapore (Asia Pacific Region

I keep running into this error while connecting to my newly built RDS MySQL instance
ERROR 2003 (HY000): Can't connect to MySQL server on
'****.ap-southeast-1.rds.amazonaws.com' (60)
I wouldn't say I am an expert, as I have several EC2 instances running and able to connect.
And I have all the security groups created and necessary permissions for inbound added accordingly. But i just quite connect to the RDS instance.
1. I have re-recreated with guide from AWS document, created new VPC group and dedicated DB security group.
2. Gone through most of the responses from similar questions, and applied the suggested resolutions (which is adding own public IP in the inbound rules) etc..
Any help?
1)
Make sure that the server is running
telnet ****.ap-southeast-1.rds.amazonaws.com 3306
2) Make sure that the server is not bind to specific address.
bind-address = 127.0.0.1
3) Make sure that the IP address that you have added to security group is correct. Don't forget the /32 for a single ip. You can get IP address from
/sbin/ifconfig
4) Make sure that there are no firewalls on outbound traffic on the host from which you are trying to connect
Does your RDS configured as publicly accessible? If not, you can only connect it within your VPC.
Thanks everybody. I was able to resolve the problem. The supported platform uses the EC2,VPC, so my AWS account is in the current region that does not use a default VPC. I dumped everything out, created VPC using wizard, then the security group. Then re-created the DB instance, assigned it the new VPC i re-created. Thanks for your efforts.

ATTACK ON AWS RDS MySQL .static.midphase.com resembles IPv4-address itself

I'm running EC2 with MySQL RDS to serve dynamic websites' content.
The server was down due to 'too many connection' error on RDS database.
As it was urgent, I restart database server straight away and the problem gone.
However, I'm unable to see what queries produce those connection (as I didn't run SHOW PROCESS LISTS before reboot RDS).
CloudWatch show 250+ connections during period of issue which is obviously huge distinction from normal operating on other days.
I try to address the issue by see log in RDS, but there is quite a minimal message there.
The error message
2014-05-03 06:10:08 3628 [Warning] IP address '173.244.206.19' has been resolved to the host name '173.244.206.19.static.midphase.com', which resembles IPv4-address itself.
From above, 173.244.206.19 is not in our IP list both public and private. (but connection open to 0.0.0.0 secured with password which I'm going to limit IP remote in security group soon)
Questions
Is 173.244.206.19.static.midphase.com is something to do with RDS by default. I think this is obviously an attack sign but just would like to confirm.
What does 'resembles IPv4-address itself' mean? As this is RDS database server only, why server does need to resolve DNS?
Are there any way to digging into this for further detail (e.g. to see specific query).
I'm going to prevent this by only limit the IP access along with CloudWatch alarm setting for 10+ connections. Anything else I should do.
Thank you for reading through this guys. I'm the only developer in company start-up which take care for all front-end/backend/application/network. Therefore, apology if there are dummy questions out here.
However, your help would be really appreciated and will save a bit of my life writing the report.
You are maybe the target of a DDOS attack or a brute-force password discovery attempt.
I would report this to AWS support - as they can help to mitigate the effect of the attack.
As a best practice, we do not recommend to use 0.0.0.0/0 as source IP address for incoming connection rule in Security Group.
Try to restrict which IP addresses are authorised to connect to your database.
If you are accessing from on prem network, specify only your on-prem address range.
If you're accessing your database from an app server installed on EC2, use the ID of the App Server Security Group (sg-xxxx) as source authorised to connect to your database.

Unable to connect to Amazon web service mysql instance

I went through these instructions:
http://docs.amazonwebservices.com/AmazonRDS/latest/GettingStartedGuide/
But still can't connect to the database using mysql from the command line.
I even tried:
telnet xxxxxxx.clpkcufglfdn.us-east-1.rds.amazonaws.com 3306
but that doesn't connect either.
I did set up the DB security group using the CIDR suggested by the console (I hope it give me the right value).
Update: Firewalls are disabled on my end. It would be odd if amazon had firewalls on their end and wouldn't mention it in their documentation.
Update2: I'm behind a wireless router which had assigned my machine the IP of 10.0.0.2 so I tried adding that to the security groups but still can't connect.
Update: Firewalls are disabled on my end. It would be odd if amazon had firewalls on their end and wouldn't mention it in their documentation.
Amazon's security groups are a firewall.
I did set up the DB security group using the CIDR suggested by the console (I hope it give me the right value).
If it's not the IP you're connecting from, it's not the right value.
Sounds like you have a firewall that is dropping your connection. Either it is on your end or Amazon's end; probably need to talk to your IT group and if that isn't the issue then Amazon's group to see if you missed a step.
If you are trying to access a RDS instance from within the same AWS datacenter you need to specify a local internal IP address (i.e. 10.x.x.x) and not the public dns/ip as your connection simply doesn't go out of the lan
You can find the local IP address of your EC2 box by typing: ifconfig OR checking your login name (i.e. ubuntu#10.x.x.x)
I didn't find this anywhere and wasted a lot of time. I hope this helps!