Saturday, March 9, 2013

AWS VPC port forwarding techniques

Port forwarding using 'iptables' is extremely useful for ad-hoc interactions with your instances located on the private subnet on the VPC in situations when you do not wish to re-design your network architecture. 
As you must already know the instances on private subnet are not able to interact with the external world unless configured to use a NAT instance (located on the public subnet) as their GW.

So, for the example, let's say I want to forward any requests coming from the outside world to port 8080 via my NAT instance Elastic IP (which is an external, routable IP address) to an instance located on my private subnet - Puppet Master server, so:
  • My NAT instance external IP address (Elastic IP) is:123.123.123.123
  • My NAT instance internal IP address is:10.0.0.254
  • My Puppet  Master internal IP address is:10.0.1.239

First, on the NAT instance make sure IP forwarding is enabled:
[root@ip-10-0-0-254 ~]#cat /proc/sys/net/ipv4/ip_forward
1
[root@ip-10-0-0-254 ~]#
We are good to go....
Next, we will instruct to redirect any requests coming to port 8080 to IP 10.0.1.239 port 8080: 
 
[root@ip-10-0-0-254 ~]# iptables -t nat -i eth0 -I PREROUTING -p tcp --dport 8080 -j DNAT --to 10.0.1.239:8080

Note, that in some cases you will want to limit this function only for incoming traffic, since the above example will forward any requests (even from inside the VPC) destined for port 8080, the best solution is to specify the destination IP address of the NAT instance -

[root@ip-10-0-0-254 ~]# iptables -t nat -d 10.0.0.254 -I PREROUTING -p tcp --dport 8080-j DNAT --to 10.0.1.239:8080

Pay attention that I've specified the NAT internal IP address. The reason for that is because the destination IP of the packet is in fact NAT instance internal IP - that's because Amazon EC2 already use NAT when correlating between elastic IP's and instance internal IP addresses.

Verify the command worked with:

[root@ip-10-0-0-254 ~]#iptables -L -t nat -v


Save your iptables configuration:
[root@ip-10-0-0-254 ~]#iptables-save > fw_conf_`date +%F`
[root@ip-10-0-0-254 ~]#/etc/init.d/iptables save

Make sure the security group your NAT instance is currently using allows relevant incoming traffic.

Finally, test the connection from outside of the VPC (make sure traffic is not blocked by any security group):

>telnet 123.123.123.123 8080

Your request now should be be redirected to the back-end node on private subnet on the VPC.

Cheers.

32 comments:

Ed said...

typo: itpables -L -t nat -v => iptables -L -t nat -v

Unknown said...

There are lots of information about latest technology and how to get trained in them, like this have spread around the web, but this is a unique one according to me. The strategy you have updated here will make me to get trained in future technologies. By the way you are running a great blog. Thanks for sharing this.

AWS Training in Chennai

SEO Training in Chennai

Unknown said...

Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging…
AWS Online Course Hyderabad

saranyaregan said...

Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.

rpa training in bangalore
best rpa training in bangalore
RPA training in bangalore
rpa courses in bangalore

Azure DevOps said...

I liked your blog.Thanks for your interest in sharing your ideas.keep doing more.
AWS Online Training

rohini said...

Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
AWS Training in Bangalore

anirudh said...

i just go through your article it’s very interesting time just pass away by reading your article looking for more updates. Thank you for sharing. Best DevOps Training Institute

Priyanka said...

Attend The Python training in bangalore From ExcelR. Practical Python training in bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Python training in bangalore.
python training in bangalore

Training for IT and Software Courses said...

I gathered a lot of information through this article.Every example is easy to undestandable and explaining the logic easily.ibm training in bangalore

Training for IT and Software Courses said...

These provided information was really so nice,thanks for giving that post and the more skills to develop after refer that post.mobile applications training in bangalore

Tripu Design said...

