অ্যামাজন ভিপিসিতে ব্যবহারের জন্য একটি কাস্টম NAT কীভাবে কনফিগার করবেন


15

আমার কাছে উবুন্টু বাক্স রয়েছে যা আমি NAT উদাহরণ হিসাবে ব্যবহার করতে চাই (অন্যান্য জিনিসের মধ্যে)। আমি অ্যামাজন দ্বারা সরবরাহিত NAT এএমআই ব্যবহার করা এবং তার পরিবর্তে নিজেকে নেট কনফিগার করা এড়াতে পছন্দ করব।

বর্তমানে, আমার হোস্টের একটি একক নেটওয়ার্ক ইন্টারফেস রয়েছে (যেমন http://docs.amazonwebservices.com/AmamazVPC/latest/UserGuide/VPC_NAT_Instance.html তে দেখানো হয়েছে )।

আমার উবুন্টু হোস্টটি কি আমার অ্যামাজন নেটওয়ার্কের অন্যান্য হোস্টের জন্য NAT উদাহরণ হিসাবে কনফিগার করতে সক্ষম হব?

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
       5      454 MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0  

আমি উবুন্টু হোস্টে একটি ন্যাট রুল কনফিগার করার চেষ্টা করেছি (10.200.0.51)। আমার দ্বিতীয় হোস্টটি আলাদা নেটওয়ার্কে রয়েছে (10.200.10.41/24)। সুতরাং আমি লিখেছি:

route add -net 10.200.0.0 netmask 255.255.255.0 dev eth0 # So I can reach 10.200.0.51
route add default gw 10.200.0.51

কিন্তু মেশিনটি সংযোগটি হারিয়েছে।

অ্যামাজনে NAT উদাহরণগুলির ব্যবহার এবং রাউটিংয়ের বিষয়ে আমি কী ভুল বুঝাবুঝি করছি?


একটি ছোট্ট মন্তব্য, আপনার দরকার নেই: রুট ডিফল্ট gw 10.200.0.51 অ্যাডাব্লুএস আপনার ন্যাট বাক্সের মাধ্যমে স্বয়ংক্রিয়ভাবে ট্র্যাফিক প্রেরণ করবে যদি আপনি AWS কনসোলটিতে আপনার ডিফল্ট রুটটি সঠিকভাবে কনফিগার করেন।
স্লাওমির

উত্তর:


22

লিনাক্স মেশিনে NAT কনফিগার করতে আপনি অ্যামাজনের স্ক্রিপ্টটি পরীক্ষা করতে পারেন, এটি তাদের ডিফল্ট ami-vpc-nat AMI সহ আসে, /usr/local/sbin/configure-pat.sh

দেখে মনে হচ্ছে:

#!/bin/bash
# Configure the instance to run as a Port Address Translator (PAT) to provide 
# Internet connectivity to private instances. 

function log { logger -t "vpc" -- $1; }

function die {
    [ -n "$1" ] && log "$1"
    log "Configuration of PAT failed!"
    exit 1
}

# Sanitize PATH
PATH="/usr/sbin:/sbin:/usr/bin:/bin"

log "Determining the MAC address on eth0..."
ETH0_MAC=$(cat /sys/class/net/eth0/address) ||
    die "Unable to determine MAC address on eth0."
log "Found MAC ${ETH0_MAC} for eth0."

VPC_CIDR_URI="http://169.254.169.254/latest/meta-data/network/interfaces/macs/${ETH0_MAC}/vpc-ipv4-cidr-block"
log "Metadata location for vpc ipv4 range: ${VPC_CIDR_URI}"

VPC_CIDR_RANGE=$(curl --retry 3 --silent --fail ${VPC_CIDR_URI})
if [ $? -ne 0 ]; then
   log "Unable to retrive VPC CIDR range from meta-data, using 0.0.0.0/0 instead. PAT may be insecure!"
   VPC_CIDR_RANGE="0.0.0.0/0"
else
   log "Retrieved VPC CIDR range ${VPC_CIDR_RANGE} from meta-data."
fi

log "Enabling PAT..."
sysctl -q -w net.ipv4.ip_forward=1 net.ipv4.conf.eth0.send_redirects=0 && (
   iptables -t nat -C POSTROUTING -o eth0 -s ${VPC_CIDR_RANGE} -j MASQUERADE 2> /dev/null ||
   iptables -t nat -A POSTROUTING -o eth0 -s ${VPC_CIDR_RANGE} -j MASQUERADE ) ||
       die

sysctl net.ipv4.ip_forward net.ipv4.conf.eth0.send_redirects | log
iptables -n -t nat -L POSTROUTING | log

log "Configuration of PAT complete."
exit 0

ভুলবেন না /etc/rc.d/rc.local থেকেও বুট এটি চালানোর জন্য
টিম সিলভেস্টার

18

আমি একটি অ্যামাজন NAT এএমআই ইনস্টল করেছি এবং সম্পর্কিত কনফিগারেশনটি পরীক্ষা করেছি:

[মূল @ আইপি-10-200-0-172 এ্যাক 2-ব্যবহারকারী] # আইপিটিবেল -L -n -v -x -t নাট
চেইন অগ্রণীকরণ (নীতিমালা 11 প্যাকেট, 660 বাইট গ্রহণ করুন)
    pkts বাইটস টার্গেট প্রট অপ্ট আউট উত্স গন্তব্য         

চেইন ইনপুট (নীতিমালা 11 টি প্যাকেট, 660 বাইট গ্রহণ)
    pkts বাইটস টার্গেট প্রট অপ্ট আউট উত্স গন্তব্য         

চেইন আউটপুট (নীতিমালা দুদক 357 প্যাকেট, 24057 বাইট)
    pkts বাইটস টার্গেট প্রট অপ্ট আউট উত্স গন্তব্য         

চেইন পোস্ট্রোটিং (নীতি স্বীকার 0 প্যাকেট, 0 বাইট)
    pkts বাইটস টার্গেট প্রট অপ্ট আউট উত্স গন্তব্য         
     357 24057 ম্যাসওয়ার্ড সব - * eth0 10.200.0.0/16 0.0.0.0/0

[মূল @ আইপি-10-200-0-172 এ্যাক 2-ব্যবহারকারী] # বিড়াল / প্রোক / সিএস / নেট / আইপিভি 4 / আইপি_ফরোয়ার্ড 
1

এছাড়াও, মেশিনটির একটি সর্বজনীন আইপি থাকা দরকার, এবং সোর্স / ডাস্ট চেকটি অক্ষম করা দরকার।

এই মেশিনটি তখন NAT উদাহরণ হিসাবে ব্যবহার করা যেতে পারে।

অন্যান্য হোস্টের জন্য রাউটিং ইসি 2 স্তরে কনফিগার করা হয় ("রাউটিং টেবিল" বৈশিষ্ট্যটি ব্যবহার করে)।


1
হ্যাঁ, উত্স / গন্তব্য চেকটি হ'ল জিনিসটি আমাকে ছড়িয়ে দিয়েছে যখন আমাকে এই কাজটি করতে হয়েছিল।
সাইরেক্স

কেউ কি NAT লগিং করছে? আমি ভাবছি যে পোস্টারউটিংয়ের মতো শুরুতে আমার লগিং স্টেটমেন্টটি সন্নিবেশ করতে সক্ষম হওয়া উচিত: iptables -t nat -I POSTROUTING -j LOG --log-স্তর 4 এটি কাজ করে মনে হচ্ছে, কারও কাছে আরও ভাল পরামর্শ আছে?
জর্ফাস

3

এমন কয়েকটি নির্দেশনা রয়েছে যা আমাকে সাহায্য করেছিল।

মন্তব্য:

  • 10.0.0.23 - উদাহরণস্বরূপ ব্যক্তিগত আইপি, আমি "নাট-উদাহরণ" হিসাবে তৈরি করার সিদ্ধান্ত নিয়েছি, এই উদাহরণটি ইআইপি দিয়ে।
  • 10.0.0.0/24 - ভিপিসি সাবনেট

"নাট-ইনস্ট্যান্স" এ, মূল ব্যবহারকারী হিসাবে:

sysctl -q -w net.ipv4.ip_forward=1 net.ipv4.conf.eth0.send_redirects=0
iptables -t nat -C POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE 2> /dev/null || iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE

এর পরে:

[sysctl file]
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.send_redirects = 0

[iptables]
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.0.0.0/24          0.0.0.0/0 

এডাব্লুএস কনসোলের মাধ্যমে:

Grant all traffic from 10.0.0.0/24 (into security groups)
Set disabled source/dest. check (right click on "nat" instance)

EIP ছাড়া অন্য পরিস্থিতিতে:

sudo route add default gw 10.0.0.23

ইউপিডি : আমি খুঁজে পেয়েছি, আমার ভিপিসিতে প্রতিটি নতুন উদাহরণ ডিফল্ট জিডব্লু পিং করার পরে সঠিকভাবে ইন্টারনেট সনাক্ত করেছে।

তাই:

[ec2-user@ip-10-0-0-6 ~]$ ping google.com
PING google.com (173.194.33.71) 56(84) bytes of data.
^C
--- google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2356ms

[ec2-user@ip-10-0-0-6 ~]$ ping 10.0.0.23
PING 10.0.0.230 (10.0.0.23) 56(84) bytes of data.
64 bytes from 10.0.0.23: icmp_seq=1 ttl=64 time=1.22 ms
64 bytes from 10.0.0.23: icmp_seq=2 ttl=64 time=0.539 ms
64 bytes from 10.0.0.23: icmp_seq=3 ttl=64 time=0.539 ms
^C
--- 10.0.0.23 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2500ms
rtt min/avg/max/mdev = 0.539/0.768/1.228/0.326 ms
[ec2-user@ip-10-0-0-6 ~]$ ping google.com
PING google.com (173.194.33.70) 56(84) bytes of data.
64 bytes from sea09s15-in-f6.1e100.net (173.194.33.70): icmp_seq=1 ttl=55 time=13.5 ms
64 bytes from sea09s15-in-f6.1e100.net (173.194.33.70): icmp_seq=2 ttl=55 time=14.2 ms

আমি জানি, এটি কোনও সমস্যা নয় তবে এটি কিছুটা সময় বাঁচাতে পারে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.