Thank you for sharing your wonderful information. for professional graphics,
work contacts me. I am afreelance designer in gurgaon.
graphic designer in gurgaon
freelance graphic designer in gurgaon
freelance graphic designer in gurgaon
freelance graphic designer in gurgaon
freelance logo designer in gurgaon
freelance logo designer in gurgaon
freelance web designer in gurgaon
freelance website designer in gurgaon
freelance designer in gurgaon
freelance website designer in gurgaon
freelance web designer in gurgaon
freelance graphic designer services in gurgaon
freelancer graphic designer services in gurgaon
freelancer graphic designer services in gurgaon
freelancer graphic services in gurgaon
freelancer logo services in gurgaon
freelancer logo services in gurgaon
freelancer web designer services in gurgaon
freelancer web designer services in gurgaon
freelance web designer services in gurgaon
freelance website designer services in gurgaon
freelance website designer services in gurgaon
freelance logo designer service in gurgaon
freelance logo designer service in gurgaon
logo designer in gurgaon
brochure design in gurgaon
logo design in gurgaon
freelance logo design in gurgaon
freelance logo designer in gurgaon
freelance logo designer in gurgaon

Jenifer said...

Great learning experience with proficient trainers in Informatica. Flexible timings with hands on experience with real time scenarios.

microsoft training in bangalore

microsoft training institutes in bangalore

microsoft course content

microsoft training centres in bangalore

microsoft course syllabus

microsoft training

Data Science Course said...

Hello, I have browsed most of your posts. This post is probably where I got the most useful information for my research. Thanks for posting, we can see more on this. Are you aware of any other websites on this subject.

Data Science Course

Data Science Training said...

I am impressed by the information that you have on this blog. It shows how well you understand this subject.

Data Science Training

shankarjaya said...

thanks for sharing it is very useful and valuable articles .like this post more update for us
Salesforce Training in Chennai

Salesforce Online Training in Chennai

Salesforce Training in Bangalore

Salesforce Training in Hyderabad

Salesforce training in ameerpet

Salesforce Training in Pune

Salesforce Online Training

Salesforce Training

EXCELR said...

Great Article. Thank you for sharing! Really an awesome post data science course in Hyderabad

Best Training Institute said...

Nice to read your article. This has really made good thing.
Oracle Applications training in bangalore

Realtime Experts said...

I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously
in their life, he/she can earn his living by doing blogging.Thank you for this articl
I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously
in their life, he/she can earn his living by doing blogging.Thank you for this articl

Data Science Institute Bangalore said...

I am a new user of this site, so here I saw several articles and posts published on this site, I am more interested in some of them, hope you will provide more information on these topics in your next articles.
Data Science Institute in Bangalore

360DigiTMG said...

This Blog is very useful and informative.
data science malaysia

Sunil said...

Nice Post,
LearnDigital marketing video course at Digital Brolly

Best Data Science Courses in Bangalore said...

I recently came across your article and read it. I want to express my admiration for your writing skills and your ability to get readers to read from start to finish. I would love to read more recent articles and share my thoughts with you.

Best Data Science Courses in Bangalore

Maneesha said...

Appreciating the time and energy you put into your blog and detailed information you provide. It’s nice to come across a blog every once in a while that isn’t the same outdated rehashed information. Excellent read! I’ve saved your site and I’m adding your RSS feeds to my Google account.
data scientist training and placement in hyderabad

traininginstitute said...

Well we really like to visit this site, many useful information we can get here.
data scientist course in malaysia

traininginstitute said...

I really thank you for the valuable info on this great subject and look forward to more great posts
data scientist course in malaysia

Maneesha said...

Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people..
data science training in hyderabad

Katty Bothra said...

Steps in program development is the practice of building and developing a program. It typically consists of six to eight steps majorly including Planning, Requirements, Design, Build, Document, Test, Deploy, and Maintain.

traininginstitute said...

Your work is very good and I appreciate you and hopping for some more informative posts.
data scientist course

manasha said...

Great post. keep sharing such a worthy information.
Blue Prism Training in Chennai
Blue Prism Online Training

Unknown said...

Some really useful slides here.
SEO Firm Chicago
Digital Evrima

deekshitha said...

360DigiTMG provides exceptional training in the Data Science course with placements. Learn the strategies and techniques from the best industry experts and kick start your career.
data analytics course in jalandhar

Anonymous said...

It is different from the data insight aspect. Algorithms are used to develop data, whereas the executives make better decisions about the product using data insight.

data science course in lucknow